'fixer tablo
tablo = Sheets("Critère").Range("B1:M7")
For n = LBound(tablo, 2) + 1 To UBound(tablo, 2)
If tablo(1, n) = "" Then tablo(1, n) = tablo(1, n - 1)
Next
tablo2 = Sheets("Données").Range("A1:O" & Sheets("Données").Range("A" & Rows.Count).End(xlUp).Row)
For n = LBound(tablo2, 2) + 1 To UBound(tablo2, 2)
If tablo2(1, n) = "" Then tablo2(1, n) = tablo2(1, n - 1)
Next
For n = LBound(tablo2, 1) + 2 To UBound(tablo2, 1)
For m = 6 To UBound(tablo2, 2)
If tablo2(n, m) = "x" Then
For p = LBound(tablo, 2) To UBound(tablo, 2)
If tablo(1, p) = tablo2(1, m) And tablo(2, p) = tablo2(2, m) Then
For q = 1 To 5
If tablo2(n, q) = "x" Then
For s = LBound(tablo, 1) To UBound(tablo, 1)
If tablo(s, 1) = tablo2(2, q) Then
tot = tot + tablo(s, p)
End If
Next
End If
Next
End If
Next
End If
Next
Range("P" & n) = tot
tot = 0
Next
End Sub
For n = LBound(tablo, 2) + 1 To UBound(tablo, 2) 'n vaut la plage (c1:m7), ou "tablo" sans la primère colonne
If tablo(1, n) = "" Then tablo(1, n) = tablo(1, n - 1) 'balayer la 1er ligne de la plage n de droite à gauche??
Next
tablo2 = Sheets("Données").Range("A1:O" & Sheets("Données").Range("A" & Rows.Count).End(xlUp).Row) 'compte les lignes
For n = LBound(tablo2, 2) + 1 To UBound(tablo2, 2) '"tablo2" sans la premère colonne
If tablo2(1, n) = "" Then tablo2(1, n) = tablo2(1, n - 1) 'balayer "tablo2" si case vide (de droite à gauche?)
Next
For n = LBound(tablo2, 1) + 2 To UBound(tablo2, 1) 'tableau deux sans les deux premières lignes
For m = 6 To UBound(tablo2, 2) 'partie façade, vitrage et toiture ?
If tablo2(n, m) = "x" Then 'repère les "x" facade, vitre et toit
For p = LBound(tablo, 2) To UBound(tablo, 2)
If tablo(1, p) = tablo2(1, m) And tablo(2, p) = tablo2(2, m) Then '??
For q = 1 To 5 'partie date (5 valeurs possibles)
If tablo2(n, q) = "x" Then 'repère les "x" des dates
For s = LBound(tablo, 1) To UBound(tablo, 1)
If tablo(s, 1) = tablo2(2, q) Then 'fait correspondre les dates
tot = tot + tablo(s, p) '??
Range("P" & n) = tot '???
tot = 0 '???
'repetition des termes titres (facade vitrage etc)
For n = LBound(critere, 2) + 1 To UBound(critere, 2)
If critere(1, n) = "" Then critere(1, n) = critere(1, n - 1)
Next
'mise sous forme de tableau des données (de A1 à O et a la derniere ligne non vide de la colonne A)
donnees = Sheets("Données").Range("A1:O" & Sheets("Données").Range("A" & Rows.Count).End(xlUp).Row)
'ici encore repetition des titres
For n = LBound(donnees, 2) + 1 To UBound(donnees, 2)
If donnees(1, n) = "" Then donnees(1, n) = donnees(1, n - 1)
Next
For n = LBound(critere, 2) + 1 To UBound(critere, 2)
If critere(1, n) = "" Then critere(1, n) = critere(1, n - 1)
Next