CdXie
Messages postés4Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention22 juillet 2005
-
22 juil. 2005 à 18:07
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
22 juil. 2005 à 18:40
Hi !
Je souhaite récupérer dans une chaîne de caractères (variable type
string) des coordonnées X,Y,Z séparées par une virgule (cf. exemple
ci-dessous).
GOTO / 399.99900,
.00000,
3.00000
PT 57;
Existe-t'il en VBA Excel une
commande équivalente à sscanf de Matlab qui permet d'extraire
directement les valeurs numériques 399.999, 0 et 3 en utilisant la
virgule comme sépérateur ?
>> Ligne = 'GOTO /
399.99900, .00000,
3.00000
PT 57;'
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 22 juil. 2005 à 18:40
Salut
Ta chaine originale séparant chaque chiffre avec des virgules, c'est facile à séparer :
-1- Remplacer les multiples espaces par un seul :
Do While Instr(Ligne, " ") <> 0 ' 2 espaces entre les "
Ligne = Replace(Ligne, " ", " ") ' remplace 2 espaces par un seul
Loop
-2- Dissocier chaque donnée séparée par des virgules :
Dim Tableau() As String
Tableau = Split(Ligne, ",")
Dans Tableau(0), tu as "'GOTO / 399.99900"
Dans Tableau(1), tu as " .00000"
Dans Tableau(2), tu as " 3.00000 PT 57;"
-3- Récupération de chaque donnée :
Valeur1 = Trim(Split(Tableau(0), " ")(2))
Split(...)(2) est le même Split que plus haut, mais on ne prend que l'élément n° 2, c'est à dire le débutcar l'élément 0 "GOTO", le 1 "/" et donc le 2 = ton chiffre
Valeur2 = Trim(Tableau(1)) ' Simple, pas de difficulté, il n'y a que ce chiffre
Valeur3 = Trim(Split(Tableau(2), "PT")(0))
Dans ce dernier cas, on a choisi "PT" comme séparateur car le 3 est (ou pourrait être) précédé d'un espace, et le Split donnerait soit l'élément 0 soit le 1 : bug éventuel avec d'autres chaines.
Le Trim permet de virer les espaces devant et derrière qui ne servent pas
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
(je