creer un tableau de synthèse

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

  • test.xlsm
    25.5 KB · Affichages: 45

sousou

XLDnaute Barbatruc
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
 

manu_tella

XLDnaute Junior
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
 

chris

XLDnaute Barbatruc
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:

manu_tella

XLDnaute Junior
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

  • test2.xlsm
    18.9 KB · Affichages: 30

sousou

XLDnaute Barbatruc
Bonsoir
Pas vraiment finalisé,
Mais tu pourras sans aucun doute arrangé cela
Ici j'utilise un nouvelle feuille, et je fabrique le tableau dans cette feuille.
A adapter, j'ai pas vraiment le temps
 

Pièces jointes

  • Copie de test2.xlsm
    27.7 KB · Affichages: 33

Discussions similaires

Réponses
3
Affichages
230

Statistiques des forums

Discussions
311 711
Messages
2 081 794
Membres
101 817
dernier inscrit
carvajal