Liste déroulante boîte à outil contrôle
Melmex
-
Melmex Messages postés 15 Statut Membre -
Melmex Messages postés 15 Statut Membre -
Bonjour à tous ceux qui passe par ici,
Alors voila mon petit problème. On ne peut pas dire que je sois une pro sur excel donc j'aurais besoin de votre aide :
Sur une feuille excel, qu'on appellera Feuil1, j'ai inséré une liste déroulante de la "Boîte à Outil de contrôle" ("ComboBox1"). J'ai ensuite tapé ma liste sur une autre feuille, qu'on appellera Feuil2. J'ai nommé cette Liste "Liste1" puis je l'ai inséré dans la "ComboBox1". Jusqu'à là tout va bien.
Maintenant je souhaiterais que lorsqu'un utilisateur inserre un nouveau nom dans ma "ComboBox1", ce nom siot automatiquement ajouté à ma "List1" de la Feuil2 pour que la personne suivante puisse trouver ce nouveau nom dans la liste déroulante!
Merci
Cordialement
Melmex
PS : Si quelqu'un pourrait en plus me dire comment on peut centrer notre selection de la liste déroulante, dans la comboBox1 se serait très aimable!
Alors voila mon petit problème. On ne peut pas dire que je sois une pro sur excel donc j'aurais besoin de votre aide :
Sur une feuille excel, qu'on appellera Feuil1, j'ai inséré une liste déroulante de la "Boîte à Outil de contrôle" ("ComboBox1"). J'ai ensuite tapé ma liste sur une autre feuille, qu'on appellera Feuil2. J'ai nommé cette Liste "Liste1" puis je l'ai inséré dans la "ComboBox1". Jusqu'à là tout va bien.
Maintenant je souhaiterais que lorsqu'un utilisateur inserre un nouveau nom dans ma "ComboBox1", ce nom siot automatiquement ajouté à ma "List1" de la Feuil2 pour que la personne suivante puisse trouver ce nouveau nom dans la liste déroulante!
Merci
Cordialement
Melmex
PS : Si quelqu'un pourrait en plus me dire comment on peut centrer notre selection de la liste déroulante, dans la comboBox1 se serait très aimable!
A voir également:
- Liste déroulante boîte à outil contrôle
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Se connecter à ma boite hotmail - Guide
- Boite gmail pleine - Guide
- Boite gmail bloquée - Guide
3 réponses
Bonjour,
Pour centrer le texte, tu vas dans propriété de ton bouton (en mode création, clic droit) et tu as TextAlign, tu choisis 2-fmtextalignercenter.
Pour la seconde, il faut faire une macro :
Outils, macro, visual basic éditor.
a gauche, tu double cliques sur ta feuille et tu colles ca :
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'combobox1 est le nom de ta liste déroulante, si c'est pas ca, remplace par son nom, tu l'as dans propriété name
a = ""
i = 1 'si tes valeurs commencent à la ligne ecris i=2, si c'est 3, i=3
Do While Sheets("Feuil2").Cells(i, 1) <> "" 'cells(ligne, colonne), s ta colonne est 2 mets cells(i,2)
If Cells(i, 1) = ComboBox1.Value Then 'idem pour le nom de ta liste déroulante
a = 1
End If
Loop
If a = "" Then
Cells(i, 2) = ComboBox1.Value 'idem pour le nom de ta liste déroulante
End If
a = ""
End Sub
A chaque fois que tu feras un double clic sur ta liste déroulante, ca vérifiera si la donnée est présente et le cas échéant ca l'ajoutera
Pour centrer le texte, tu vas dans propriété de ton bouton (en mode création, clic droit) et tu as TextAlign, tu choisis 2-fmtextalignercenter.
Pour la seconde, il faut faire une macro :
Outils, macro, visual basic éditor.
a gauche, tu double cliques sur ta feuille et tu colles ca :
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'combobox1 est le nom de ta liste déroulante, si c'est pas ca, remplace par son nom, tu l'as dans propriété name
a = ""
i = 1 'si tes valeurs commencent à la ligne ecris i=2, si c'est 3, i=3
Do While Sheets("Feuil2").Cells(i, 1) <> "" 'cells(ligne, colonne), s ta colonne est 2 mets cells(i,2)
If Cells(i, 1) = ComboBox1.Value Then 'idem pour le nom de ta liste déroulante
a = 1
End If
Loop
If a = "" Then
Cells(i, 2) = ComboBox1.Value 'idem pour le nom de ta liste déroulante
End If
a = ""
End Sub
A chaque fois que tu feras un double clic sur ta liste déroulante, ca vérifiera si la donnée est présente et le cas échéant ca l'ajoutera
Cette partie permet de balayer ton tableau.
Si ta valeur est dans ton tableau alors a=1
si ta valeur n'est pas dans ton tableau alors a=""
si a="", on rajoute la valeur.
Est-ce plus clair?
Si ca ne l'est pas rapetisse la fenetre ou tu as ton code et appuies sur f8.
Tu verras sur excel, ce que ca fait.
Si ta valeur est dans ton tableau alors a=1
si ta valeur n'est pas dans ton tableau alors a=""
si a="", on rajoute la valeur.
Est-ce plus clair?
Si ca ne l'est pas rapetisse la fenetre ou tu as ton code et appuies sur f8.
Tu verras sur excel, ce que ca fait.
Bonjour
si ta liste ne comporte pas de trous
la liste commence dans cette démo en C2 feuille2
ton combo en feuille1
chaque que tu ajoutes ou modifies une donnée dans la liste, le combo est mis à jour
pour installer la macro:
copier cette macro
clic droit sur l'onglet de la feuille2 (où il y a la liste)
visualiser le code
coller
si ta liste ne comporte pas de trous
la liste commence dans cette démo en C2 feuille2
ton combo en feuille1
chaque que tu ajoutes ou modifies une donnée dans la liste, le combo est mis à jour
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nbre As Byte
If Not Intersect(Target, Range("liste")) Is Nothing Then
nbre = Application.CountA(Range("liste"))
Feuil1.ComboBox1.ListFillRange = "feuil2!$C$2:$C$" & nbre + 2
End If
End Sub
pour installer la macro:
copier cette macro
clic droit sur l'onglet de la feuille2 (où il y a la liste)
visualiser le code
coller
Tout dépend si ta liste peut être modifiée ou non après le lancement de l'userform et avant unload.
ici le combo propose les éléments présents dans ta liste au lancement de l'userform ( il n'est plus nécessaire de garder un nom à la liste
toujours si ta liste n'a pas de trous!
ici le combo propose les éléments présents dans ta liste au lancement de l'userform ( il n'est plus nécessaire de garder un nom à la liste
toujours si ta liste n'a pas de trous!
Private Sub UserForm_Initialize()
For lig = 2 To Feuil2.Range("C2").End(xlDown).Row
ComboBox1.AddItem Feuil2.Cells(lig, "C")
Next
End Sub
Comment peut-on savoir si elle peut être modifié ou non après le lancement de l'UserForm?
Si je ne donne pas de nom à la liste comment la comboBox va chercher les nom de la liste?
Lorsque je tape ce code et que je lance le UserForm pour tester :
Private Sub UserForm_Initialize()
For lig = 1 To Feuil46.Range("B1").End(xlDown).Row
ComboBox1.AddItem Feuil46.Cells(lig, "B")
Next
End Sub
Il y a un bug. il y a UserForm1.show surligné en jaune alors que sans ce code il n'y a pas de problème.
Si je ne donne pas de nom à la liste comment la comboBox va chercher les nom de la liste?
Lorsque je tape ce code et que je lance le UserForm pour tester :
Private Sub UserForm_Initialize()
For lig = 1 To Feuil46.Range("B1").End(xlDown).Row
ComboBox1.AddItem Feuil46.Cells(lig, "B")
Next
End Sub
Il y a un bug. il y a UserForm1.show surligné en jaune alors que sans ce code il n'y a pas de problème.
(Désolé de répondre que maintenant)
Je ne comprend pas trop à quoi sert cette partie, tu pourrais m'expliquer? (et du coup je ne sais pas quelle numero de colonne je dois mettre à la place du "2")
Loop
If a = "" Then
Cells(i, 2) = ComboBox1.Value 'idem pour le nom de ta liste déroulante
End If
a = ""
End Sub
Merci
Je tape :
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
a = ""
i = 1
Do While Sheets("Feuil46").Cells(i, 2) <> ""
If Cells(i, 2) = ComboBox1.Value Then
a = 1
End If
Loop
If a = "" Then
Cells(i, 2) = ComboBox1.Value
End If
a = ""
End Sub
Et lorsque je test il y a un bug et ça surligne en jaune la ligne
"Do While Sheets("Feuil46").Cells(i, 2) <> "" "
et je n'arrive pas à comprendre pourquoi!