Séparer termes souligné cellule VBA / scinder colonne

Bonjour,

J'aurai besoin d'aide concernant une macro que je n'arrive pas à réaliser sur mon fichier excel :

Il s'agit de scinder une colonne en 2 autres colonnes.

La colonne initiale est constituée de cellules dont une partie du texte est soulignée, l'objectif étant de séparer dans chaque cellule ce qui est souligné de ce qui ne l'est pas afin de l'envoyer par la suite dans les deux colonnes "filles".

Ci-joint un exemple illustrant le type de fichier que je manipule..

25exemple.xlsx (9.62 Ko)

Merci d'avance pour votre coopération.

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...

Un grand merci !!!!

En revanche , je n'arrive pas à comprendre pourquoi lorsque tout le texte est souligné (cela arrive dans certaines cellules), il n'y a aucun renvoi dans les colonnes filles (cellules vides)...

Re,

C'est logique, ma condition est : dès qu'un caractère n'est pas souligné, donc si tout est souligné, la condition n'est pas remplie.

Il faudrait envisagé 4 cas :

1 tout est souligné

2 rien n'est souligné

3 début souligné / fin non souligné

4 début non souligné / fin souligné

Mais ton exemple n'en montrait qu'un...

Rechercher des sujets similaires à "separer termes souligne vba scinder colonne"