Liste déroulante excel macro

Résolu
Laurence -  
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
A voir également:

11 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
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
Laurence
 
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
Laurence
 
Bonjour,
Je ne comprends pas cette macro, elle sert à quoi?
Merci. A+
0
nono_yoyo
 
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   Statut Membre Dernière intervention  
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458 > nono_yoyo Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   295
 
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   Statut Membre Dernière intervention   295
 
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
Laurence
 
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   Statut Membre Dernière intervention   295
 
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
Laurence
 
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   Statut Membre Dernière intervention   295
 
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
Laurence
 
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   Statut Membre Dernière intervention   295
 
peux-tu m'envoyer ton fichier excel même épurer
ce sera plus rapide

si tu le veux bien.

R
0
Laurence
 
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   Statut Membre Dernière intervention   295
 
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
Laurence
 
Merci du fond du cœur ma question est résolue. Bravo & MERCI, c'est formidable. ;-) YES!!!!
0
Laurence
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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
Laurence
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Merci, de rien.
0