Sub CreerBase()
Dim nlig&, ncoupe&, i&, j&, k&, n&, commun, coupe, s
With Feuil1
'nbr de lignes
nlig = .Cells(.Rows.Count, "a").End(xlUp).Row
If nlig = 2 Then
MsgBox "Aucune donnée sur la feuille " & .Name & " -> ECHEC !", vbCritical
End: End If
'nbr de coupe
ncoupe = Application.WorksheetFunction.CountIf(.Rows(1), "Coupe *")
If ncoupe = 0 Then
MsgBox "Aucune coupe sur la feuille " & .Name & " -> ECHEC !", vbCritical
End: End If
Application.ScreenUpdating = False
With Feuil2
'effacer ancienne DataBase
.Range("a2:j" & .Rows.Count).ClearContents
'Recréer la base
n = 1
For i = 3 To nlig
' valeurs communes à une ligne de champ
commun = Feuil1.Cells(i, "a").Resize(, 4).Value
For k = 1 To ncoupe
' valeur pour la coupe n° k
coupe = Feuil1.Cells(i, "e").Offset(, 5 * (k - 1)).Resize(, 5).Value
' concatenation ddes valeurs de la coupe n° k est vide
s = "": For j = 1 To 5: s = s & coupe(1, j): Next j: s = Trim(s)
' si la ligne de la coupe n° k est vide, on ne rajoute pas de ligne à DataBase
If s <> "" Then
n = n + 1
.Cells(n, 1).Resize(, 4) = commun
.Cells(n, "e") = k
.Cells(n, "f").Resize(, 5) = coupe
End If
Next k
Next i
End With
End With
MsgBox "Actualisation terminée :-)"
End Sub
Sub Actualiser()
CreerBase
ActiveWorkbook.RefreshAll
End Sub