Option Explicit
Sub Validation(vb As Byte)
'Macro appellée par les boutons de Validation
'elle exige 1 paramètre en entrée, un entier compris entre 0 et 255 (byte)
Dim oWsD As Worksheet
Dim oWsT As Worksheet
Dim vLLE As Long 'La variable est un entier (compris entre -2 147 483 648 et 2 147 483 647)
Dim i As Byte
Dim j As Byte
'initialisation des objets feuille
Set oWsD = Worksheets("Comparaisons")
Set oWsT = Worksheets("Compilation trajets")
'détermination de la ligne ou il faudra écrire
'rows.count est le nombre de ligne d'un fichier excel (65536 version 2003)
'avec end(xlup) on part donc de la cellule B65536 (Cells(Rows.Count, 2)) et on remonte vers le haut jusqu'a la première cellule non vide rencontrée
'on ajoute 1 pour être sur une ligne vide
vLLE = oWsT.Cells(Rows.Count, 2).End(xlUp).Row + 1
'remplissage colonnes 2 à 7 et format date pour 3 d'entre elles
'la ligne format pourra être effacé si le tableau est correctement formatté
oWsT.Cells(vLLE, 2) = oWsD.Cells(4, 3) '"Compilation trajets" colonne 2 = "Comparaisons" C4
oWsT.Cells(vLLE, 3) = oWsD.Cells(4, 5)
Range(oWsT.Cells(vLLE, 4), oWsT.Cells(vLLE, 6)).NumberFormat = "d-mmm" '"Compilation trajets" zone colonnes D:F prend ce format de date
oWsT.Cells(vLLE, 4) = oWsD.Cells(6, 3)
oWsT.Cells(vLLE, 5) = oWsD.Cells(8, 3)
oWsT.Cells(vLLE, 6) = oWsD.Cells(8, 5)
oWsT.Cells(vLLE, 7) = oWsD.Cells(10, 3)
'remplissage colonnes 8 à 22, uniquement les couts et transports
'on boucle car on a repéré un schéma répétitif dans les colonnes couts, temps à remplir
For i = 1 To 4 '4 lignes de Voiture à Avion
For j = 1 To 2 'la zone à écrire fait 2 colonnes
Select Case i 'pour distinguer différents cas
Case 1 To 3 'dans le cas Voiture, Bus, Train
oWsT.Cells(vLLE, 4 * i + 3 + j) = oWsD.Cells(14 + i, j + 1)
Case 4 'dans le cas de l'avion on a ajouté 1 à cause de la colonne classe qui nous décale
oWsT.Cells(vLLE, 4 * i + 4 + j) = oWsD.Cells(14 + i, j + 1)
End Select
Next j
Next i
'remplissage colonnes 25 et 26
oWsT.Cells(vLLE, 25) = oWsD.Cells(21, 1)
oWsT.Cells(vLLE, 26) = oWsD.Cells(vb, 1) 'ici on utilise le paramètre d'entrée de la macro
'libération des objets feuilles
Set oWsD = Worksheets("Comparaisons")
Set oWsT = Worksheets("Compilation trajets")
End Sub