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

manipulation de texte split and string

9 réponses
Avatar
Anor
Bonjour à tous,
Une petite question pour la forme ;-)

J'ai une chaine :
strMaChaine = "texte" & vbNullChar _
& "-un" & vbNullChar _
& "-deux" & vbNullChar _
& "-trois" & vbNullChar _
& vbNullChar & vbNullChar & vbNullChar

Je souhaiterais obtenir au final :
strMaChaineFinale = "texte-un;texte-deux;texte-trois"

J'ai l'impression d'être en train de réinventer la roue et de faire mon prototype
en schédule 80 (tout ça pour ne pas dire que je fais une usine à gaz :-))

Sachant :
- que le séparateur initial est vbNullChar (on l'aura remarqué)
- que le nombre de composants -un -deux -trois n'est pas fixe
- que tous les X vbNullChar de la fin doivent être supprimés

Quelqu'un a-t-il dans ses cahiers une petite fonction ou une méthode à me recommander ?

Merci d'avance
--
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------

9 réponses

Avatar
Raymond
Bonsoir Arnaud.

Tu as vu la chaleur qu'il fait ? On va péter une durit si on fait ça !

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Anor" a écrit dans le message de
news:
Bonjour à tous,
Une petite question pour la forme ;-)

J'ai une chaine :
strMaChaine = "texte" & vbNullChar _
& "-un" & vbNullChar _
& "-deux" & vbNullChar _
& "-trois" & vbNullChar _
& vbNullChar & vbNullChar & vbNullChar

Je souhaiterais obtenir au final :
strMaChaineFinale = "texte-un;texte-deux;texte-trois"

J'ai l'impression d'être en train de réinventer la roue et de faire mon
prototype

en schédule 80 (tout ça pour ne pas dire que je fais une usine à gaz :-))

Sachant :
- que le séparateur initial est vbNullChar (on l'aura remarqué)
- que le nombre de composants -un -deux -trois n'est pas fixe
- que tous les X vbNullChar de la fin doivent être supprimés

Quelqu'un a-t-il dans ses cahiers une petite fonction ou une méthode à me
recommander ?


Merci d'avance
--
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------




Avatar
Anor
Bonjour Raymond,


| Bonsoir Arnaud.
|
| Tu as vu la chaleur qu'il fait ? On va péter une durit si on fait ça !
|

Meuh non : juste besoin de choisir la bonne méthode :
tableau ? split ? autre ?
Après, c'est de la logique ...

ps : 32.3°C à l'ombre et à 21h00 à Bordeaux...

--
à+
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------
Avatar
Anor
Bonjour Raymond,


| finalement je lirais peut-être ton post.

ok mais comme tu n'es pas très célère, j'ai joué le rôle de la tortue ;-)
et donc je ne te demanderai que d'apporter ton oeil critique
sur le bout de code ci-dessous ou de désenfler mes chevilles
avec la fonction sur laquelle tu planches déjà .....ouarf :-)

Je pense qu'il est difficile de faire plus simple, mais il y a peut-être plus propre ....

Sub test()
Dim strMaChaine As String
strMaChaine = "C:Mes Documents" & vbNullChar _
& "fichier1.xls" & vbNullChar _
& "fichier2.txt" & vbNullChar _
& "fichier3.mdb" & vbNullChar _
& vbNullChar & vbNullChar & vbNullChar
msgbox fBuildAttachments(strMaChaine)
End Sub

Function fBuildAttachments(ByVal strItem As String) As String
Dim Tableau() As String
Dim I As Integer
Tableau = Split(strItem, vbNullChar)
For I = 1 To UBound(Tableau)
If Tableau(I) <> "" Then
fBuildAttachments = fBuildAttachments & Tableau(0) & "" & Tableau(I) & ";"
End If
Next I
Do While Right(fBuildAttachments, 1) = ";"
fBuildAttachments = Left(fBuildAttachments, Len(fBuildAttachments) - 1)
Loop
End Function

Ensuite, je verrai pour utiliser une fonction"split" compatible avec access97

ps : je viens de dévoiler (un peu) l'intérêt de la fonction (les initiés comprendront ;-))
--
à+
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------
Avatar
Raymond
Je te donne mon code tout de suite ça évitera de t'expliquer ma méthode,
mais je pense qu'on doit pouvoir faire plus esthétique.

Dim Tableau() As String
Dim strMaChaine As String
Dim I As Long
strMaChaine = "texte" & vbNullChar _
& "-un" & vbNullChar _
& "-deux" & vbNullChar _
& "-trois" & vbNullChar _
& vbNullChar
Tableau = Split(strMaChaine, vbNullChar)
I = 1
Do Until Tableau(I) = ""
Tableau(I) = Tableau(0) & Tableau(I)
I = I + 1
Loop
Tableau(0) = ";"
strMaChaine = Replace(Join(Tableau, ";"), ";;", "")

MsgBox strMaChaine

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Anor" a écrit dans le message de
news:
Bonjour à tous,
Une petite question pour la forme ;-)

J'ai une chaine :
strMaChaine = "texte" & vbNullChar _
& "-un" & vbNullChar _
& "-deux" & vbNullChar _
& "-trois" & vbNullChar _
& vbNullChar & vbNullChar & vbNullChar

Je souhaiterais obtenir au final :
strMaChaineFinale = "texte-un;texte-deux;texte-trois"

J'ai l'impression d'être en train de réinventer la roue et de faire mon
prototype

en schédule 80 (tout ça pour ne pas dire que je fais une usine à gaz :-))

Sachant :
- que le séparateur initial est vbNullChar (on l'aura remarqué)
- que le nombre de composants -un -deux -trois n'est pas fixe
- que tous les X vbNullChar de la fin doivent être supprimés

Quelqu'un a-t-il dans ses cahiers une petite fonction ou une méthode à me
recommander ?


Merci d'avance
--
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------




Avatar
Raymond
J'avais déjà répondu.

Regarde le post en dessous, il y a un message pour toi.

critiques:

Ubound et Tableau(I) <> "" font double emploi, vu que tu balances 3
vbnullchar à la fin. Donc perte d'efficacité.
Si tu m'avais dis le pourquoi, j'aurais mis un ""
sans se consulter on a pris la même méthode.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Anor" a écrit dans le message de
news:O5%
Bonjour Raymond,


| finalement je lirais peut-être ton post.

ok mais comme tu n'es pas très célère, j'ai joué le rôle de la tortue ;-)
et donc je ne te demanderai que d'apporter ton oeil critique
sur le bout de code ci-dessous ou de désenfler mes chevilles
avec la fonction sur laquelle tu planches déjà .....ouarf :-)

Je pense qu'il est difficile de faire plus simple, mais il y a peut-être
plus propre ....


Sub test()
Dim strMaChaine As String
strMaChaine = "C:Mes Documents" & vbNullChar _
& "fichier1.xls" & vbNullChar _
& "fichier2.txt" & vbNullChar _
& "fichier3.mdb" & vbNullChar _
& vbNullChar & vbNullChar & vbNullChar
msgbox fBuildAttachments(strMaChaine)
End Sub

Function fBuildAttachments(ByVal strItem As String) As String
Dim Tableau() As String
Dim I As Integer
Tableau = Split(strItem, vbNullChar)
For I = 1 To UBound(Tableau)
If Tableau(I) <> "" Then
fBuildAttachments = fBuildAttachments & Tableau(0) & "" & Tableau(I)
& ";"

End If
Next I
Do While Right(fBuildAttachments, 1) = ";"
fBuildAttachments = Left(fBuildAttachments, Len(fBuildAttachments) - 1)
Loop
End Function

Ensuite, je verrai pour utiliser une fonction"split" compatible avec
access97


ps : je viens de dévoiler (un peu) l'intérêt de la fonction (les initiés
comprendront ;-))

--
à+
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------




Avatar
Anor
Bonjour Raymond,

Merci de t'être penché sur mon problème.
On l'a abordé grosso modo de la même manière à partir d'un code récemment publié...
Ouf ça me rassure ;-)

Par contre, ton join final me plaît bien ...
--
à+
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------



| Je te donne mon code tout de suite ça évitera de t'expliquer ma
| méthode, mais je pense qu'on doit pouvoir faire plus esthétique.
|
| Dim Tableau() As String
| Dim strMaChaine As String
| Dim I As Long
| strMaChaine = "texte" & vbNullChar _
| & "-un" & vbNullChar _
| & "-deux" & vbNullChar _
| & "-trois" & vbNullChar _
| & vbNullChar
| Tableau = Split(strMaChaine, vbNullChar)
| I = 1
| Do Until Tableau(I) = ""
| Tableau(I) = Tableau(0) & Tableau(I)
| I = I + 1
| Loop
| Tableau(0) = ";"
| strMaChaine = Replace(Join(Tableau, ";"), ";;", "")
|
| MsgBox strMaChaine
|
|
Avatar
Raymond
Par contre, ton join final me plaît bien ...


La petite touche personnelle qui fait qu'on reconnait sa fonction du premier
coup d'oeil.

Vu l'heure, je te souhaite une bonne nuit et à demain si vous le voulez bien
!

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Anor" a écrit dans le message de
news:

Avatar
Anor
re.

|
| Ubound et Tableau(I) <> "" font double emploi, vu que tu balances 3
| vbnullchar à la fin. Donc perte d'efficacité.

oui c'est vrai pour l'efficacité, mais j'ai tendance à préférer les for next
quitte à faire des tours pour rien, aux compteurs i = i + 1 en lesquels je n'ai
pas très confiance....

Mais toi, tu es obligé de renommer tableau(0) pour supprimer ensuite les ";" en trop....
alors je ne sais pas trop ce qui est le mieux...

| Si tu m'avais dis le pourquoi, j'aurais mis un ""

hé hé oui je suis toujours sur la sélection multiple avec l'API getopenfilename ;-))
(enfin dès que j'ai 5 minutes, je réfléchis ....)

| sans se consulter on a pris la même méthode.

finalement, il y a peut être l'un de nous deux en trop sur le forum si on donne les mêmes
réponses .....

nan je rigole !

--
à+
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------
Avatar
Anor

| Vu l'heure, je te souhaite une bonne nuit et à demain si vous le
| voulez bien !

Bonne nuit et à demain mais un peu ...

--
à+
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------