Liste déroulante excel macro
Résolu
Laurence
-
Bidouilleu_R Messages postés 1181 Date d'inscription Statut Membre Dernière intervention -
Bidouilleu_R Messages postés 1181 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aurai besoin d'une aide sur excel 07, j'ai une cellule feuil1 B2 avec une liste déroulante.
La liste déroulante se trouve en feuil2 Colonne A.
J'aimerai une macro qui ajouterai un nouveau nom dans la liste déroulante si celui-ci n'y est pas.
Merci
J'aurai besoin d'une aide sur excel 07, j'ai une cellule feuil1 B2 avec une liste déroulante.
La liste déroulante se trouve en feuil2 Colonne A.
J'aimerai une macro qui ajouterai un nouveau nom dans la liste déroulante si celui-ci n'y est pas.
Merci
A voir également:
- Liste déroulante excel macro
- Liste déroulante excel - Guide
- Excel liste déroulante en cascade - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Word et excel gratuit - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
11 réponses
je te propose cette solution.
1) nomme la liste en feuille2 : Ici je l'appelle "listeperso"
2) click sur Données / (outils de données) validation de données,
Choisit : Autoriser : liste
et source =listeperso puis OK
sur la feuille 2 place un bouton
et recopie ce code
Sub miseàjourliste()
'
' test Macro
'
' Attention je considère que tu mets un titre en A1
'la liste commence en A2....
Sheets("Feuil2").Select
Range("A1").Select
nbligne = Range(Selection, Selection.End(xlDown)).Rows.Count ' le nombre de ligne
Range("A1").Offset(1, 0).Resize(nbligne, 1).Name = "listeperso" ' de A2 à Axx
Range("A1").Select
End Sub
A+
1) nomme la liste en feuille2 : Ici je l'appelle "listeperso"
2) click sur Données / (outils de données) validation de données,
Choisit : Autoriser : liste
et source =listeperso puis OK
sur la feuille 2 place un bouton
et recopie ce code
Sub miseàjourliste()
'
' test Macro
'
' Attention je considère que tu mets un titre en A1
'la liste commence en A2....
Sheets("Feuil2").Select
Range("A1").Select
nbligne = Range(Selection, Selection.End(xlDown)).Rows.Count ' le nombre de ligne
Range("A1").Offset(1, 0).Resize(nbligne, 1).Name = "listeperso" ' de A2 à Axx
Range("A1").Select
End Sub
A+
la macro vient simplement actualiser un élément de la liste que tu aurais ajouter
manuellement.
comme tu n'as pas demandé que l'ajout se fasse par la macro...je ne l'ai pas fait.
Sheets("Feuil2").Select : sélectionne la feuille pour que tu suives....
Range("A1").Select : sélectionne la cellule A1nbligne = Range(Selection, Selection.Endnbligne = nbligne=Range(Selection, Selection.End(xlDown)).Rows.Count ' compte le nombre de ligne et garde le résultat dans nbligne
Range("A1").Offset(1, 0).Resize(nbligne, 1).Name = "listeperso" ' de A2 à Axx renomme la zonne de liste
Range("A1").Select
j'espère avoir répondu à ta question, sinon précise ton besoin.
manuellement.
comme tu n'as pas demandé que l'ajout se fasse par la macro...je ne l'ai pas fait.
Sheets("Feuil2").Select : sélectionne la feuille pour que tu suives....
Range("A1").Select : sélectionne la cellule A1nbligne = Range(Selection, Selection.Endnbligne = nbligne=Range(Selection, Selection.End(xlDown)).Rows.Count ' compte le nombre de ligne et garde le résultat dans nbligne
Range("A1").Offset(1, 0).Resize(nbligne, 1).Name = "listeperso" ' de A2 à Axx renomme la zonne de liste
Range("A1").Select
j'espère avoir répondu à ta question, sinon précise ton besoin.
Bonjour Laurence,
Je précise que je suis débutante sur excel 07
1) nomme la liste en feuille2 : Ici je l'appelle "listeperso" et je valide C'est juste
je me mets où sur la feuil2? Non ! sur la feuille1 c'est là que tu voulais utiliser ta liste!!!
car quand je fais validation de données j'ai ce message " Impossible de trouver une plage nommée que vous avez spécifié.
je pense que tu as oublié le signe = dans la zone source il faut mettre =listeperso
Je précise que je suis débutante sur excel 07
1) nomme la liste en feuille2 : Ici je l'appelle "listeperso" et je valide C'est juste
je me mets où sur la feuil2? Non ! sur la feuille1 c'est là que tu voulais utiliser ta liste!!!
car quand je fais validation de données j'ai ce message " Impossible de trouver une plage nommée que vous avez spécifié.
je pense que tu as oublié le signe = dans la zone source il faut mettre =listeperso
Bonjour Laurence, un petit plus
je t'ai ajouté un filtre tri de A à Z ( j'aurai dû y penser, mais je m'attache à répondre aux questions)
Attention toutefois, ta liste ne doit pas contenir de cellules vides
sinon tu n'auras qu'une partie de la liste.
A+
La macro ci-dessous.
Sub miseàjourliste()
'
' miseàjourliste .... avec un tri alphabétique A..Z
'
'
Sheets("Feuil2").Select
Range("A1").Select
nbligne = Range(Selection, Selection.End(xlDown)).Rows.Count
Range("A1").Offset(1, 0).Resize(nbligne, 1).Name = "listeperso"
Range("A1").Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear 'supprime les filtres
'prépare le filtre
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add Key:=Range("A2:A" & nbligne), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'applique le filtre
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:A" & nbligne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' fin du filtre
End Sub
je t'ai ajouté un filtre tri de A à Z ( j'aurai dû y penser, mais je m'attache à répondre aux questions)
Attention toutefois, ta liste ne doit pas contenir de cellules vides
sinon tu n'auras qu'une partie de la liste.
A+
La macro ci-dessous.
Sub miseàjourliste()
'
' miseàjourliste .... avec un tri alphabétique A..Z
'
'
Sheets("Feuil2").Select
Range("A1").Select
nbligne = Range(Selection, Selection.End(xlDown)).Rows.Count
Range("A1").Offset(1, 0).Resize(nbligne, 1).Name = "listeperso"
Range("A1").Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear 'supprime les filtres
'prépare le filtre
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add Key:=Range("A2:A" & nbligne), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'applique le filtre
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:A" & nbligne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' fin du filtre
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour, Bidouilleu_R :-)
J'ai ajoutée la nouvelle macro et cela n'a pas marché.
donc au lieu d'un long discours, je vais mettre un lien ; ce sera plus simple.
http://www.cijoint.fr/cjlink.php?file=cj200903/cijskC6CnW.doc
Je pense qu'avec ça , la bonne explication ne va pas tarder.
A bientôt, :o)
J'ai ajoutée la nouvelle macro et cela n'a pas marché.
donc au lieu d'un long discours, je vais mettre un lien ; ce sera plus simple.
http://www.cijoint.fr/cjlink.php?file=cj200903/cijskC6CnW.doc
Je pense qu'avec ça , la bonne explication ne va pas tarder.
A bientôt, :o)
Désolé Laurence j'ai fait une erreur sur la feuille ( ta liste est en feuille 2)
je l'ai placé sur la feuille 1.
C'est de ma faute.
teste et tiens moi au courant.
Sub miseàjourliste()
'
' miseàjourliste .... avec un tri alphabétique A..Z
'
'
Sheets("Feuil2").Select
Range("A1").Select
nbligne = Range(Selection, Selection.End(xlDown)).Rows.Count
Range("A1").Offset(1, 0).Resize(nbligne, 1).Name = "listeperso"
Range("A1").Select
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Clear 'supprime les filtres
'prépare le filtre
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add Key:=Range("A2:A" & nbligne), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'applique le filtre
With ActiveWorkbook.Worksheets("Feuil2").Sort
.SetRange Range("A1:A" & nbligne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
je l'ai placé sur la feuille 1.
C'est de ma faute.
teste et tiens moi au courant.
Sub miseàjourliste()
'
' miseàjourliste .... avec un tri alphabétique A..Z
'
'
Sheets("Feuil2").Select
Range("A1").Select
nbligne = Range(Selection, Selection.End(xlDown)).Rows.Count
Range("A1").Offset(1, 0).Resize(nbligne, 1).Name = "listeperso"
Range("A1").Select
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Clear 'supprime les filtres
'prépare le filtre
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add Key:=Range("A2:A" & nbligne), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'applique le filtre
With ActiveWorkbook.Worksheets("Feuil2").Sort
.SetRange Range("A1:A" & nbligne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
décale ta liste en feuille 2 ajoute une entête coms noms
et c'est tout
le tri et le reste fonctionne.
je dois partir à plus.
et c'est tout
le tri et le reste fonctionne.
je dois partir à plus.
Bonjour Laurence,
Vous avez une erreur dans le nom sous Validation de données il faut [=listeperso] .... il manque le (e) après list.
Note: juste pour le plaisir : https://www.cjoint.com/?ecr5mblvYM
Salutations.
Jean-Pierre
Vous avez une erreur dans le nom sous Validation de données il faut [=listeperso] .... il manque le (e) après list.
Note: juste pour le plaisir : https://www.cjoint.com/?ecr5mblvYM
Salutations.
Jean-Pierre
Je précise que je suis débutante sur excel 07
1) nomme la liste en feuille2 : Ici je l'appelle "listeperso" et je valide
je me mets où sur la feuil2? car quand je fais validation de données j'ai ce message " Impossible de trouver une plage nommée que vous avez spécifié.
Merci
Je ne comprends pas cette macro, elle sert à quoi?
Merci. A+
J'ai la même question sauf que je travaille avec EXCEL2003, pouvez-vous me donner une solution qui correspondant au excel 2003, svp. Merci.
Si vous pouvez m'envoyer par mail, ca sera gentil. Mon mail: siwei_huang@hotmail.fr
J'ai le même problème sauf je travaille avec excel03, j'ai testé votre macro, mais ca ne marche pas avec excel03, pouvez-vous me donner la macro pour excel 2003, svp. merci. Mon mail: siwei_huang@hotmail.fr
Non se n'est pas possible, le code fonctionne aussi pour la version 2003.