Liste déroulante VBA
Résolu/Fermé
lucieaup
-
22 nov. 2012 à 15:26
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 23 nov. 2012 à 14:09
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 23 nov. 2012 à 14:09
A voir également:
- Vba inputbox liste déroulante
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Google sheet liste déroulante - Accueil - Guide bureautique
- Supprimer une liste déroulante excel - Forum Word
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
8 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 755
Modifié par pijaku le 22/11/2012 à 15:38
Modifié par pijaku le 22/11/2012 à 15:38
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...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 755
22 nov. 2012 à 16:18
22 nov. 2012 à 16:18
1- logiciel?
2- qu'appelle tu "formulaire"?
2- qu'appelle tu "formulaire"?
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...).
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 755
22 nov. 2012 à 16:34
22 nov. 2012 à 16:34
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....
lucieaup
Messages postés
17
Date d'inscription
jeudi 22 novembre 2012
Statut
Membre
Dernière intervention
8 avril 2020
22 nov. 2012 à 17:54
22 nov. 2012 à 17:54
Je vous mettrai bien mon fichier en pièce jointe pour que vous compreniez mieux mais je ne trouve pas comment faire...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 755
23 nov. 2012 à 09:40
23 nov. 2012 à 09:40
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
lucieaup
Messages postés
17
Date d'inscription
jeudi 22 novembre 2012
Statut
Membre
Dernière intervention
8 avril 2020
23 nov. 2012 à 13:33
23 nov. 2012 à 13:33
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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 755
23 nov. 2012 à 13:59
23 nov. 2012 à 13:59
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
lucieaup
Messages postés
17
Date d'inscription
jeudi 22 novembre 2012
Statut
Membre
Dernière intervention
8 avril 2020
23 nov. 2012 à 14:09
23 nov. 2012 à 14:09
Ca marche!!!
Merci beaucoup c'est génial! Vous venez de mettre fin à des heures de dure labeur!
Merci beaucoup de votre patience!
Merci beaucoup c'est génial! Vous venez de mettre fin à des heures de dure labeur!
Merci beaucoup de votre patience!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 755
23 nov. 2012 à 14:09
23 nov. 2012 à 14:09
De rien.
A+
A+