Extraire des données les classer et les trier

Le
Pierre F.
Bonjour à toutes et à tous!

Dans un tableau, je souhaiterais, en fonction de données situées dans 4
colonnes, récupérer les données correspondantes d'une 5e colonne et
trier le tout!

Voir le cjoint, ce sera plus clair :-)

http://cjoint.com/?gCrGzxZhHW

Macro ou soluce par fomule me conviendront; je suis totalement perdu :-(

Merci

Cordialement,
Pierre F.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
laurent.daures
Le #10480591
Bonjour,
Il faut tout simplement utiliser les filtres.
Pour cela,
sélectionne les cellules D5 à M5
Puis dans le menu Données
Filtrer
Filtre Automatique
Tu as désormais de D5 à M5 des petites flèches, ce sont les filtres.
Là , en manipulant le filtre (la petite flèche) de chaque colonne,
tu peux filtrer uniquement Den chu ou Aeg,
en pensant à "ouvrir" le filtre à chaque fois
que tu en actives un sur une autre colonne, car les filtrages
s'"additionnent".
Amicalement
Siesting Hoax

"Pierre F." c92dc$486659d1$55da2ea5$
Bonjour à toutes et à tous!

Dans un tableau, je souhaiterais, en fonction de données situées dans 4
colonnes, récupérer les données correspondantes d'une 5e colonne... et
trier le tout!

Voir le cjoint, ce sera plus clair :-)

http://cjoint.com/?gCrGzxZhHW

Macro ou soluce par fomule me conviendront; je suis totalement perdu :-(

Merci

Cordialement,
Pierre F.


Pierre F.
Le #10482731
laurent.daures a écrit :
Bonjour,
Il faut tout simplement utiliser les filtres.
Pour cela,
sélectionne les cellules D5 à M5
Puis dans le menu Données
Filtrer
Filtre Automatique
Tu as désormais de D5 à M5 des petites flèches, ce sont les filtres.
Là , en manipulant le filtre (la petite flèche) de chaque colonne,
tu peux filtrer uniquement Den chu ou Aeg,
en pensant à "ouvrir" le filtre à chaque fois
que tu en actives un sur une autre colonne, car les filtrages
s'"additionnent".



Merci pour ta réponse...

mais ça ne me me convient pas car les Aeg, ... peuvent apparaître dans
plusieurs colonnes et je souhaite une "addition" des résultats alors que
les filtres successifs amènent une soustraction :-)

En fait, je souhaite recomposer tout le tableau, mais sous une autre
forme...
Comme il comporte en réalité 130 lignes, je cherche à trouver une
solution "rapide".

Cordialement,
Pierre F.
isabelle
Le #10486011
bonjour Pierre,

par exemple sélectionne A2 de Feuil2 et exécute cette macro.
on pourrait aussi ajouter une autre boucle pour traiter toutes les informations de la colonne A de Feuil2

Sub Macro1()
x = 1
For Each c In Sheets("Feuil1").Range("E6:E17,G6:G17,I6:I17,K6:K17,M6:M17")
If LCase(c) = LCase(Sheets("Feuil2").Range("A" & Selection.Row)) Then
x = x + 1
Sheets("Feuil2").Cells(Selection.Row, x) = Sheets("Feuil1").Range("B" & c.Row)
End If
Next
End Sub

isabelle

Pierre F. a écrit :
Bonjour à toutes et à tous!

Dans un tableau, je souhaiterais, en fonction de données situées dans 4
colonnes, récupérer les données correspondantes d'une 5e colonne... et
trier le tout!

Voir le cjoint, ce sera plus clair :-)

http://cjoint.com/?gCrGzxZhHW

Macro ou soluce par fomule me conviendront; je suis totalement perdu :-(

Merci

Cordialement,
Pierre F.


Pierre F.
Le #10487101
isabelle a écrit :
bonjour Pierre,

par exemple sélectionne A2 de Feuil2 et exécute cette macro.
on pourrait aussi ajouter une autre boucle pour traiter toutes les
informations de la colonne A de Feuil2

Sub Macro1()
x = 1
For Each c In Sheets("Feuil1").Range("E6:E17,G6:G17,I6:I17,K6:K17,M6:M17")
If LCase(c) = LCase(Sheets("Feuil2").Range("A" & Selection.Row)) Then
x = x + 1
Sheets("Feuil2").Cells(Selection.Row, x) = Sheets("Feuil1").Range("B" &
c.Row)
End If
Next
End Sub




Merci pour cette macro... mais elle ne fonctionne pas chez moi (Rien ne
se passe)

Pourquoi faut-il sélectionner A2 de feuil2 ?

Cordialement,
Pierre F.
MichDenis
Le #10488221
2 façons illustrées pour obtenir ce que tu désires
à l'aide de ce fichier exemple utilisant le filtre élaboré

http://cjoint.com/?gCvGSaVGzD



"Pierre F." Bonjour à toutes et à tous!

Dans un tableau, je souhaiterais, en fonction de données situées dans 4
colonnes, récupérer les données correspondantes d'une 5e colonne... et
trier le tout!

Voir le cjoint, ce sera plus clair :-)

http://cjoint.com/?gCrGzxZhHW

Macro ou soluce par fomule me conviendront; je suis totalement perdu :-(

Merci

Cordialement,
Pierre F.
laurent.daures
Le #10488211
Bonsoir,
si tu veux, voici une macro adaptée à ton fichier joint,

Sub extraire_prof()
Range("N1:N500").ClearContents
For Each prof In Array("aeg", "gui", "tra", "rod", "chu", _
"dup", "rac", "den", "mad", "sch")
For Each cell In Range("E6:M17")
If UCase(cell.Value) = UCase(prof) Then
If nom_élève = "" Then
nom_élève = Range("A" & cell.Row) & _
" " & Range("B" & cell.Row)
Else
nom_élève = nom_élève & ", " & _
Range("A" & cell.Row) & " " & Range("B" & cell.Row)
End If
End If
Next
Range("N500").End(xlUp)(2) = prof & " : " & _
nom_élève
nom_élève = ""
Next
End Sub


Elle te donne tous les profs suivis des noms et prénoms de la ligne.
A toi de l'adapter si tu veux, en ajoutant des noms dans l'Array Prof.
Amicalement
Siesting Hoax

"Pierre F." 6be00$486682c4$55da2ea5$
laurent.daures a écrit :
Bonjour,
Il faut tout simplement utiliser les filtres.
Pour cela,
sélectionne les cellules D5 à M5
Puis dans le menu Données
Filtrer
Filtre Automatique
Tu as désormais de D5 à M5 des petites flèches, ce sont les filtres.
Là , en manipulant le filtre (la petite flèche) de chaque colonne,
tu peux filtrer uniquement Den chu ou Aeg,
en pensant à "ouvrir" le filtre à chaque fois
que tu en actives un sur une autre colonne, car les filtrages
s'"additionnent".



Merci pour ta réponse...

mais ça ne me me convient pas car les Aeg, ... peuvent apparaître dans
plusieurs colonnes et je souhaite une "addition" des résultats alors que
les filtres successifs amènent une soustraction :-)

En fait, je souhaite recomposer tout le tableau, mais sous une autre
forme...
Comme il comporte en réalité 130 lignes, je cherche à trouver une solution
"rapide".

Cordialement,
Pierre F.


Pierre F.
Le #10489361
MichDenis a écrit :
2 façons illustrées pour obtenir ce que tu désires
à l'aide de ce fichier exemple utilisant le filtre élaboré

http://cjoint.com/?gCvGSaVGzD



Mille mercis à tous; vos macros et filtres élaborés m'ont débloqués; je
peux enfin avancer :-)

Cordialement,
Pierre F.
Youky
Le #10854081
Voici qui répond parfaitement à la demande.....
Me suis pris le bec avec . . . .
c'est pourquoi je l'envoie même tardivement
Youky

Sub bibi()
Feuil2.Cells.Clear
lg = Feuil1.[A65536].End(3).Row
Feuil2.Select
For k = 5 To 13 Step 2
x = [B65000].End(3).Row + 1
Range(Cells(x, 2), Cells(lg - 6 + x, 2)).Value =
Feuil1.Range(Feuil1.Cells(6, k), Feuil1.Cells(lg, k)).Value
Next
[A1] = "NOM": [B1] = "NOM"
For k = 2 To [B65000].End(3).Row
Cells(k, 2) = UCase(Cells(k, 2))
Next
Columns("B:B").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Columns( _
"A:A"), Unique:=True
Columns("B:B").Clear
x = 2
For youky = 2 To Feuil2.[A65000].End(3).Row
col = 2
nom = Feuil2.Cells(youky, 1)
For lig = 6 To lg
For k = 5 To 14 Step 2
If UCase(Feuil1.Cells(lig, k)) = nom Then
Feuil2.Cells(x, col) = Feuil1.Cells(lig, 2)
col = col + 1
Exit For
End If
Next
Next
x = x + 1
Next
Feuil2.Range("A:A").Font.Bold = True
End Sub
Pierre F.
Le #10854861
Youky a écrit :
Voici qui répond parfaitement à la demande.....
Me suis pris le bec avec . . . .
c'est pourquoi je l'envoie même tardivement
Youky



Merci pour le temps passé et pour le projet qui est tip top!
Désolé pour la prise de bec :-)
Le fait que la macro élimine les doublons, c'est vraiment génial!
J'ai pu ajouter un petit module de tri à la fin et l'affaire est belle.

Cordialement,
Pierre F.

Sub bibi()
Feuil2.Cells.Clear
lg = Feuil1.[A65536].End(3).Row
Feuil2.Select
For k = 5 To 13 Step 2
x = [B65000].End(3).Row + 1
Range(Cells(x, 2), Cells(lg - 6 + x, 2)).Value =
Feuil1.Range(Feuil1.Cells(6, k), Feuil1.Cells(lg, k)).Value
Next
[A1] = "NOM": [B1] = "NOM"
For k = 2 To [B65000].End(3).Row
Cells(k, 2) = UCase(Cells(k, 2))
Next
Columns("B:B").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Columns( _
"A:A"), Unique:=True
Columns("B:B").Clear
x = 2
For youky = 2 To Feuil2.[A65000].End(3).Row
col = 2
nom = Feuil2.Cells(youky, 1)
For lig = 6 To lg
For k = 5 To 14 Step 2
If UCase(Feuil1.Cells(lig, k)) = nom Then
Feuil2.Cells(x, col) = Feuil1.Cells(lig, 2)
col = col + 1
Exit For
End If
Next
Next
x = x + 1
Next
Feuil2.Range("A:A").Font.Bold = True
End Sub




Publicité
Poster une réponse
Anonyme