Bonjour Cmesnier, bonjour le forum,
Essaie comme ça :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Set O = Worksheets("Feuil1") 'définit l'onglet O
DL = O.Range("A" & Application.Rows.Count).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
For I = 1 To DL 'boucle 1 : sur toutes les lignes de 1 à DL
If O.Cells(I, 1).Value <> "" Then 'condition 1 : si la cellule ligne I colonne 1 n'est pas vide
For J = 1 To Len(O.Cells(I, 1).Value) 'boucle 2 sur tous les caractères de la valeur de la cellule ligne I colonne 1 (=A)
If O.Cells(I, 1).Characters(Start:=J, Length:=1).Font.Underline = xlUnderlineStyleNone Then 'condition 2 : si le Jième caractère n'est pas souligné
O.Cells(I, 2).Value = Trim(Left(O.Cells(I, 1), J - 1)) 'renvoie dans la cellule colonne B les J-1 premiers caractères de la valeur de la cellule
O.Cells(I, 3).Value = Trim(Mid(O.Cells(I, 1).Value, J)) 'renvoie dans la cellule colonne C les dernières caractères (à partir de J) de la valeur de la cellule
'TRIM supprime les éventuels espaces avant et après
Exit For 'sort de la boucle 2
End If 'fin de la condition 2
Next J 'prochain caratère de la boucle 2
End If 'fin de la condition 1
Next I 'prochaine ligne de la boucle 1
MsgBox "Traitement terminé !"
End Sub
Si ta plage de données est longue ça peut prendre pas mal de temps, alors j'ai mis un message à la fin...