Attribute VB_Name = "Imploser_v110" '---------------------------------------------------------------------------------------- ' Procédure_____: Imploser ' Date__________: 07/01/2022 ' Auteur________: www.CapLSS.com - https://www.caplss.com/viewtopic.php?t=268 ' Objet_________: Convertir un tableau en une chaine avec séparateur ' Référence_____: Fonction de conversion ' Appel_________: x_LaChaine = Imploser(x_LeSep, x_LeTableau, opt. x_NonVide) ' Retour________: Chaine contenant tous les éléments séparés ' Options_______: Si x_NonVide := true, ignore les champs vides ' Compatibilité_: (2003-2019)Office (11.0-16.0)Excel (+)32-bit (+)64-bit ' Statut________: (x)Validé ()En attente validation ()En cours développement '---------------------------------------------------------------------------------------- ' 2013.02.16 v1.00 DEV Création initiale, conversion d'un Tableau en Chaine de Caractères ' 2021.03.19 v1.01 BUG ByRef par défaut en VBA6 peut planter dans le transfert de variables ' FIX Force l'utilisation de ByVal pour tous les champs (VBA6+) ' DEV Amélioration de la robustesse aux erreurs de paramètres transmis ' 2022.01.07 v1.10 DEV Possibilité d'ignorer une chaine vide ' Option Explicit Function Imploser(ByVal x_LeSep As String, ByVal x_LeTableau As Variant, Optional ByVal x_NonVide As Boolean) As String Dim i As Variant Imploser = "" If IsArray(x_LeTableau) Then For i = LBound(x_LeTableau) To UBound(x_LeTableau) If Not x_NonVide Then ' Ajoute tout (par défaut) Imploser = Imploser & x_LeTableau(i) & x_LeSep Else ' Ajoute seulement les non-vides If x_LeTableau(i) <> "" Then ' Ajout Imploser = Imploser & x_LeTableau(i) & x_LeSep Else ' Vide à ignorer End If End If Next i ' Supprime le séparateur final If Len(Imploser) >= Len(x_LeSep) Then Imploser = Left(Imploser, Len(Imploser) - Len(x_LeSep)) End If End If End Function