A voir également:
- [Excel] Liste déroulante de longueur variable
- Liste déroulante excel - Guide
- Excel liste déroulante en cascade - Guide
- Longueur largeur hauteur ✓ - Forum Loisirs / Divertissements
- Si et excel - Guide
8 réponses
G.David
Messages postés
768
Date d'inscription
vendredi 21 novembre 2003
Statut
Membre
Dernière intervention
1 juin 2020
203
5 juil. 2006 à 16:04
5 juil. 2006 à 16:04
essayes ceci dans ta validation de liste
=INDIRECT(CONCATENER("i1:i";NBVAL(I:I)))
cette formule suppose que les données sont mise dans la colonne i
Cordialement
G.David
=INDIRECT(CONCATENER("i1:i";NBVAL(I:I)))
cette formule suppose que les données sont mise dans la colonne i
Cordialement
G.David
Armojax
Messages postés
1860
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
2 octobre 2024
1 528
5 juil. 2006 à 15:28
5 juil. 2006 à 15:28
Re,
Pour le fun, je te propose le petit code ci-dessous...
- La liste saisie par les utilisateurs se trouve dans la colonne 1 de Feuil1.
- La liste triée tirée de la saisie se trouve en colonne 1 de Feuil2.
- Je nomme Liste cette liste triée, utilisée pour la validation des données.
Dans le code VBA de la feuille Feuil2, je mets ce code :
- copie de la liste saisie
- tri alpha
- recalcul de la plage nommée Liste.
Regarde si ça te convient...
Pour le fun, je te propose le petit code ci-dessous...
- La liste saisie par les utilisateurs se trouve dans la colonne 1 de Feuil1.
- La liste triée tirée de la saisie se trouve en colonne 1 de Feuil2.
- Je nomme Liste cette liste triée, utilisée pour la validation des données.
Dans le code VBA de la feuille Feuil2, je mets ce code :
Private Sub Worksheet_Activate() Dim DerLig As Long Application.ScreenUpdating = False Sheets("Feuil1").Columns(1).Cells.Copy Cells(1, 1).Select ActiveSheet.Paste On Error Resume Next ActiveWorkbook.Names("Liste").Delete On Error GoTo 0 DerLig = Columns(1).End(xlDown).Row Range(Cells(1, 1), Cells(DerLig, 1)).Sort Key1:=Range(Cells(1, 1), Cells(1, 1)), Order1:=xlAscending Range(Cells(1, 1), Cells(1, 1)).Select ActiveWorkbook.Names.Add Name:="Liste", RefersToR1C1:="=R1C1:R" & DerLig & "C1" Application.ScreenUpdating = True End SubA chaque fois qu'on va sur la feuille Feuil2, la macro s'exécute automatiquement :
- copie de la liste saisie
- tri alpha
- recalcul de la plage nommée Liste.
Regarde si ça te convient...
Armojax
Messages postés
1860
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
2 octobre 2024
1 528
5 juil. 2006 à 13:47
5 juil. 2006 à 13:47
Bonjour thibane,
Tu peux encadrer la liste par une marque de début et une marque de fin. Exemple :
Inconvénient (?) : les marques de début/fin apparaissent dans la liste déroulante.
Avantage : tu peux ajouter ou supprimer de nouvelles valeurs n'importe où sans rien changer.
Tu peux aussi ne pas mettre les marques si elles te gênent. Dans ce cas, il faut seulement prendre des précautions pour un ajout en tête et en queue de liste.
- pour ajouter en tête : copier la ligne de tête, et insérer la copie derrière. Ensuite on utilise la ligne de tête pour mettre la nouvelle entrée.
- pour ajouter en queue : copier la ligne de fin, et insérer la copie devant. Ensuite on utilise la ligne de fin pour mettre la nouvelle entrée.
Tu peux encadrer la liste par une marque de début et une marque de fin. Exemple :
____DEB tata tete titi tutu tyty ____FINTu donnes un nom à ta liste(Maliste par exemple), et tu indiques =Maliste dans la validation de données.
Inconvénient (?) : les marques de début/fin apparaissent dans la liste déroulante.
Avantage : tu peux ajouter ou supprimer de nouvelles valeurs n'importe où sans rien changer.
Tu peux aussi ne pas mettre les marques si elles te gênent. Dans ce cas, il faut seulement prendre des précautions pour un ajout en tête et en queue de liste.
- pour ajouter en tête : copier la ligne de tête, et insérer la copie derrière. Ensuite on utilise la ligne de tête pour mettre la nouvelle entrée.
- pour ajouter en queue : copier la ligne de fin, et insérer la copie devant. Ensuite on utilise la ligne de fin pour mettre la nouvelle entrée.
Merci pour ta réponse Arjomax.
Cependant, j'ajoute quelques précisions concernant le fait de ne pas mettre de marques.
Pour simplifier, la feuille 1 contient dans la premiere colonne une liste de noms.
Cette liste est modifiable par l'utilisateur : il peut ajouter un nom et les données sont triées par ordre alphabétique.
Cette liste est recopiée dans la feuille 2 (où doit se trouver ma liste déroulante) pour me simplifier. Et donc la liste déroulante va chercher dans cette liste de nom recopiés.
Donc dans tous les cas, la longueur de la liste source est "modifiée par le bas", la cellule supérieure restant fixe. Je ne sais pas si je suis clair là... Donc pas d'ajout en tete...
PS: en tout cas, l'histoire des marques fonctionnent, merci bcp!
il faut juste que je rajoute un peu de code pour trouver l'endroit où rajouter "FIN" mais c'est pas compliqué.
Cependant, j'ajoute quelques précisions concernant le fait de ne pas mettre de marques.
Pour simplifier, la feuille 1 contient dans la premiere colonne une liste de noms.
Cette liste est modifiable par l'utilisateur : il peut ajouter un nom et les données sont triées par ordre alphabétique.
Cette liste est recopiée dans la feuille 2 (où doit se trouver ma liste déroulante) pour me simplifier. Et donc la liste déroulante va chercher dans cette liste de nom recopiés.
Donc dans tous les cas, la longueur de la liste source est "modifiée par le bas", la cellule supérieure restant fixe. Je ne sais pas si je suis clair là... Donc pas d'ajout en tete...
PS: en tout cas, l'histoire des marques fonctionnent, merci bcp!
il faut juste que je rajoute un peu de code pour trouver l'endroit où rajouter "FIN" mais c'est pas compliqué.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est ce qu'il me fallait merci.
Par contre, dans ton code, je ne vois "Feuill2" nulle part.. Ou est-ce qu'il y a changement de page??
Par contre, dans ton code, je ne vois "Feuill2" nulle part.. Ou est-ce qu'il y a changement de page??
Armojax
Messages postés
1860
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
2 octobre 2024
1 528
5 juil. 2006 à 15:40
5 juil. 2006 à 15:40
Ce code se trouvant dans le code VBA de Feuil2, et s'exécutant quand Feuil2 est activée, toutes les plages nommées sans précision se rapportent à cette feuille.
Armojax
Messages postés
1860
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
2 octobre 2024
1 528
>
thibane
5 juil. 2006 à 16:29
5 juil. 2006 à 16:29
Voici le code.
Tu peux aussi essayer la solution de G.David ci-dessous...
Tu peux aussi essayer la solution de G.David ci-dessous...
Private Sub Worksheet_Activate() Dim DerLig As Long Application.ScreenUpdating = False DerLig = Sheets("Feuil1").Columns(1).End(xlDown).Row Columns(1).Cells.ClearContents Sheets("Feuil1").Range("A3:A" & DerLig).Copy Cells(1, 1).Select ActiveSheet.Paste On Error Resume Next ActiveWorkbook.Names("Liste").Delete On Error GoTo 0 Range(Cells(1, 1), Cells(DerLig - 2, 1)).Sort Key1:=Range(Cells(1, 1), Cells(1, 1)), Order1:=xlAscending Range(Cells(1, 1), Cells(1, 1)).Select ActiveWorkbook.Names.Add Name:="Liste", RefersToR1C1:="=R1C1:R" & DerLig - 2 & "C1" Application.ScreenUpdating = True End Sub
Entièrement satisfait. Merci à vous!
une autre solution pourra aussi faire l'affaire
en définissant la variable ma_liste sur une zone de cellule selon la taille souhaité exp [A8:A200]
la formule suivante dans l'onglet validation permet de faire apparaitre la zone [A8:A200] en tant que liste déroulante tout en supprimant les blancs de la fin [du dernier champs non vide jusqu'au champ A200].
[=DECALER(ma_liste;0;0;NBval(ma_liste))]
si saturation et besoin y a d'agrandir la taille. Redéfinir la variable ma_liste sur une zone plus grande.
une solution générique consiste à utiliser toute la colonne .
définir ma_liste sur [A:A]
en définissant la variable ma_liste sur une zone de cellule selon la taille souhaité exp [A8:A200]
la formule suivante dans l'onglet validation permet de faire apparaitre la zone [A8:A200] en tant que liste déroulante tout en supprimant les blancs de la fin [du dernier champs non vide jusqu'au champ A200].
[=DECALER(ma_liste;0;0;NBval(ma_liste))]
si saturation et besoin y a d'agrandir la taille. Redéfinir la variable ma_liste sur une zone plus grande.
une solution générique consiste à utiliser toute la colonne .
définir ma_liste sur [A:A]
Bonjour,
Je suis moi aussi confronté à un petit souci.
J'ai deux liste sur 2 feuilles différentes, une avec les coordonées de 150 personnes, et l'autre avec des informations relative à leur travail. Ce que je cherche c'est faire une liste déroulante sur chaque nom, sur la deuxième feuille afin de ne pas toujours aller chercher les informations sur l'autre feuille.
Je ne sait pas si j'ai été assez claire.
Si vous pouviez m'aider.
Merci
Je suis moi aussi confronté à un petit souci.
J'ai deux liste sur 2 feuilles différentes, une avec les coordonées de 150 personnes, et l'autre avec des informations relative à leur travail. Ce que je cherche c'est faire une liste déroulante sur chaque nom, sur la deuxième feuille afin de ne pas toujours aller chercher les informations sur l'autre feuille.
Je ne sait pas si j'ai été assez claire.
Si vous pouviez m'aider.
Merci