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.

capture

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 Sub

Cdlt,

.

Rechercher des sujets similaires à "synthese donnees"