VBA traitement sur chaine de caractère [Résolu]

Signaler
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007
-
drikce06
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
-
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

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
24
 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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
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>
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
20
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.
Messages postés
17
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
29 octobre 2006

voir split...

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

Phbil
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
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>
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007

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
Messages postés
1
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
17 novembre 2006

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.
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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