Obtenir 1 liste ordre alphab. à partir de 2 listes différentes
Résolu
soda127
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
soda127 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
soda127 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Obtenir 1 liste ordre alphab. à partir de 2 listes différentes
- Liste déroulante excel - Guide
- Excel trier par ordre croissant chiffre - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Liste déroulante en cascade - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
6 réponses
Deux simples copier / coller devrait faire l'affaire pour mettre les deux listes à la suite l'une de l'autre sur une troisième feuille. Il n'y aura plus qu'a trier.
Patrice
Patrice
Merci de cette réponse, mais je vois que je me suis mal exprimé. J'aimerais que lorsque j'ajoute un nom dans une des deux listes initiales, cela change automatiquement la liste finale. Voilà où est le problème.
Merci quand même.
Merci quand même.
Pourquoi as-tu besoin de deux listes sur des feuilles distinctes ?
Bonjour Raymond
Je suis directeur d'école, j'ai des listes d'enfants par classe et je voudrais une liste globale d'école qui change automatiquement si les listes de classes changent. J'ai pris l'exemple de 2 listes pour simplifier. S'il y a une formule, après je l'adapterai au nombre de listes.
Joyeux Noël
Je suis directeur d'école, j'ai des listes d'enfants par classe et je voudrais une liste globale d'école qui change automatiquement si les listes de classes changent. J'ai pris l'exemple de 2 listes pour simplifier. S'il y a une formule, après je l'adapterai au nombre de listes.
Joyeux Noël
Bonjour,
Dans ce cas il est bien plus simple d'utiliser une seule liste globale avec une colonne "Classe". Un filtre permettra d'avoir la liste de chaque classe.
Dans ce cas il est bien plus simple d'utiliser une seule liste globale avec une colonne "Classe". Un filtre permettra d'avoir la liste de chaque classe.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
par respect des intervenants tu pourrais avoir la politesse de signaler avoir posté à nouveau dans un autre forum...
https://www.excel-downloads.com/threads/generer-une-liste-alphabetique-automatique-a-partir-de-2-listes.198238/
eric
par respect des intervenants tu pourrais avoir la politesse de signaler avoir posté à nouveau dans un autre forum...
https://www.excel-downloads.com/threads/generer-une-liste-alphabetique-automatique-a-partir-de-2-listes.198238/
eric
Bonjour Eric,
Nouveau sur les forums, je suis désolé d'avoir négligé cet aspect des choses. Je ne savais pas. Si j'ai choqué quelqu'un, qu'il veuille m'en excuser. Je te remercie de m'avoir appris cette règle de base. J'en profite pour remercier encore ceux qui se sont penchés sur mon problème.
Cordialement
Nouveau sur les forums, je suis désolé d'avoir négligé cet aspect des choses. Je ne savais pas. Si j'ai choqué quelqu'un, qu'il veuille m'en excuser. Je te remercie de m'avoir appris cette règle de base. J'en profite pour remercier encore ceux qui se sont penchés sur mon problème.
Cordialement
Bonjour à tous,
Suite à ma demande sur votre forum et sur un autre (sic, Eric !!!), voici la réponse obtenue pour mon problème
Noms de champ (par exemple)
noms =Feuil1!$A$2:$A$7;Feuil1!$A$10:$A$15;Feuil1!$A$19:$A$24
prénoms =Feuil1!$B$2:$B$7;Feuil1!$B$10:$B$15;Feuil1!$B$19:$B$24
Dans la colonne H3:H20, noter :{=ListeTriée(noms)}
Dans les cases G:G20, noter : =RechercheMZ(H3; noms; prénoms)
Par contre pour que ça marche, il faut créer un module (Alt+F11) puis Insertion/Module et Copier/Coller du code Suivant :
Code :
Function ListeTriée(champ)
Application.Volatile
Set mondico = CreateObject("Scripting.Dictionary")
n = 0
For i = 1 To champ.Areas.Count ' parcours des zones du champ multi-zones
n = n + champ.Areas(i).Count
For j = 1 To champ.Areas(i).Count ' parcours des éléments d'une zone
If champ.Areas(i)(j) <> "" And champ.Areas(i)(j) <> "." Then
x = champ.Areas(i)(j)
mondico.Item(x) = x ' ajout au dictionnaire (doublons éliminés)
End If
Next j
Next i
temp = mondico.items 'transfert dictionnaire dans une table temp()
Call Tri(temp, LBound(temp), UBound(temp)) ' tri optionnel
Dim d(): ReDim d(n) ' table pour retour
For i = LBound(temp) To UBound(temp): d(i) = temp(i): Next i
ListeTriée = Application.Transpose(d)
End Function
Sub Tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
tmp = a(g): a(g) = a(d): a(d) = tmp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub
Function RechercheMZ(valCherchée, champRech As Range, ChampRetour)
Application.Volatile
For i = 1 To champRech.Areas.Count
For j = 1 To champRech.Areas(i).Count
If valCherchée = champRech.Areas(i)(j) Then
RechercheMZ = ChampRetour.Areas(i)(j)
Exit Function
End If
Next j
Next i
RechercheMZ = "pas trouvé"
End Function
Merci à JB qui m'a trouvé la solution.
En espérant que cela pourra aider autant que cela m'a aidé.
Cordialement
Joyeux Noël
Soda127
Suite à ma demande sur votre forum et sur un autre (sic, Eric !!!), voici la réponse obtenue pour mon problème
Noms de champ (par exemple)
noms =Feuil1!$A$2:$A$7;Feuil1!$A$10:$A$15;Feuil1!$A$19:$A$24
prénoms =Feuil1!$B$2:$B$7;Feuil1!$B$10:$B$15;Feuil1!$B$19:$B$24
Dans la colonne H3:H20, noter :{=ListeTriée(noms)}
Dans les cases G:G20, noter : =RechercheMZ(H3; noms; prénoms)
Par contre pour que ça marche, il faut créer un module (Alt+F11) puis Insertion/Module et Copier/Coller du code Suivant :
Code :
Function ListeTriée(champ)
Application.Volatile
Set mondico = CreateObject("Scripting.Dictionary")
n = 0
For i = 1 To champ.Areas.Count ' parcours des zones du champ multi-zones
n = n + champ.Areas(i).Count
For j = 1 To champ.Areas(i).Count ' parcours des éléments d'une zone
If champ.Areas(i)(j) <> "" And champ.Areas(i)(j) <> "." Then
x = champ.Areas(i)(j)
mondico.Item(x) = x ' ajout au dictionnaire (doublons éliminés)
End If
Next j
Next i
temp = mondico.items 'transfert dictionnaire dans une table temp()
Call Tri(temp, LBound(temp), UBound(temp)) ' tri optionnel
Dim d(): ReDim d(n) ' table pour retour
For i = LBound(temp) To UBound(temp): d(i) = temp(i): Next i
ListeTriée = Application.Transpose(d)
End Function
Sub Tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
tmp = a(g): a(g) = a(d): a(d) = tmp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub
Function RechercheMZ(valCherchée, champRech As Range, ChampRetour)
Application.Volatile
For i = 1 To champRech.Areas.Count
For j = 1 To champRech.Areas(i).Count
If valCherchée = champRech.Areas(i)(j) Then
RechercheMZ = ChampRetour.Areas(i)(j)
Exit Function
End If
Next j
Next i
RechercheMZ = "pas trouvé"
End Function
Merci à JB qui m'a trouvé la solution.
En espérant que cela pourra aider autant que cela m'a aidé.
Cordialement
Joyeux Noël
Soda127