creer un tableau de synthèse

  • Initiateur de la discussion Initiateur de la discussion manu_tella
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

manu_tella

XLDnaute Junior
Bonjour à tous,

Je souhaiterai compiler dans un tableau de synthèse le contenu de 2 feuilles.
une feuille avec les besoins
une feuille avec les essais et en face les besoins couverts par chaque essai
une feuille de synthèse
colonne A: la liste de tous les besoins
ligne1: la liste de tous les essais

le but est de remplir le tableau en balayant chaque ligne de la feuille essai. Ebidouillant un peu j'ai crée un petit bout de code mais après tout se complique....
Un essai peu couvrir plusieurs besoins, un besoin peut etre couvert par plusieurs essais et là je suis perdu!

J'ai cherché quelque chose de similaire dans l'existant mais je n'ai pas trouvé .
je mets le fichier en PJ, pourriez vous m'aider à rendre tout ca un peu plus robuste?

d'avance merci pour vos réponses et pour votre aide.

manu
 

Pièces jointes

Bonjour
La structure de tes données devrait être différente.
Dans la feuille essai:
Soit tu mets
essai1 | besoin1
essai1 | besoin3
essai2 | besoin1
Soit tu mets au moins un séparateur
essai1 | besoin1,besoin3
essai2 | besoin1
Si non il est difficile de distinguer les besoins
 
bonjour,

malheureusement, je suis tributaire du format des données d'entrées.
c'est pour cette raison que j'ai fais un .find sur xlPart et non xlWhole mais malheureusement en faisant ca certains cas passent à la trappe.
Je n'arrive pas non plus a faire la boucle qui permettrai de lister tous les essais par besoin.

encore merci

manu
 
Bonjour à tous

Code:
Option Explicit
Sub Matrice()

Dim i As Long, j As Integer, y As Long
Dim Besoin As Range, Essai As String
Dim DecoupB
Worksheets("Matrice").Cells.ClearContents
Worksheets("Matrice").Range("A1:A" & Worksheets("Besoin").Cells(Rows.Count, 1).End(xlUp).Row).Value = _
    Worksheets("Besoin").Range("A1:A" & Worksheets("Besoin").Cells(Rows.Count, 1).End(xlUp).Row).Value
With Worksheets("Essai")
    y = .Cells(Rows.Count, 1).End(xlUp).Row
    Dim LesEssais
    LesEssais = WorksheetFunction.Transpose(.Range(.Cells(2, 1), .Cells(y + 1, 1)))
End With

With Worksheets("Matrice")
    .Range(Cells(1, 2), Cells(1, y + 1)).Value = LesEssais
    For i = 2 To y
        Essai = Worksheets("Essai").Cells(i, 1)
        DecoupB = Split(Worksheets("Essai").Cells(i, 2), Chr(10))
        For j = 0 To UBound(DecoupB)
            Set Besoin = .Range("A:A").Find(DecoupB(j))
            If Not Besoin Is Nothing Then .Cells(Besoin.Row, i) = "X"
        Next j
    Next i
End With

End Sub

Edit : à noter qu'à partir d'Excel 2010 c'est facilement faisable sans VBA par PowerQuery
 
Dernière édition:
bon finalement pas si resolu que ca...
j'adore l'idée de lister la premier colonne et la premiere ligne de manière automatique. partant de là, j'ai peut etre un peu trop simplifier les feuilles d'entrées... les lignes des essais et des besoins peuvent etre espacées de lignes vides (que je ne peut pas supprimer pour autant car il peut y avoir des choses dans les autres colonnes)...

je mets en PJ quelque chose de plus proche de mes données d'entrées réelles..; en esperant ne rien avoir oublié qui pourrait poser probleme ensuite.

d'avance merci

manu
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
24
Affichages
333
Retour