Liste combobox sans les données en doublon d'une autre feuille

bonjour à forum,

je sollicite votre expertise pour ajouter une liste à ce combobox

- la liste = colonne E à I de la feuille "Déroulants" en y enlevant ce qui se trouve en colonne E de la feuille "Stocks".

je n'y arrive pas....

merci de m'aider svp.

PEDRO

7classeur.xlsm (35.71 Ko)

Bonjour,

Je n'ai pas de PC avec moi, je vais écrire un code a toi de tester.

'La Combobox s'appellera MaCombo

'Boucle de E à I
For Colonne = 5 to 9
     'Dernière ligne de la colonne
     DerLigne = sheets("Déroulants").range(chr(64 + Colonne) &"65535").End(XlUp).Row
     'Boucle sur toutes les lignes de la colonne
     For Ligne = 2 to DerLigne
          'Boucle sur toute les lignes de la colonne E dans Stocks
          For LigneStocks = 4 to Sheets("Stocks").range("E65535").End(XlUp).Row
                If sheets("Stocks").cells(LigneStocks,"E") = sheets("Déroulants").cells(Ligne,Colonne) then
                         goto LigneSuivante
                 End if
          Next
          MaCombo.AddItem sheets("Déroulants").cells(Ligne,Colonne)
           LigneSuivante:
      Next
Next

A tester

Mais il existe de multiple solutions.

A bientot

bonjour le forum,

bonjour Mr Moul,

ça fonctionne nickel.

merci beaucoup.

Pedro.

RE, adapté sur mon fichier, le temps de réaction est vraiment long : plus de 30 secondes avant mise à jour de chaque saisie (lettre ou chiffre)!

autrement, le résultat est le bon.

y a t'il une astuce pour le speeder un peu?

Bonjour,

Sur mon PC c'est relativement rapide...

Ou place tu la procédure ?

Combien de ligne possède ton fichier sur chaque colonne?

bonjour,

c'est dans la procédure ComBobox1_Change()

le ligne avec les ELxxx sur feuille "déroulants" est la plus longue avec plus de 1400 lignes et la colonne 5 de la feuille "Stocks" tourne autour de 2000 lignes (parfois moins, parfois plus)

les 2 lignes les plus petites sur feuille "Déroulants" sont B et D avec moins de 500 lignes.

Pedro.

Pourquoi ne la place tu pas dans Useform_Initialise ?

Cela chargerai une seule fois la combo et donc uniquement 30 seconde d'attente à l'ouverture de l'userform.

en y regardant de près, je vois que la liste se répète 2 fois dans la liste déroulante du ComBobox.

j'ai essayé de placer un exit For pour empêcher la boucle de tourner plus d'une fois mais sans succès.

Oui car tu ne place pas la procédure au bon endroit.

La mettre en ComboBox_Change() sans la nettoyer reviens a ajouter de nouveaux items.

Place la en Userform_Initialise() et supprime ou commente la procédure en ComboBox1_Change()

Private Sub UserForm_Initialize()

'Boucle de E à I
For Colonne = 5 To 9
     'Dernière ligne de la colonne
     DerLigne = Sheets("Déroulants").Range(Chr(64 + Colonne) & "65535").End(xlUp).Row
     'Boucle sur toutes les lignes de la colonne
     For Ligne = 2 To DerLigne
          'Boucle sur toute les lignes de la colonne E dans Stocks
          For LigneStocks = 4 To Sheets("Stocks").Range("E65535").End(xlUp).Row
                If Sheets("Stocks").Cells(LigneStocks, "E") = Sheets("Déroulants").Cells(Ligne, Colonne) Then
                         GoTo LigneSuivante
                 End If
          Next
          ComboBox1.AddItem Sheets("Déroulants").Cells(Ligne, Colonne)
LigneSuivante:
      Next
Next
End Sub

En fait à chaque fois que je change qlqch (une lettre ou un chiffre) dans ma combo, le code rajoute une fois la liste, donc si je dois saisi 6 caractères = à chaque fois il va recharger une fois la liste en plus… donc au bout j'aurai 6 fois la liste.

Oui enlève ton code de ComboBox1_Change() .........

Place le dans Userform_Initialize(), je vais pas te le dire 20 fois.........

Ca NON!

Private Sub ComboBox1_Change()

Ca OUI!

Private Sub UserForm_Initialize()

re,

nickel c'était ça.

là c'est super rapide!!!

merci d'y avoir consacré du temps.

bien à vous.

Pedro.

Parfait,

Je t'en pris bonne fin de journée

A bientot!

Oui enlève ton code de ComboBox1_Change() .........

Place le dans Userform_Initialize(), je vais pas te le dire 20 fois.........

Ca NON!

Private Sub ComboBox1_Change()

Ca OUI!

Private Sub UserForm_Initialize()

désolé, les messages se sont croisés. encore merci à vous.

Rechercher des sujets similaires à "liste combobox donnees doublon feuille"