Synthese de données
Bonjour,
Je suis Anikordi, je suis consultant sur la Défense et je suis un gros boulet en Excel.
Aujourd'hui j'ai besoin de faire un comparatif entre un recueil de données et du paramétrage. C'est assez dense en terme de données et chronophage à mourrir si je le fais manuellement.
J'ai créer un petit fichier à utiliser comme exemple pour comprendre ce dont j'ai besoin, j'ai essayé d'etre le plus explicte possible mais si ce n'est pas intelligible je serais ravi de vous apporter des clarifications.
Grossièrement, j'ai plusieurs onglets avec des en tetes communs (M. Bernard; Mlle Dupont; Mme Durant ...) dans la colonne A, j'ai des données variés. Lorsque je met un "X" dans la colonne de (m. Bernard) cela veut dire que la donnée en A est un attribut de monsieur bernard. si il n'y a rien, et bien ... on s'en fous !
Chaqe onglet de mon tableur a les memes en-tetes mais pas les memes valeurs dans la colonne A.
Je souhaite donc avoir dans un dernier onglet tous les attributs (valeurs de la colonne A qui match avec un X) de chacun des en-tetes sous forme de liste.
Voici un fichier exemple avec des données complètement ... mais qui a la forme de ce que j'ai et à la fin de ce que je souhaiterais.
https://www.excel-pratique.com/~files/doc/Exemple_de_tableau.xls
Je tiens à remercier par avance toute personne qui aurait la gentillesse de participer à ce post en esperant pouvoir renvoyer la pareille.
Bonsoir AniKordi et toi le Forum,
Pour une première visite parmi vous, je vous propose ce fichier:
https://www.excel-pratique.com/~files/doc/Copie_de_Exemple_de_tableau.zip
Je n'ai pas réussi à faire sans macro. Il faut donc les activer.
Bonne soirée
A+
Marco
Bonjour à toute et à tous,
Marco57
Zoli travail, javais cherché de mon côté, sans succès.
De plus ta solution vas m'être utile.
Cdlt,
.
Merci beaucoup de votre collaboration.
Je vais peut etre abusé mais comme je le précisais dans mon premier post, je suis une super quiche et du coup je ne sais pas quoi faire avec le fichier de marco !
désolé ...
Bonjour anikordi ,
Dans ton fichier d’origine recopie le code contenu dans la feuille "ce que je souhaite avoir "
Sur ton onglet, clic droit, visualiser le code.
Private Sub Worksheet_Activate() 'Marco57 le 24/02/09
Const LigEnTete = 1, Texte = "x" 'Constantes à définir au départ
Dim Ws As Worksheet, Zone As Range, Z2 As Range, Cel As Range, Nom As Range, CelNom As Range, C As Range, Col&, DerLig&, Tablo
Application.ScreenUpdating = 0 'Fige l'affichage
'Définit la zone dans laquelle se trouve les entêtes
Set Zone = Range(Cells(1, 1), Cells(LigEnTete, Application.Columns.Count).End(xlToLeft))
For Each Cel In Zone 'Boucle sur chacune des cellules de la Zone
If Cel <> "" Then 'si la valeur est non vide
Range(Cel.Offset(1, 0), Cel.Offset(1, 0).End(xlDown)).ClearContents 'efface les données précédentes éventuelles
ReDim Tablo(0) 'vide et redimensionne le tablo à zéro
For Each Ws In ThisWorkbook.Worksheets 'boucle sur chacune des feuilles
If Not Ws Is ActiveSheet Then 'si ce n'est pas la feuille active alors
With Ws.Rows(LigEnTete) 'dans la zone d'entête, cherche la cellule contenant le nom contenu dans la cellule Cel
Set C = .Find(Cel.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not C Is Nothing Then 's'il l'a trouve
'cherche son numéro de colonne (Col) et détermine la dernière ligne non vide de cette colonne (DerLig)
Col = C.Column: DerLig = Ws.Cells(Application.Rows.Count, Col).End(xlUp).Row '
For Each CelNom In Ws.Range(Ws.Cells(LigEnTete + 1, Col), Ws.Cells(DerLig, Col)) 'Boucle sur chacune de ces cellules
If CelNom = Texte Then 'si son contenu est celui recherché
Tablo(UBound(Tablo)) = CelNom.EntireRow.Cells(1) 'ajoute à la variable Tablo la valeur en colonne 1
ReDim Preserve Tablo(UBound(Tablo) + 1) 'agrandit le tablo sans l'effacer pour le prochain ajout éventuel
End If
Next CelNom
End If
End With
End If
Next Ws
Range(Cel.Offset(1, 0), Cel.Offset(UBound(Tablo), 0)) = WorksheetFunction.Transpose(Tablo) 'reporte les données enregistrées
End If
Next Cel
Application.ScreenUpdating = 1 'libère l'affichage
End SubCdlt,
.