1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| Option Explicit
Sub TransposeBase()
Dim CellInA As Range
Dim Destination As Range
Dim OffsetCol As Variant
'On pointe la cellule de destination
Set Destination = Feuil3.Range("A1")
'On commence par boucler sur le contenu de la colonne A
For Each CellInA In Feuil1.Range("A2", Feuil1.Cells(Feuil1.Rows.Count, "A").End(xlUp))
'On Boucle ensuite sur les 4 cellules de la ligne
'On utilise Offset pour se décaler de la cellule de départ (ici CellInA)
'On note dans un array les offset dans l'ordre ou doivent apparaitre les données
'2: on se décale de 2 cellules à droite en partant de A donc C (N° de rue)
'3: on se décale de 3 cellules à droite en partant de A donc D (Nom)
'0: on se décale de 0 cellule à droite en partant de A donc A (Rue)
'...
For Each OffsetCol In Array(2, 3, 0, 1)
'On place la valeur dans destination
Destination.Value = CellInA.Offset(, CInt(OffsetCol)).Value
'On pointe la cellule de destination suivante
Set Destination = Destination.Offset(1)
Next
'On saute deux cellules de destination, on pointe la 3ème
Set Destination = Destination.Offset(3)
Next
End Sub |
Partager