Sub Transform()
'On va utiliser deux noms pour désigner les feuilles de départ (FeuilleSource) et d'arrivée (FeuilleCible)
Dim FeuilleSource, FeuilleCible As Worksheet
'On détermine quelles feuilles du classeur vont servir de source et de cible
Set FeuilleSource = ThisWorkbook.Sheets("Base")
Set FeuilleCible = ThisWorkbook.Sheets("Résultat")
'Les variables LigneFeuillexxx vont servir à savoir quelle est la ligne que l'on traite dans chacune des feuilles
LigneFeuilleSource = 2
LigneFeuilleCible = 2
'On va faire une boucle jusqu'à ce qu'on rencontre une cellule vide en première colonne de la feuille source
While FeuilleSource.Cells(LigneFeuilleSource, 1).Value <> ""
'Pour chaque ligne de la feuille source, on va regarder les colonnes de 3 à 6
For ColonneFeuilleSource = 3 To 6
'Sur la ligne en cours de la feuille source, on va regarder s'il y a une valeur dans la colonne que l'on est en train de traiter
If FeuilleSource.Cells(LigneFeuilleSource, ColonneFeuilleSource).Value <> "" Then
's'il y en a une, on remplit la ligne en cours de la feuille cible avec les informations nécessaires
FeuilleCible.Cells(LigneFeuilleCible, 1).Value = FeuilleSource.Cells(LigneFeuilleSource, 1).Value
FeuilleCible.Cells(LigneFeuilleCible, 2).Value = FeuilleSource.Cells(LigneFeuilleSource, 2).Value
FeuilleCible.Cells(LigneFeuilleCible, 3).Value = FeuilleSource.Cells(1, ColonneFeuilleSource).Value
FeuilleCible.Cells(LigneFeuilleCible, 4).Value = FeuilleSource.Cells(LigneFeuilleSource, ColonneFeuilleSource).Value
'puis on passe à la ligne suivante de la feuille cible
LigneFeuilleCible = LigneFeuilleCible + 1
End If
'et on attaque la colonne suivante
Next ColonneFeuilleSource
'une fois la ligne en cours de la feuille source traitée, on passe à la suivante
LigneFeuilleSource = LigneFeuilleSource + 1
Wend
End Sub