Bonjour,
Un collègue est venu me poser une question, j'y ai trouvé une réponses mais je me demandais si il existait plus simple, d'où ma venue ici:
Un logiciel sort des données numériques au format Excel, une partie de ces données sont concaténés avec l'espace pour séparateur (" "), mais l'espace est aussi le séparateur des milliers, du coup il n'arrive pas a déconcaténer correctement ces données.
Heureusement j'ai pu exploiter le fait que toutes les données sont au format numériques avec une virgule et deux chiffres derrière (sauf un unique mot au début de chaque chaine dont on se débarrasse facilement).
J'ai donc fait une macro qui cherche les virgules puis sépare la chaine suivant la position de la virgule +3 caractères
Ce qui donne:
Mais j'ai l'impression que je me complique la vie pour pas grand chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Sub separation_resnum() col = Val(InputBox("Quel est le numéro de la colonne ? (ex:2 pour la colonne B)")) For j = 1 To Cells(Rows.Count, col).End(xlUp).Row mot = Cells(j, col).Value i = 1 pos = 0 pos2 = 8 pos = InStr(pos + 1, mot, ",") Cells(j, col + 1) = Left(Cells(j, col), 6) Do Until pos = 0 Cells(j, col + i + 1) = Val(Replace(Mid(mot, pos2, pos + 3 - pos2), ",", ".")) 'si résultat nombre 'Cells(j, col + i + 1) = Trim(Mid(mot, pos2, pos + 3 - pos2)) 'si résultats texte pos2 = pos + 3 pos = InStr(pos + 1, mot, ",") i = i + 1 Loop Next j End Sub
Est-ce possible de faire plus simple, notamment en utilisant split ?
Merci d'avance.
Partager