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
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
A voir également:
- Obtenir 1 liste ordre alphab. à partir de 2 listes différentes
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste de diffusion whatsapp - Guide
- Word numéro de page 1/2 - Guide
- Chaque fichier en ligne sur le web a un chemin d’accès sur un serveur. c’est le cas du fichier du logo présent sur la page de cette ville. quel est le chemin de ce fichier à partir de la racine du site ? - Forum Graphisme
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
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
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.
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
24 déc. 2012 à 23:51
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
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
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.
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.
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
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
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
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
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
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
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
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
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