Liste déroulante VBA
Résolu
lucieaup
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
A voir également:
- Vba inputbox liste déroulante
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Liste code ascii - Guide
- Site dangereux liste - Guide
8 réponses
Bonjour,
Question 1 :
il existe plusieurs façons de remplir une liste déroulante (Combobox), en voici une dans la procédure d'initialisation de l'userform :
Essaie déjà de faire tourner cela, on verra la deuxième question après...
Cordialement,
Franck P
Question 1 :
il existe plusieurs façons de remplir une liste déroulante (Combobox), en voici une dans la procédure d'initialisation de l'userform :
Private Sub UserForm_Initialize() Dim lig As Long, DernLigne As Long ComboBox1.Clear With Sheets("suivi") DernLigne = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row For lig = 2 To DernLigne ComboBox1.AddItem .Cells(lig, 1) Next lig End With End Sub
Essaie déjà de faire tourner cela, on verra la deuxième question après...
Cordialement,
Franck P
Bonjour Franck,
Merci de votre réponse rapide. J'ai essayé votre code mais ca ne fonctionne pas. En fait je crois que je n'ai pas compris où je dois remplir (désolée je ne suis pas trés douée). Je l'ai mis dans le code de mon formulaire (il s'ouvre tout seul quand on clique sur un bouton de la page d'accueil) et ca donne ca:
' suivi Macro
'
Dim k As Integer
For k = 1 To 100
Sheets("suivi").Select
dateS.Show
Range("A1").Select
Private Sub UserForm_Initialize()
Dim lig As Integer
Dim DernLigne As Long
ComboBox1.Clear
With Sheets("Identité")
DernLigne = .Columns(1).Find("A", (A)Previous).Row
For lig = 2 To DernLigne
ComboBox1.AddItem .Cells(lig, 1)
Next lig
End With
End Sub
If Range("A2").FormulaR1C1 <> "" Then Selection.End(xlDown).Select
Selection.Offset(1, 0).FormulaR1C1 = path1
Selection.Offset(1, 1).FormulaR1C1 = date1
Selection.Offset(1, 2).FormulaR1C1 = prix1
Selection.Offset(1, 3).FormulaR1C1 = moyen1
Selection.Offset(1, 4).FormulaR1C1 = com1
Next k
End Sub
C'est juste? En fait il doit aller chercher les informations dans la feuille "identité" en colonne A et les remettre dans la feuille "suivi" en colonne A aussi. La ma liste déroulante reste vide... J'ai aussi essayé de le mettre dans la feuille de code qui s'ouvre quand on double clique sur la combo box sans plus de succès...
Merci de votre réponse rapide. J'ai essayé votre code mais ca ne fonctionne pas. En fait je crois que je n'ai pas compris où je dois remplir (désolée je ne suis pas trés douée). Je l'ai mis dans le code de mon formulaire (il s'ouvre tout seul quand on clique sur un bouton de la page d'accueil) et ca donne ca:
' suivi Macro
'
Dim k As Integer
For k = 1 To 100
Sheets("suivi").Select
dateS.Show
Range("A1").Select
Private Sub UserForm_Initialize()
Dim lig As Integer
Dim DernLigne As Long
ComboBox1.Clear
With Sheets("Identité")
DernLigne = .Columns(1).Find("A", (A)Previous).Row
For lig = 2 To DernLigne
ComboBox1.AddItem .Cells(lig, 1)
Next lig
End With
End Sub
If Range("A2").FormulaR1C1 <> "" Then Selection.End(xlDown).Select
Selection.Offset(1, 0).FormulaR1C1 = path1
Selection.Offset(1, 1).FormulaR1C1 = date1
Selection.Offset(1, 2).FormulaR1C1 = prix1
Selection.Offset(1, 3).FormulaR1C1 = moyen1
Selection.Offset(1, 4).FormulaR1C1 = com1
Next k
End Sub
C'est juste? En fait il doit aller chercher les informations dans la feuille "identité" en colonne A et les remettre dans la feuille "suivi" en colonne A aussi. La ma liste déroulante reste vide... J'ai aussi essayé de le mettre dans la feuille de code qui s'ouvre quand on double clique sur la combo box sans plus de succès...
Oui je ne m'exprime peut être pas trés bien. Pour moi un logiciel c'est mon fichier excel mais avancé avec des fonctions VBA qui facilitent la manipulation des données pour l'utilisateur.
Ce que j'appelle un formulaire c'est le "userform" que j'ai fait dans VBA et ou j'ai mis ma combobox, mes zones de texte et les cases à remplir qui vont directement envoyer l'information dans le tableau (de ce fait l'utilisateur ne touchera plus au tableau...).
Ce que j'appelle un formulaire c'est le "userform" que j'ai fait dans VBA et ou j'ai mis ma combobox, mes zones de texte et les cases à remplir qui vont directement envoyer l'information dans le tableau (de ce fait l'utilisateur ne touchera plus au tableau...).
Bon.
Continuons,
Lorsque tu veux réaliser des actions dans ton UserForm, il faut placer les codes agissant lors d'événements de cet Userform (Initialise, combobox_change, textbox_exit ...) dans le module de l'userform.
Pour y accéder, très simple, sous l'éditeur VBE double clic dans le fond de ton Userform...
Ensuite, dans cette fenêtre, tu peux placer du code.
Regarde cet exemple de Userform. Il est très simple, mais suffisamment pour montrer quelques possibilités.
Ensuite, je vous recommande cette très saine lecture :
Tutoriels Excel
Utiliser les UserForm en VBA Excel
Utiliser les contrôles dans un UserForm, en VBA Excel
Continuons,
Lorsque tu veux réaliser des actions dans ton UserForm, il faut placer les codes agissant lors d'événements de cet Userform (Initialise, combobox_change, textbox_exit ...) dans le module de l'userform.
Pour y accéder, très simple, sous l'éditeur VBE double clic dans le fond de ton Userform...
Ensuite, dans cette fenêtre, tu peux placer du code.
Regarde cet exemple de Userform. Il est très simple, mais suffisamment pour montrer quelques possibilités.
Ensuite, je vous recommande cette très saine lecture :
Tutoriels Excel
Utiliser les UserForm en VBA Excel
Utiliser les contrôles dans un UserForm, en VBA Excel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je suis désolée mais j'ai tout lu (en fait j'en avais déjà vu une partie) et j'ai essayé de transposer votre formulaire ua mien mais ca ne fonctionne pas... Sur ce qui est montré, j'ai réussi à tout faire (retranscrire les box, lui faire recopier, supprimer, modifier...)
Il n'y a que cette histoire de liste déroulante que je n'arrive pas à faire fonctionner....
Il n'y a que cette histoire de liste déroulante que je n'arrive pas à faire fonctionner....
Bonjour,
Pour mettre un fichier en pièce jointe ici, il faut utiliser un site de pièce jointe comme : https://www.cjoint.com/
1- va sur leur site,
2- clic sur parcourir,
3- cherche ton fichier puis clic sur ouvrir
4- descend dans la page et clic sur "Créer le lien"
5- une fois le lien créé, tu le copies et viens le coller ici dans une réponse.
Ad'taleur
Pour mettre un fichier en pièce jointe ici, il faut utiliser un site de pièce jointe comme : https://www.cjoint.com/
1- va sur leur site,
2- clic sur parcourir,
3- cherche ton fichier puis clic sur ouvrir
4- descend dans la page et clic sur "Créer le lien"
5- une fois le lien créé, tu le copies et viens le coller ici dans une réponse.
Ad'taleur
Bonjour,
Bon désolée, j'ai été un peu lente mais la connection n'est pas top. Voici le lien
https://www.cjoint.com/?BKxng2iwq29
En fait j'ai essayé de coder sur une page vierge la liste déroulante et ca marche. Je crois que dans mon fichier il y a tellement de codes que du coup il ne doit pas être au bon endroit.
En tout cas merci pour l'aide que vous m'avez deja apportée.
Bon désolée, j'ai été un peu lente mais la connection n'est pas top. Voici le lien
https://www.cjoint.com/?BKxng2iwq29
En fait j'ai essayé de coder sur une page vierge la liste déroulante et ca marche. Je crois que dans mon fichier il y a tellement de codes que du coup il ne doit pas être au bon endroit.
En tout cas merci pour l'aide que vous m'avez deja apportée.
Alors :
- ouvres ton classeur
- tapes ALT+F11
- sur la gauche, double clic sur le petit dossier "Feuilles"
- tu vois 2 UserForm,
- Double clic sur DateS, ton Userform s'affiche
- double clic dans le fond de l'userform, le code apparait.
- supprimes la ligne : Private Sub UserForm_Click()
- assures toi que toutes tes procédures commençant par un "Private Sub machin()" se terminent toutes par un "end Sub"
- Tu as placé le code donné précédemment dans une procédure : "Private Sub dateS_Initialize()". C'est pas bien. Remplace "Private Sub dateS_Initialize()" par : "Private Sub UserForm_Initialize()"
- tu as oublié un "s" au bout de Columns dans .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
- ouvres ton classeur
- tapes ALT+F11
- sur la gauche, double clic sur le petit dossier "Feuilles"
- tu vois 2 UserForm,
- Double clic sur DateS, ton Userform s'affiche
- double clic dans le fond de l'userform, le code apparait.
- supprimes la ligne : Private Sub UserForm_Click()
- assures toi que toutes tes procédures commençant par un "Private Sub machin()" se terminent toutes par un "end Sub"
- Tu as placé le code donné précédemment dans une procédure : "Private Sub dateS_Initialize()". C'est pas bien. Remplace "Private Sub dateS_Initialize()" par : "Private Sub UserForm_Initialize()"
- tu as oublié un "s" au bout de Columns dans .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row