Rechercher : dans
Par :

Liste déroulante excel macro

Dernière réponse le 31 mar 2009 à 21:15:28 Laurence, le 29 mar 2009 à 14:23:04 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 3.0.7

Meilleures réponses pour « liste déroulante excel macro » dans :
Listes déroulantes simples avec Excel VoirDans votre tableau, vous souhaitez insérer un texte ou une valeur choisi dans une liste (déroulante). vous créez votre liste, ligne aprés ligne, sur votre feuille en cours ou sur une autre feuille du classeur en cours. vous la nommez : INSERTION...
Liste déroulante avec saisie semi automatique pour EXCEL VoirC'est une procédure qui demande un investissement personnel et qui n'est pas nécessairement facile à comprendre et à réaliser dès la première fois. Afin de rendre cette astuce facile à utiliser, nous allons employer les plages et les formules...

1

Bidouilleu_R, le 30 mar 2009 à 13:37:28

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+

Répondre à Bidouilleu_R

2

Laurence, le 30 mar 2009 à 14:21:53

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

Répondre à Laurence

3

Laurence, le 30 mar 2009 à 14:33:45

Bonjour,
Je ne comprends pas cette macro, elle sert à quoi?
Merci. A+

Répondre à Laurence

4

Bidouilleu_R, le 30 mar 2009 à 15:19:55

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.

Répondre à Bidouilleu_R

5

Bidouilleu_R, le 30 mar 2009 à 15:24:10

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

Répondre à Bidouilleu_R

6

Laurence , le 30 mar 2009 à 18:40:58

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 ;-)

Répondre à Laurence

7

Bidouilleu_R, le 31 mar 2009 à 08:52:55

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

Répondre à Bidouilleu_R

8

Laurence, le 31 mar 2009 à 14:39:14

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.do­c
Je pense qu'avec ça , la bonne explication ne va pas tarder.
A bientôt, :o)

Répondre à Laurence

9

Bidouilleu_R, le 31 mar 2009 à 15:14:13

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

Répondre à Bidouilleu_R

10

Laurence, le 31 mar 2009 à 15:44:38

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.do­c
Merci.

Répondre à Laurence

11

Bidouilleu_R, le 31 mar 2009 à 15:55:29

Peux-tu m'envoyer ton fichier excel même épurer
ce sera plus rapide

si tu le veux bien.

R

Répondre à Bidouilleu_R

12

Laurence, le 31 mar 2009 à 16:13:19
Répondre à Laurence

13

Bidouilleu_R, le 31 mar 2009 à 16:22:06

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.

Répondre à Bidouilleu_R

14

Laurence, le 31 mar 2009 à 16:29:32

Merci du fond du cœur ma question est résolue. Bravo & MERCI, c'est formidable. ;-) YES!!!!

Répondre à Laurence

15

Laurence, le 31 mar 2009 à 17:28:22

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.do­c
Merci

Répondre à Laurence

16

Le Pingou, le 31 mar 2009 à 17:40:23

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 : http://cjoint.com/?ecr5mblvYM
Salutations.
Jean-Pierre

Répondre à Le Pingou

17

Laurence, le 31 mar 2009 à 18:43:54

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

Répondre à Laurence

18

 Le Pingou, le 31 mar 2009 à 21:15:28

Merci, de rien.
Salutations.
Jean-Pierre

Répondre à Le Pingou