Cliquer deux fois sur bouton pour afficher ListBox

Chers tous,

J'ai un userform dans lequel j'ai une listbox. Le code que j'ai fait fonctionne et le résultat voulu est obtenu dans la feuille Excel source de ma ListBox3.

Sauf que lorsque je clique la première fois, la feuille se remplie (le code s'actionne) mais pour actualiser la listBox3 je dois cliquer une deuxième fois.

Voici mon code :

Private Sub CommandButton5_Click()

ListBox3.Clear

' Là tout fonctionne
compteur = 0
For LigDate = 100 To Sheets("UTILITAIRE").Range("A" & Rows.Count).End(xlUp).row
If Sheets("UTILITAIRE").Range("A" & LigDate) = ComboBox5 Then compteur = 1
Next LigDate

Dim DerLig As Integer, i As Integer
DerLig = Sheets("UTILITAIRE").Cells(Rows.Count, 1).End(xlUp).row
For i = 99 To DerLig
    If ComboBox6 = "FOURNISSEURS D'EXPLOITATION" And compteur = 0 Then Sheets("UTILITAIRE").Cells(DerLig + 1, 1) = ComboBox5
    Next i

'La déclaration de la ListBox3, remarque je ne l'ai pas déclarée dans Initialie userform 
DerLig2 = Sheets("UTILITAIRE").Range("A" & Rows.Count).End(xlUp).row
ListBox3.ColumnCount = 2
ListBox3.ColumnWidths = "180;70"
For j = 100 To DerLig
    ListBox3.AddItem Sheets("UTILITAIRE").Range("A" & j)
    ListBox3.List(ListBox3.ListCount - 1, 1) = Sheets("UTILITAIRE").Range("B" & j)
Next j

End Sub

j'ai essayé de positionné ListBox3.clear ailleurs mais en vain .... ça c'est de 1

De 2, j'aimerais que lorsque mon comboBox6 prenne une autre valeurs, par exemple "CLIENTS", la même listBox3 prenne source d'une autre plage de la feuille Excel soit :

DerLig3 = Sheets("UTILITAIRE").Range("E" & Rows.Count).End(xlUp).row
ListBox3.ColumnCount = 2
ListBox3.ColumnWidths = "180;70"
For x = 100 To DerLig3
    ListBox3.AddItem Sheets("UTILITAIRE").Range("E" & x)
    ListBox3.List(ListBox3.ListCount - 1, 1) = Sheets("UTILITAIRE").Range("F" & x)
Next x

Merci de m'aider à résoudre cette difficulté :)

Me

Bonjour cameleon1881,

Je te retourne une nouvelle version de ton ancien fichier ... le listbox s’actualise ...

Par contre, les montants, pour l’instant, sont limités à des entiers ...

A+

ric

Salut Ric,

J'espère que tu vas bien :)

En effet, je voudrais savoir pourquoi la ListBox ne s'actualise pas dès le premier click du bouton (qui fait actualiser pourtant les champs de la feuille excel source de la listBox) ?

Pourquoi quand je clique une deuxième fois ca s'actualise ?

Voici mon code :

Private Sub CommandButton5_Click()

ListBox3.Clear

' Là tout fonctionne
compteur = 0
For LigDate = 100 To Sheets("UTILITAIRE").Range("A" & Rows.Count).End(xlUp).row
If Sheets("UTILITAIRE").Range("A" & LigDate) = ComboBox5 Then compteur = 1
Next LigDate

Dim DerLig As Integer, i As Integer
DerLig = Sheets("UTILITAIRE").Cells(Rows.Count, 1).End(xlUp).row
For i = 99 To DerLig
    If ComboBox6 = "FOURNISSEURS D'EXPLOITATION" And compteur = 0 Then Sheets("UTILITAIRE").Cells(DerLig + 1, 1) = ComboBox5
    Next i

'La déclaration de la ListBox3, remarque je ne l'ai pas déclarée dans Initialie userform 
DerLig2 = Sheets("UTILITAIRE").Range("A" & Rows.Count).End(xlUp).row
ListBox3.ColumnCount = 2
ListBox3.ColumnWidths = "180;70"
For j = 100 To DerLig
    ListBox3.AddItem Sheets("UTILITAIRE").Range("A" & j)
    ListBox3.List(ListBox3.ListCount - 1, 1) = Sheets("UTILITAIRE").Range("B" & j)
Next j

End Sub

Bonjour cameleon1881,

Sans fichier pour tester, je dirais que tu ne vides pas le Listbox avant de l'alimenter de nouveau ...

' ...
' ...
' ...
ListBox3.Clear
    ListBox3.ColumnCount = 2
' ...
' ...
' ...

ric

Voici des capture écran des trois séquences :

1. Je clique une première fois sur le bouton : rien ne s'affiche sur la listBox :*

capture 13

Pourtant sur la feuille ça le fait :

capture 15

En cliquant une deuxième fois ça apparait :

capture 14

?

Bonjour cameleon1881,

Lire du code pour en trouver l’erreur ... pour moi, ce n’est pas évident ... je manque d’expérience ... je ne suis pas un théoricien ...

Pour dépanner un fichier ... je place des "Points d’arrêt" et, sur les bouts de code à dépanner, je fais du pas-à-pas ( touche F8 ) ...

Donc, c’est énormément plus facile pour moi de tapoter la touche "F8" , laquelle est bien usée sur mon clavier ...

ric

Bonjour cameleon1881,

Désolé, mais pour moi les images n'ont aucun intérêt ... Sauf celles de ma dulcinée ...

ric

J'ai enfin trouvé la faute qui est bête toute bête ...

au lieu d'écrire DerLig2 j'ai mis DerLig ici : (ligne 4) !!!

DerLig2 = Sheets("UTILITAIRE").Range("A" & Rows.Count).End(xlUp).row
ListBox3.ColumnCount = 2
ListBox3.ColumnWidths = "180;70"
For j = 100 To DerLig
    ListBox3.AddItem Sheets("UTILITAIRE").Range("A" & j)
    ListBox3.List(ListBox3.ListCount - 1, 1) = Sheets("UTILITAIRE").Range("B" & j)
Next j

Sinon Ric, voici le fichier en question (simplifié).

Ce que je voudrais maintenant c'est modifier la source de la listBox1 en fonction de la valeur de la Combobox2.

Si la combobox2 = Fournisseurs d'exploitation alors Listbox1 affiche les valeurs du tableau 1 de la Feuille F1

Si la combobox2 = Clients alors Listbox1 affiche les valeurs du tableau 2 de la Feuille F1

Sachant que jusque là le code alimente seulement le Tableau 1.

Merci pour ton aide :)

6test-3.xlsx (12.17 Ko)

Bonjour cameleon1881,

Ouupppssss! un fichier .xlsx ????????????? = pas de formulaire ni code ...

ric

oh nooooooon :((( je refais tout dans ce cas M.... mais je le fais

Salut Ric ,

RE :) le voilà

12test-3.xlsm (23.82 Ko)

Bonjour cameleon1881,

Ça va me prendre un peu plus longtemps pour réaliser cela ...

Mes connaissances en ce domaine sont limitées ... et je veux utiliser des variables "Tablo" pour la rapidité d’exécution si tu as des centaines de lignes à traiter ...

Dis-moi : un client peut-il avoir plus d’un compte ??

Si c’est le cas ... combobox1 doit être multicolonne ... ou encore, créer une combobox3 pour les différents comptes des clients multicomptes.

Je tricote en attendant ton retour sur la chose ...

ric

Salut Ric,

Non chaque client et chaque fournisseur sont attribué à un seul compte. Les valeurs qui sont dans la colonne qui les regroupent tous sont imputées ou bien au tableau 1 ou bien au tableau 2... je pense que la problématique est la suivante : faire en sorte qu'une listbox soit liée, sous condition, à deux sources (tableaux).

J'ai eu une idée la qui est la suivante :

Créer deux listBox superposées et coder la visibilité de l'une par rapport à l'autre. Comme ça on a 2 listbox pour 2 tableaux ... c possible à ton avis ?

Bonjour cameleon1881,

Que le contenu du Combobox1 change en fonction du choix dans le combobox2 n'est pas un problème, cela est déjà codé ...
Un client ou fournisseur = un compte cela est simple ...

Merci de m'avoir éclairé ... il me reste la listbox et la recherche ... il y aura sûrement "ajout" d'un client ou fournisseur ... comme ils sont uniques, il faudra en faire la vérification au moment de l'ajout ...

Je me doute qu'il faut aussi ajouter un tri au moment des ajouts ...

A+

ric

Bonjour cameleon1881,

Je m'interrogeais sur la présentation de la bête ..

J'ai donc osé faire de gros changements ...

Il n'y a au départ que 2 catégories soient "Clients et Fournisseurs" ... au lieu d'un "Combobox", j'ai choisi d'utiliser des "OptionButton" ...

Pour la recherche, j'ai choisi encore une fois d'utiliser des "OptionButton" afin d'effectuer la recherche par nom ou numéro de compte ...

Pour que ce système fonctionne bien, il faut des noms de clients/fournisseurs variés ... ici, il faut voir au moment d'utiliser de vraies données ...

Pour l'instant, porte attention de ne pas mettre d'informations où l'on pourrait identifier des gens ou entreprises ... quand le fichier entrera en production, il n'y aura qu'à coller les données réelles ... conserve une copie des infos bidon pour d'éventuelles améliorations ou débogages sur le forum ...

Regarde cela et dis-moi si je suis dans le champ ou si tu vois la chose d'un bon œil ...

Sinon, je retournerai à la présentation et fonctionnement d'origine ...

Évidemment, ce n'est qu'un début ... il y a encore à ajouter et corriger des noms et choisir que faire avec une sélection dans le ListBox ...

ric

9test-3c.xlsm (42.15 Ko)

Cher Ric,

je te remercie pour ce travail poussé :)

En fait le travail que je songe de faire à travers ce formulaire est seulement un travail de paramètrage comptable (Compte et N° de compte comptable).

Ce que je cherche à faire c'est classer une bonne fois pour tout par exemple un fournisseurs en tant que fournisseur d'exploitation, un autre comme fournisseur divers, chacun de ces catégorie a un numéro de compte dans la nomenclature comptable.

Ce que je voudrais vraiment c'est de pouvoir afficher le tableau 1 dans ma listbox1 si dans ma combobox2 je sélectionne "Fournisseurs d'exploitation" et le tableau 2 si dans ma comboBox2 j'ai "client".

Je n'arrive pas à faire en sorte que la listbox tire des deux tableaux c'est ça mon problème.

Tout en gardant le formulaire d'origine tel qu'il est ...

Me

Bonjour Ric,

Je pense que j'ai compris un peu ta méthode ... la variable tableau mémoire prend à chaque fois selon la valeur de la combobox une plage donnée qu'elle copie et colle dans un endroit qui est lui la source de la listbox :)

Bonjour cameleon1881,

En fait, au changement dans "Combobox2" ... ça met en variable, publique au module, le numéro de la colonne visée.

En pièce jointe, un fichier minimaliste qui ne fait que changer la liste dans "Combobox1" quand il y a un changement dans "Combobox2" ...

A+

ric

5test-3f.xlsm (41.49 Ko)
Rechercher des sujets similaires à "cliquer deux fois bouton afficher listbox"