Attribute VB_Name = "Ajouter_Si_Nouveau_v102" '---------------------------------------------------------------------------------------- ' Procédure_____: Ajouter_Si_Nouveau ' Date__________: 14/01/2022 ' Auteur________: www.CapLSS.com - https://www.caplss.com/viewtopic.php?t=269 ' Objet_________: Ajouter un nouvel élément inconnu dans un Tableau ' Référence_____: Fonction de conversion ' Appel_________: x_Nombre = Ajouter_Si_Nouveau(x_LaValeur, x_LeTableau, opt. x_Vide) ' Retour________: Retourne 1 si ajout réalisé, 0 sinon ' Options_______: Si x_Vide := true, considère un champ vide comme valeur possible ' 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, ajoute un élément non-vide à un tableau ' 2022.01.07 v1.01 DEV Accepte une chaine vide comme un élément officiel ' 2022.01.14 v1.02 DEV Accepte un tableau vide (sans dimension) en entrée ' Option Explicit Function Ajouter_Si_Nouveau(x_LaValeur As Variant, x_LeTableau As Variant, Optional x_Vide As Boolean) As Variant ' Si Nouveau ? Dim i As Variant Dim A_Ignorer As Boolean A_Ignorer = False Dim TabNonVide As Boolean TabNonVide = False On Error Resume Next TabNonVide = (UBound(x_LeTableau) >= 0) On Error GoTo 0 If (x_LaValeur = "" And x_Vide) Or x_LaValeur <> "" Then ' Nouvelle Donnée ou Champ vide à ajouter If TabNonVide Then For i = LBound(x_LeTableau) To UBound(x_LeTableau) ' Recherche si existe déjà If x_LeTableau(i) = x_LaValeur Then ' Pas d'ajout dans ce cas A_Ignorer = True Exit For End If Next i End If Else ' Vide à ne pas Ajouter A_Ignorer = True End If ' Ajout If Not A_Ignorer Then If TabNonVide Then ' Ajoute un emplacement ReDim Preserve x_LeTableau(UBound(x_LeTableau) + 1) Else ' Initialise le tableau ReDim Preserve x_LeTableau(0) End If ' Affecte la valeur x_LeTableau(UBound(x_LeTableau)) = x_LaValeur Ajouter_Si_Nouveau = 1 Else Ajouter_Si_Nouveau = 0 End If End Function