Aide sur codes combobox SVP.

samimi94

XLDnaute Occasionnel
Bonjour le forum,

J'aurai besoin de votre aide sur un combobox.
Je vais tenter de m'expliquer car cela n'est déjà pas simple pour moi.

Lorsque j'execute un fichier contenant des macros, je clique sur un bouton qui m'importe des données (d'un serveur bureautique) dans un nouveau classeur.
A l'ouverture de ce classeur, à la fin de l'importation des données clients, j'ai un combobox qui apparairait dans lequel j'ai deux colonnes "liste 1" à gauche et liste 2" à droite.
En cliquant sur un bouton nommé "import" dans ce combobox, je fais un tri de la colonne B (noms des clients) en supprimant les doublons et en les intégrant directement dans la liste 1, or je souhaiterai que cela se fasse automatiquement à l'ouverture du combobox. Est ce possible ?

De plus, je peux transférer des clients de mon choix de la liste 1 vers la liste 2 (toujours dans mon combobox), mais lorsque je clique sur le bouton OK je ne parviens pas à n'afficher dans mon classeur uniquement le client que j'ai sélectionné (en somme ne plus voir le nom des clients qui n'ont pas été transféré en liste 2). comment puis-je masquer les clients non sélectionner en liste 2 depuis mon bouton "OK"?

Je sais qu'un exemple est fort apprécié sur le site et beaucoup plus pratique, mais je n'ai pas la possibilité d'en fournir un car il s'agit d'un développement de la société pour laquelle je travaille que je peux pas mettre en ligne.

Si vous pouviez m'aider SVP et si mes explications sont un peu tordues n'hésitez pas à me le faire savoir.

Par avance merci et bonne journée à tous.

Samimi
 
Dernière édition:

samimi94

XLDnaute Occasionnel
Re : Aide sur codes combobox SVP.

Bonsoir,

Comme il est écrit ci-dessus je ne peux envoyer de fichiers sinon je l aurai fait sans hésiter.

Bien que je suis la personne qui demande de l aide, cela ne vous abtient pas d' être courtois. Un simple bonjour, désole je ne peux vous aider sans fichier me convient tout a fait.

Je vous souhaite une bonne soirée.
 

KenDev

XLDnaute Impliqué
Re : Aide sur codes combobox SVP.

Bonjour Samimi,

Au delà des problèmes de savoir vivre c'est vrai que sans fichier ni code ni feuille ça va pas être facile..
En cliquant sur un bouton nommé "import" dans ce combobox, je fais un tri de la colonne B (noms des clients) en supprimant les doublons et en les intégrant directement dans la liste 1, or je souhaiterai que cela se fasse automatiquement à l'ouverture du combobox. Est ce possible ?
Ceci dit, pour ce point, as tu essayé d'aller voir le code correspondant au bouton 'import' et de le transférer/l'adapter en le mettant dans la sub
VB:
Private Sub UserForm_Initialize()
'code
End Sub
?

De plus, je peux transférer des clients de mon choix de la liste 1 vers la liste 2 (toujours dans mon combobox), mais lorsque je clique sur le bouton OK je ne parviens pas à n'afficher dans mon classeur uniquement le client que j'ai sélectionné (en somme ne plus voir le nom des clients qui n'ont pas été transféré en liste 2). comment puis-je masquer les clients non sélectionner en liste 2 depuis mon bouton "OK"?
Encore une fois il faudrait aller dans le code du bouton OK pour y ajouter les commandes permettant de filtrer la liste.

Cordialement
 

samimi94

XLDnaute Occasionnel
Re : Aide sur codes combobox SVP.

Bonsoir kendev,

Merci pour ta réponse.
En effet je n ai pas essaye ce que tu me conseilles.
Je vais donc commencer par ca des demain et vous dirai ce qu il en est.

Si je peux abuser un peu, peux-tu me dire quel est le code vba qui permet de filtrer les noms clients d' une colonne b ?
Ex : si je mets toto1 et toto2 dans la liste 2 je ne souhaite avoir que ces 2 clients affiches dans la colonne b en cliquant sur mon bouton ok.

Merci encore et bonne soirée.
 

KenDev

XLDnaute Impliqué
Re : Aide sur codes combobox SVP.

Quelque chose comme ça, à adapter :
VB:
Private Sub MonBoutonOk_Click()
Dim oWs As Worksheet

    Unload MonUserform 'décharger l' Userform
    
    Set oWs = Worksheets("MaFeuille") 'déclaration de la feuille contenant la liste
    
    'si la feuille possède un filtre l'enlever et le remettre (des fois qu'il ne soit pas à l'endroit voulu)
    'si elle n'en a pas lui en donner un
    If oWs.AutoFilterMode Then
        'la je pars du principe que le tableau part de A1 et que la feuille ne possède aucune données sur la ligne 1 hors du tableau
        Range(oWs.Cells(1, 1), oWs.Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column)).AutoFilter
        Range(oWs.Cells(1, 1), oWs.Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column)).AutoFilter
    Else
        Range(oWs.Cells(1, 1), oWs.Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column)).AutoFilter
    End If
    
    'filtrage
    Range(oWs.Cells(1, 1), oWs.Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column)).AutoFilter _
        Field:=2, Criteria1:="=toto1", Operator:=xlOr, Criteria2:="=toto2"
    
End Sub

Cordialement
 

samimi94

XLDnaute Occasionnel
Re : Aide sur codes combobox SVP.

Bonsoir le forum, Bonsoir Kendev,

Kendev merci pour ton aide et tes réponses.


J'ai essayé de reprendre le code du bouton import du combobox et je l'ai placé dans le
Code:
Private Sub UserForm_Initialize()
mais ca ne fonctionne pas.
Ce que j'ai omis de dire c'est que ce combobox apparait à l'ouverture d'un autre classeur. En somme je clique sur un bouton qui récupère des données sur le serveur et les intègre dans un nouveau classeur. A l'ouverture de ce nouveau classeur le combobox s'affiche et c'est à cet instant que je souhaite voir le nom des clients se trouvant en colonne B apparaître dans la liste 1 du combobox.

Je ne sais pas ce qu'il manque malgré mes différents essais.

Pour ce qui est du filtre je ne me suis pas encore penchée dessus. Merci pour l'exemple que tu m'as fourni, je vais le tester après avoir résolu le premier point.

Samimi.
 

KenDev

XLDnaute Impliqué
Re : Aide sur codes combobox SVP.

Bonjour Samimi, bonjour le fil,

Le code précédent correspond à ce que j'ai cru comprendre à ta demande du premier post
Samimi94 à dit:
quel est le code vba qui permet de filtrer les noms clients d' une colonne b
c'est à dire un filtre classique d'une colonne B dans une feuille contenant un tableau.

Pour le combobox ça devrait ressembler à ça:
VB:
Private Sub UserForm_Initialize()
    For i = 1 To Workbooks("Classeur1").Worksheets("Feuil1").Cells(Rows.Count, 2).End(xlUp).Row
        ComboBox2.AddItem Workbooks("Classeur1").Worksheets("Feuil1").Cells(i, 2)
    Next i
End Sub
à adapter selon les noms du Combobox, du classeur et de la feuille

Cordialement

KD
 

samimi94

XLDnaute Occasionnel
Re : Aide sur codes combobox SVP.

Bonjour Le Forum, Kendev,

En effet du a bien saisi ce que je souhaite obtenir mais j'ai beau suivre tes instructions je ne parviens pas au résultat escompté.

J'ai trouvé ce bout de code que un autre site que j'ai adapté à ma situation mais ca fonctionne une fois sur deux :

Code:
Private Sub UserForm_Initialize()

NbLignes = Sheet1.Range("B65536").End(xlUp).Row
For a = 1 To 3

For b = 4 To NbLignes

If Sheet1.Range("B" & b) <> Sheet1.Range("B" & b + 1) Then
NomChapitre = Sheet1.Range("B" & b)
EssaiListBox.Controls("listbox" & a).AddItem NomChapitre
End If

Next b
Next a

End With
End Sub

J'ai changé mon USF pour mettre des listbox mais ca ne fonctionne pas mieux lol.

Merci pour tout.

Samimi.
 

samimi94

XLDnaute Occasionnel
Re : Aide sur codes combobox SVP.

Bonjour le forum,

Me revoilà por vous donner des nouvelles et surtout la solution à mon problème qui peur servir je l'espère à certain d'entre vous.

Ayant posté ce problème également sur un autre forum d'entre-aide, avec l'aide de Mercatog pour ne pas le citer, voici le code qui permet d'afficher le combobox1 à l'ouverture du USF :

Code:
Private Sub UserForm_Initialize()
Dim LastLig As Long, i As Long
Dim MonDico As Object
 
With ThisWorkbook.Worksheets("Feuil1")
   LastLig = .Cells(.Rows.Count, "B").End(xlUp).Row
   .Range("B1:B" & LastLig).Sort Key1:=.Range("B2"), Order1:=xlAscending, Header:=xlYes
   Set MonDico = CreateObject("scripting.dictionary")
   For i = 2 To LastLig
      If Trim(.Range("B" & i).Value) <> "" Then MonDico(UCase(.Range("B" & i).Value)) = 1
   Next i
   Me.ComboBox1.List = MonDico.keys
   Set MonDico = Nothing
End With
End Sub

Merci à tous et surtout au temps que vous passez pour nous aider.

Bonne journée.
 

Discussions similaires

Réponses
5
Affichages
169

Statistiques des forums

Discussions
312 450
Messages
2 088 511
Membres
103 873
dernier inscrit
Sabin