Explication code VBA

Bonjour

Pourriez-vous m'expliquer la macro suivate:

Sub test()
Dim c As Range, x As Variant, j As Byte, i As Byte
For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)
    x = Split(c.Value, " ")
    j = 1
    For i = UBound(x) - 7 To UBound(x)
        c.Offset(0, j).Value = x(i)
        j = j + 1
    Next i
Next c
End Sub

Merci

gobernador a écrit :

Bonjour

Pourriez-vous m'expliquer la macro suivate:

bonjour,

quelques commentaires dans le code pour expliquer.

Sub test()
Dim c As Range, x As Variant, j As Byte, i As Byte

'on lance une boucle pour parcourir une à une  toutes les cellules de la colonne A, jusqu'à la dernière ligne utilisée. 
' la cellule est identifiée par la lettre c
For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)

' on isole chaque séquence de caractères délimitée par un blanc (=un mot) dans un tableau x
    x = Split(c.Value, " ")
    j = 1
' on fait l'hypothèse qu'il y a au moins 7 mots dans le tableau
' dans ce code apparemment, seuls les 7 derniers mots nous intéressent.

' Ubound(x), indique le nombre de mots trouvés (=dimension du tableau x)
' pour avoir tous les mots et éviter une erreur s'il y a moins de 7 mots
' remplacer l'instruction par for i=Lbound(x) to Ubound(x)
    For i = UBound(x) - 7 To UBound(x)
' on copie le mot i du tableau x sur la même ligne (offset(0, ) que la cellule selectionnée mais dans la colonne qui se trouve j position(s) à droite
        c.Offset(0, j).Value = x(i)
' on incrémente la position de la colonne pour la copie suivante
        j = j + 1
    Next i
Next c
End Sub

Merci h2so4 pour ces explications claires et précises.

Je t'en suis tres reconnaissant.

Rechercher des sujets similaires à "explication code vba"