Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pour couper une chaine de caractere avec une macro sous VBA Excel

8 réponses
Avatar
mateo-dev
J'aimerais pouvoir couper une chaine de caractere contenant le caractere ":"

En fait j'ai une collection qui contient différentes valeurs toutes séparées
par le caractere ":"
Et il me faudrait récupere chaque valeur dans différentes variable sans le
caractere ":"
Ce que contient ma collection est tout le temps différent mais contient
toujours le meme nombre de caractere ":" !

Exemple :
Mycollection contient azerty:5:qsdf4:3::dac
et il me faudrait dans les variables
Myvar1 doit contenir azerty
Myvar2 doit contenir 5
Myvar3 doit contenir qsdf4
Myvar4 doit contenir 3
Myvar5 doit contenir rien
Myvar6 doit contenir dac

En espérant avoir été clair... Merci d'avance !

8 réponses

Avatar
AV
Données > Convertir > type : délimité ...etc...
Ca le fait tout seul

AV!
Avatar
Pounet95
Bonsoir,
Un exemple :

Sub x()
Dim mavar(6) As String
For i=1 to 6: mavar(i)="" : Next i
c$ = "abcdef:gh:ijkl:m::nopq"

n = 1
For i = 1 To Len(c$)
If Mid$(c$, i, 1) <> ":" Then
mavar(n) = mavar(n) & Mid$(c$, i, 1)
Else
n = n + 1
End If
Next i
For i = 1 To 6: Debug.Print i, mavar(i): Next i
End Sub


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"mateo-dev" a écrit dans le message de
news:
J'aimerais pouvoir couper une chaine de caractere contenant le caractere
":"

En fait j'ai une collection qui contient différentes valeurs toutes
séparées
par le caractere ":"
Et il me faudrait récupere chaque valeur dans différentes variable sans le
caractere ":"
Ce que contient ma collection est tout le temps différent mais contient
toujours le meme nombre de caractere ":" !

Exemple :
Mycollection contient azerty:5:qsdf4:3::dac
et il me faudrait dans les variables
Myvar1 doit contenir azerty
Myvar2 doit contenir 5
Myvar3 doit contenir qsdf4
Myvar4 doit contenir 3
Myvar5 doit contenir rien
Myvar6 doit contenir dac

En espérant avoir été clair... Merci d'avance !


Avatar
JLuc
mateo-dev avait soumis l'idée :
J'aimerais pouvoir couper une chaine de caractere contenant le caractere ":"

En fait j'ai une collection qui contient différentes valeurs toutes séparées
par le caractere ":"
Et il me faudrait récupere chaque valeur dans différentes variable sans le
caractere ":"
Ce que contient ma collection est tout le temps différent mais contient
toujours le meme nombre de caractere ":" !

Exemple :
Mycollection contient azerty:5:qsdf4:3::dac
et il me faudrait dans les variables
Myvar1 doit contenir azerty
Myvar2 doit contenir 5
Myvar3 doit contenir qsdf4
Myvar4 doit contenir 3
Myvar5 doit contenir rien
Myvar6 doit contenir dac

En espérant avoir été clair... Merci d'avance !


Une autre facon de faire :

Sub Test()
'
' Macro2 Macro
' Macro enregistrée le 24/01/2006 par JLL G2P
'
Dim Mtvar()
Range("A1:A" & Range("A65536").End(xlUp).Row).TextToColumns _
Destination:=Range("A1"), DataType:=xlDelimited, _
Other:=True, OtherChar:=":", _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _
Array(4, 1), Array(5, _
1), Array(6, 1))
ReDim Myvar(1 To Range("A65536").End(xlUp).Row, 1 To 6)
For x = 1 To UBound(Myvar)
For y = 1 To 6
Myvar(x, y) = Cells(x, y)
Next
Next
' Reste du code
End Sub

Teste et dis nous

--
JLuc

Avatar
JLuc
AV avait soumis l'idée :
Données > Convertir > type : délimité ...etc...
Ca le fait tout seul

AV!


Oui, mais il veut recuperer tous les champs dans des variables, c'est
pour ca que je lui ai propose une macro.
Il faut lire jusqu'au bout... lol
Il a des traitement a faire apres... :')

--
JLuc

Avatar
JLuc
J'ai oublier de te prevenir : il faut quand meme 5 colonne vide a
droite et tes donnees en colonne A :oÞ

--
JLuc
Avatar
AV
| Oui, mais il veut recuperer tous les champs dans des variables, c'est
| pour ca que je lui ai propose une macro.

Ben les "variables", il reste plus qu'à les lire...
L'important n'est pas vraiment là mais plutôt de connaitre la fonctionnalité
"Données > Convertir..." qu'apparemment il ne connait pas...
La 1° ligne de la question est :
"J'aimerais pouvoir couper une chaine de caractere contenant le caractere ":"

Mais bon...
AV
Avatar
JLuc
AV avait soumis l'idée :
Oui, mais il veut recuperer tous les champs dans des variables, c'est
pour ca que je lui ai propose une macro.


Ben les "variables", il reste plus qu'à les lire...
L'important n'est pas vraiment là mais plutôt de connaitre la fonctionnalité
"Données > Convertir..." qu'apparemment il ne connait pas...
La 1° ligne de la question est :
"J'aimerais pouvoir couper une chaine de caractere contenant le caractere ":"

Mais bon...
AV


Tu as raison, c'est pour ca que le decoupage dans la macro est en fait
l'enregistrement de Donnees/Convertir pour le bedut ;-)

--
JLuc


Avatar
mateo-dev
Finalement voici comment j'ai résolu mon soucy !
ref = "azert:4er:985"
refl = Len(ref)
For i = 1 To refl
If InStr(ref, ":") Then
a = Left(ref, InStr(ref, ":") - 1)
J = InStr(ref, ":")
refl = Len(ref)
ref = Right(ref, refl - J)
Else
i=refl
End If
Next

Merci de votre aide...


J'aimerais pouvoir couper une chaine de caractere contenant le caractere ":"

En fait j'ai une collection qui contient différentes valeurs toutes séparées
par le caractere ":"
Et il me faudrait récupere chaque valeur dans différentes variable sans le
caractere ":"
Ce que contient ma collection est tout le temps différent mais contient
toujours le meme nombre de caractere ":" !

Exemple :
Mycollection contient azerty:5:qsdf4:3::dac
et il me faudrait dans les variables
Myvar1 doit contenir azerty
Myvar2 doit contenir 5
Myvar3 doit contenir qsdf4
Myvar4 doit contenir 3
Myvar5 doit contenir rien
Myvar6 doit contenir dac

En espérant avoir été clair... Merci d'avance !