VBA traitement sur chaine de caractère

Résolu
Maxou le petit Messages postés 47 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 mai 2007 - 29 oct. 2006 à 07:19
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 - 17 nov. 2006 à 15:24
Bonjour à tous;

Je suis dans la "M" et je ne suis pas à l'aise sur les traitements de chaine de caractère.
1) Si j'ai le contenu d'un champ texte d'une certaine longueur de carctère séparé par des "blancs" et que je dois le découper et le mettre dans un nouveau champs chaque fois qu'il y un blanc, comment dois je faire ?
Par exemple :
Chaine de départ champ1: "Toto Tata"
Arrivée : Champ1 "Toto", Champ2 "Tata"

2) Comment créer directement l'adresse Email du champs 1
Exemple : [mailto:toto.tata@xxxxxx.xxx toto.tata@xxxxxx.xxx] 
 
D'avance merci
 
Maxou.

8 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
29 oct. 2006 à 15:25
 Bonjour à tous....

Le code de Mortalino est ok s'il n'y a qu'un espace entre "Toto" et "Tata".
Ci-dessous, une simple adaptation.
S'il n'y a pas d'espace entre toto et  tata, le script fonctionnera.
S'il y a 1 ou plusieurs espaces entre toto et  tata, le script fonctionnera aussi.

champ = "Toto   Tata"
MyArray = Split(Trim(champ)," ")
'MsgBox UBound(MyArray)
 
If UBound(MyArray) <> 0 Then
   MsgBox MyArray(0) & "." & MyArray(UBound(MyArray)) & "@xxxx.fr"
   Else
   MsgBox champ & "@xxxx.fr"
End If
MsgBox "script terminé"

jean-marc
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 oct. 2006 à 22:09
Salut,

tout est dans l'aide.
Split c'est pour découper une chaine de caractères (ici "toto tata") avec un caractère délimitant la chaine (ici "" mais ça peut être un point, une virgule, etc...).
Le résultat sera donc toto et tata.

Ubound et Lbound ce sont des fonctions pour déterminer le plus grand et le plus petit  indice d'une valeur.
[U et L tu les retrouves aussi dans LCase et UCase (conversion majuscule/minuscule), L étant Lower (plus bas, ou plus petit) et U étant Upper (plus haut ou plus grand)]
Exemple, Mot Split("toto tata", " "), si tu as bien suivi, va découper la chaine en 2 mots. Tu auras Mot(0) "toto" & Mot(1) = "tata".
Le plus grand indice de Mot c'est 1 et le plus petit c'est donc 0.
LBound(Mot) donnera 0 et UBound(Mot) donnera 1.


Autre exemple, Mot = Split("toto tata titi", " "), là tu auras 3 mots.Mot(0) "toto" & Mot(1) "tata" & Mot(2) = "titi".
LBound(Mot) donnera 0 et UBound(Mot) donnera 2.

@++





<hr width ="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
29 oct. 2006 à 07:34
Bonjour Maxoo,

L'utilisation de Instr (aide en ligne ou F1) te permettra de déterminer la position de l'espace.
L'udilisation de Left et de Mid (également dans l'aide en ligne) te permettra de déterminer ce qui se trouve à gauche de cette position et ce qui se trouve à partir de cette position ...
L'utilisation de l'opérateur & te permettra d'effectuer des concaténations de chaînes de caractères
Bonne journée.
0
cs_phBil Messages postés 17 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 29 octobre 2006
29 oct. 2006 à 07:56
voir split...

T = split("toto tata"," ")
?t(0)
toto
?t(1)
tata

Phbil
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 oct. 2006 à 09:07
Salut,

    Dim MyStr() As String
    Dim AdrMail As String

MyStr = Split("Toto Tata", " ")
AdrMail = LCase(MyStr(0)) & "." & LCase(MyStr(1)) & "@domaine.fr"
Erase MyStr

--Mortalino-- Colorisation automatique

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
Maxou le petit Messages postés 47 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 mai 2007
29 oct. 2006 à 18:47
Merci JM et Mortalino;

Ce que vous  m'avez proposé fonctionne à merveille.
Pour progresser et en faire de même... il faut que je decripte le code afin de le comprendre car j n'ai jamais utilisé les fonctions Uboud et Split.

A+

Maxou
0
Coach_Tibo Messages postés 1 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 17 novembre 2006
17 nov. 2006 à 15:03
Bonjour,
je suis tout nouveau sur le site et je n'ai encore jamais utilise les fonctions liees aux chaines de caracteres.
Comment faire pour integrer des elements dans une chaine de caractere ?
ex : comment transformer "1.2461" en "1:24.61" ?

Merci par avance parce que la je vais finir par me taper la tete au mur.
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
17 nov. 2006 à 15:24
Salut et bienvenue, je te conseil de reposer ta question sur un nouveau topic et precise bien ton language de programmation dans la catégorie tu auras plus de chance de réponses!

 Drikce 06
0
Rejoignez-nous