Obtenir 1 liste ordre alphab. à partir de 2 listes différentes

Résolu/Fermé
soda127 Messages postés 2 Date d'inscription lundi 24 décembre 2012 Statut Membre Dernière intervention 25 décembre 2012 - 24 déc. 2012 à 18:20
soda127 Messages postés 2 Date d'inscription lundi 24 décembre 2012 Statut Membre Dernière intervention 25 décembre 2012 - 25 déc. 2012 à 21:09
Bonjour à tous,
Voici mon souci : sur Excel 2007, à partir de 2 listes de noms et prénoms sur 2 colonnes chacune, j'aimerais obtenir une 3ème colonne reprenant tous les noms/prénoms par ordre alphabétique. Les deux listes initiales étant sur feuilles différentes. J'ai trouvé une formule matricielle sur le net [{=ListeTriée("liste1, liste2")}], mais cela ne marche que sur la feuille exemple du net et encore avec seulement 1 colonne par liste.
Voyez-vous comment m'en sortir ?
Je vous en remercie par avance

6 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié par Patrice33740 le 24/12/2012 à 18:49
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
0
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.
0
Raymond PENTIER Messages postés 58396 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 avril 2024 17 094
24 déc. 2012 à 23:51
Pourquoi as-tu besoin de deux listes sur des feuilles distinctes ?
0
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
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
25 déc. 2012 à 11:15
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.
0
Bonjour,
Je sais bien que cette solution est possible mais ce n'est pas ça que je recherche car tout mon système est basé sur les listes de classes. Merci quand même
Cordialement.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
25 déc. 2012 à 12:10
Re,

L'un n'empêche pas l'autre, c'est juste un concept de base de données : une seule base et plusieurs requêtes
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
25 déc. 2012 à 15:18
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
0
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
0
soda127 Messages postés 2 Date d'inscription lundi 24 décembre 2012 Statut Membre Dernière intervention 25 décembre 2012
25 déc. 2012 à 21:09
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
0