Liste déroulante excel macro

Résolu/Fermé
Laurence - 29 mars 2009 à 14:23
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 11 janv. 2010 à 13:24
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
A voir également:

11 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
30 mars 2009 à 13:37
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+
0
Bonjour, Bidouilleu_R
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
0
Bonjour,
Je ne comprends pas cette macro, elle sert à quoi?
Merci. A+
0
Bonjour Bidouilleu_R,

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
0
nono_yoyo Messages postés 2 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 11 janvier 2010
11 janv. 2010 à 12:14
Rebonjour,

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
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426 > nono_yoyo Messages postés 2 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 11 janvier 2010
11 janv. 2010 à 12:26
Bonjour,
Non se n'est pas possible, le code fonctionne aussi pour la version 2003.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
30 mars 2009 à 15:19
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.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
30 mars 2009 à 15:24
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
0
Bonjour,Bidouilleu_R
La macro fonctionne bien, cela fait plaisir; seulement quand j'ajoute un mot, il ne se met pas dans l'ordre alphabétique .
Déjà merci pour cette macro qui va me simplifier la vie.
A bientôt Bidouilleu_R ;-)
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
31 mars 2009 à 08:52
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
0

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)
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
31 mars 2009 à 15:14
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
0
Bonjour, Bidouilleu_R
j'ai placée la nouvelle macro et j'ai eu un problème de tri en A1 feuil2,
http://www.cijoint.fr/cjlink.php?file=cj200903/cijlekLd4G.doc
Merci.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
31 mars 2009 à 15:55
peux-tu m'envoyer ton fichier excel même épurer
ce sera plus rapide

si tu le veux bien.

R
0
Sans problème. le voici :
http://www.cijoint.fr/cjlink.php?file=cj200903/cij3zKFKAZ.xls
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
31 mars 2009 à 16:22
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.
0
Merci du fond du cœur ma question est résolue. Bravo & MERCI, c'est formidable. ;-) YES!!!!
0
Désolé, mais ma liste déroulante a un problème quand j'ai voulue ajouter des noms en feuil2.
La liste déroulante B2 dans la feuil1 n'a que 4 noms.
http://www.cijoint.fr/cjlink.php?file=cj200903/cijlTks96H.doc
Merci
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
31 mars 2009 à 17:40
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
0
Bonjour, Le Pingou
A la rescousse et grand merci pour le classeur qui va bien avec. Ça me plait. ;-)
Merci Le Pingou et Bidouilleu_R
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
31 mars 2009 à 21:15
Merci, de rien.
0