Eviter doublons dans Combobox

Bonjour, J'aimerai créer une combobox allant chercher les infos dans une colonne d'un autre fichier en évitant les doublons.

Je me suis inspirée de code déjà présent sur le forum, mais j’obtiens quand même l'intégralité des valeurs présentes dans la colonne ...

Voici mon code :

Private Sub CheckBox3_Click()

Workbooks.Open Filename:=ThisWorkbook.Path & "\Loc externe\Gestion loc materiel externe 21_LSA.xlsx"
Set CS = Workbooks("Gestion loc materiel externe 21_LSA.xlsx")
Set OS = CS.Worksheets("IJINUS")
Dim Doublon As Boolean
Dim i As Range
Dim c As Double

    For Each i In Range("B3:B" & Range("B3").End(xlDown).Row) 'Pour chaque élément de ma colonne

        If i.Value <> "" Then 'si ma cellule est non vide

            If ComboBox3.ListCount > 0 Then 'si ma combobox contient déjà un élément
                Doublon = False
                For c = 0 To ComboBox3.ListCount - 1
                    If Val(ComboBox3.List(c)) = i.Value Then
                        Doublon = True
                    End If        
                Next
            Else 'Si ma combobox ne contient pas d'élément
                Doublon = False
            End If

            If Doublon = False Then ComboBox3.AddItem i.Value 'on ajoute l'élément si un doublon n'est pas déjà présent

        End If

    Next i

End Sub

Voici un fichier avec la structure du fichier contenant les données à aller chercher.

Si quelqu'un à la solution je suis preneuse.

Si je ne suis pas claire n'hésitez pas a me demander des précisions ! :)

Merci d'avance, et bonne journée !

Bonjour

J'aimerai créer une combobox allant chercher les infos dans une colonne d'un autre fichier en évitant les doublons.

Votre fichier ne contient pas de macros et la combobox à compléter se trouve où ?

Les données colonne B, depuis quelle feuille ?

Cordialement

La macro est dans le fichier suivant dans la feuille "historique des réservations"

Ok.

Ce sont les bons de livraison dont vous voulez éviter les doublons ? Donc la combobox3 dans l'userform 1 ?

Autre chose si vous cliquez sur la case à cocher 4 Hydreka, vous voulez avoir la même chose dans votre combobox3 mais depuis la feuille Hydreka ?

Oui voilà c'est exactement ca. Parce que dans le fichier d'origine il est possible d'avoir 20 lignes avec le même BL.

Oui effectivement c'est le but. mais je n'ai pas encore écrit cette partie

Dans votre feuille IJNIUS vous avez deux tableaux en mode structure l'un en dessous de l'autre. Pourquoi ?

Qu'est ce que c'est des tableaux en mode structure ?

Il ne me semble pas que j'ai deux tableaux différents ..;

Dans le fichier gestion-Loc-materiel...., allez dans Formules -> Gestionnaire de noms, vous verrez Tableau2 et tableau243

Qu'est ce que c'est des tableaux en mode structure ?

Ce sont des tableaux pour lesquels vous avez opté pour une mise en forme via l'option "Mettre en forme tableau" dans le menu excel. C'est très intéressant mais cela modifie souvent l'approche au niveau VBA.

regardez votre fichier dans la feuille Inventaire, le tableau est mis en forme

On peut adapter tout cela bien sur mais sur un fichier final

Ah oui effectivement! Vous m'apprenez un truc là !

Ce n'est pas moi qui ai créé le fichier de base, mais je pense qu'on peut supprimer ce deuxième tableau si ça pose problème pour le VBA. Clairement il n'y a aucune utilité a avoir ce tableau ici.

Par contre je ne comprends pas comment supprimer ce tableau. Le bouton supprimé est verrouillé pour ma part ..

Bon pas facile mais j'ai remanié votre fichier

Dites mois si ok comme cela puis je vous enverrai le fichier avec le code nécessaire pour l'userform

Aussi me confirmer que le nom du fichier est exact

D'accord merci ! Le fichier est bien comme ça ! et c'est bon pour le nom !

Votre fichier en retour pour test

Repartez bien de celui là pour continuer votre projet car j'ai apporté par mal de changements dans les codes

Le fichier "gestion-loc-materiel-externe ..." doit être placé dans le répertoire "Loc externe". J'ai défini le répertoire dans la macro Liste_BL à la ligne "Chemin ="

Le code sera exécuté pour les deux feuilles Ijinus et Hedreka mais pas pour autres pour l'instant

D'accord merci je vais regarder, et je reviens vers vous!

C'est parfait merci !

Par contre je me demande a quoi sert "Flag"? J'ai vu qu'il prend la valeur false ou true, mais je n'arrive pas à comprendre quel est le but.

Ensuite, est ce que ça demanderai d'ajouter beaucoup de lignes de code de mettre les n°de BL en sens inverse ? de manière à avoir les plus récents en haut de la liste ?

Par contre je me demande a quoi sert "Flag"? J'ai vu qu'il prend la valeur false ou true, mais je n'arrive pas à comprendre quel est le but.

Dans le code Checkbox3, vous verrez que je désactive la checkbox4 (instruction checkbox4 = false). Le fait de désactiver la checkbox4 va automatiquement relancer le code checkbox4 car VBA comprend cela comme si vous cliquiez sur cette checkbox4.

Pour éviter de relancer le code checkbox4, j'utilise une variable nommée Flag que je mets à la valeur True et qui va permettre de sortir de la macro checkbox4-Click via l'instruction Exit sub dans la ligne IF ... then.

Vous comprenez ?

Ensuite, est ce que ça demanderai d'ajouter beaucoup de lignes de code de mettre les n°de BL en sens inverse ? de manière à avoir les plus récents en haut de la liste ?

Je dois revoir le code Liste_BL C'est bon si l'on trie la feuille avant ?

D'accord merci, je m'y pencherai demain, je n'ai pas trop le temps ce soir.

Et non justement il ne faut pas toucher aux feuilles hydreka, et IJINUS ...

Et non justement il ne faut pas toucher aux feuilles hydreka, et IJINUS ...

Une fois la combobox complétée, le fichier gestion-loc-materiel peut être fermé ou il doit rester ouvert ?

Cette question parce qu'il faut savoir ce que le choix du BL implique après ?

oui il faut qu'il reste ouvert. Car ensuite, un fois avoir sélectionné le BL il faudrait que la combobox associée au matériel (la n°2 il me semble) soit remplie par des éléments du BL de ce fichier qui sont dans une colonne suivante (la C ou la D sans grande certitude). Je n'ai pas le fichier sous les yeux.

je sais pas si je suis très claire ..

Bonjour,

Remarque sur le nom Tableau2 : Dans le fichier gestion-loc-materiel, faites attention quand vous ajoutez des données car il faut qu'elles s'intègrent dans le tableau des données existantes qui est nommé tableau2 pour la feuille IJINUS. Si vous importer les nouvelles données par un copier - coller, le mieux est de d'abord prévoir les lignes suffisantes en insérant en premier des lignes vides puis faire un copier - Collage spécial -> Valeurs dans les lignes vides. Vous garderez ainsi la mise en forme.

Car ensuite, un fois avoir sélectionné le BL il faudrait que la combobox associée au matériel (la n°2 il me semble) soit remplie par des éléments du BL

C'est effectivement la combobox2 mais le matériel est en colonne E. J'ai réalisé le code.

Ce que je voudrais comprendre c'est ce que vous faites une fois la combobox complétée car je suppose qu'à un moment le fichier gestion-loc-materiel ne doit plus être ouvert. Il ne sert qu'à récupérer des informations existantes je présume ?

Bonjour,

D'accord je vais donc insérer des lignes en prévision des suivantes.

Alors le but de ce code est de réaliser un suivi du matériel envoyé, et un suivi du matériel revenue a l'agence. Sachant que le matériel est de deux sorte :

- du matériel interne à l'entreprise : dans ce cas la liste est présente dans le fichier du code dans l'onglet "Inventaire"

- du matériel externe à l'entreprise : dans ce cas on loue le matos à ijinus, Hydreka, ou d'autre (autre fichier excel)

Du coup l'useform permet de :

- renseigner si le matériel envoyé est interne ou externe

- de préciser quel matériel est envoyé exactement (combobox 2)

- et de définir la date d'envoi et la date de retour prévu

Une fois tous les champs remplis, en cliquant sur le bouton "valider" (CommandButton1), le tableau présent dans l'onglet "historique réservation" se remplis des données souhaitées. (le code pour cela n'est pas tout à fait à jour, car des colonnes ont été ajoutées.

Donc le contenu de la combobox 2 est inséré dans la colonne G.

J'espère que c'est plus claire comme ça.

L'useform 2, qui n'est absolument pas au point, permettra de suivre les retours de matériel.

Rechercher des sujets similaires à "eviter doublons combobox"