Quelqu'un pourrait-il me dire s'il est possible d'utiliser
l'instruction (et non fonction) Mid pour faire dans une
chaîne un remplacement qui raccourcit cette chaîne ?
J'aurais cru que la macro qui suit remplacerait "abcd"
par "xcd", mais elle la remplace par "xbcd" :
Mid(MaChaine, 1, 2) = "x"
Quelqu'un pourrait-il me dire s'il est possible d'utiliser
l'instruction (et non fonction) Mid pour faire dans une
chaîne un remplacement qui raccourcit cette chaîne ?
J'aurais cru que la macro qui suit remplacerait "abcd"
par "xcd", mais elle la remplace par "xbcd" :
Mid(MaChaine, 1, 2) = "x"
Quelqu'un pourrait-il me dire s'il est possible d'utiliser
l'instruction (et non fonction) Mid pour faire dans une
chaîne un remplacement qui raccourcit cette chaîne ?
J'aurais cru que la macro qui suit remplacerait "abcd"
par "xcd", mais elle la remplace par "xbcd" :
Mid(MaChaine, 1, 2) = "x"
-----Message d'origine-----
Anacoluthe a répondu :
Pas compris. Mid fait un remplacement, 'x' fait 1
caractère
le remplacement peut se faire donc sur au plus 1
caractère.
le 2 (longueur du remplacemnt) de votre formule ne sert
donc à rien ici, il est d'ailleurs facultatif. Mid n'a
pas pour objet de changer la longueur de MaChaine.
Il suffit de se faire une petite fonction pour ça...
Pas compris (je m'exprime comme vous).
-----Message d'origine-----
Anacoluthe a répondu :
Pas compris. Mid fait un remplacement, 'x' fait 1
caractère
le remplacement peut se faire donc sur au plus 1
caractère.
le 2 (longueur du remplacemnt) de votre formule ne sert
donc à rien ici, il est d'ailleurs facultatif. Mid n'a
pas pour objet de changer la longueur de MaChaine.
Il suffit de se faire une petite fonction pour ça...
Pas compris (je m'exprime comme vous).
-----Message d'origine-----
Anacoluthe a répondu :
Pas compris. Mid fait un remplacement, 'x' fait 1
caractère
le remplacement peut se faire donc sur au plus 1
caractère.
le 2 (longueur du remplacemnt) de votre formule ne sert
donc à rien ici, il est d'ailleurs facultatif. Mid n'a
pas pour objet de changer la longueur de MaChaine.
Il suffit de se faire une petite fonction pour ça...
Pas compris (je m'exprime comme vous).
-----Message d'origine-----
Bonjour,
Il manque un espace devant votre x pour que cela
fonctionne...
En fait, c'est l'utilisation de l'élément facultatif
length qui vous pose
problème. Pour mieux comprendre, il vous faut une chaine
de caractère plus
longue exemple "toto"
Alors la macro suivante:
Public Sub MAIN()
Dim MaChaine As String
MaChaine = "abcd"
Mid(MaChaine, 1, 2) = "toto"
MsgBox "La chaîne est maintenant " & MaChaine
End Sub
donnera "tocd" car il n'utilise que 2 caractères de la
chaine de
remplacement...
par contre en omettant length comme ceci:
Public Sub MAIN()
Dim MaChaine As String
MaChaine = "abcd"
Mid(MaChaine, 1) = "toto"
MsgBox "La chaîne est maintenant " & MaChaine
End Sub
On obtient "toto" en résultat, tout est remplacé.
-----Message d'origine-----
Bonjour,
Il manque un espace devant votre x pour que cela
fonctionne...
En fait, c'est l'utilisation de l'élément facultatif
length qui vous pose
problème. Pour mieux comprendre, il vous faut une chaine
de caractère plus
longue exemple "toto"
Alors la macro suivante:
Public Sub MAIN()
Dim MaChaine As String
MaChaine = "abcd"
Mid(MaChaine, 1, 2) = "toto"
MsgBox "La chaîne est maintenant " & MaChaine
End Sub
donnera "tocd" car il n'utilise que 2 caractères de la
chaine de
remplacement...
par contre en omettant length comme ceci:
Public Sub MAIN()
Dim MaChaine As String
MaChaine = "abcd"
Mid(MaChaine, 1) = "toto"
MsgBox "La chaîne est maintenant " & MaChaine
End Sub
On obtient "toto" en résultat, tout est remplacé.
-----Message d'origine-----
Bonjour,
Il manque un espace devant votre x pour que cela
fonctionne...
En fait, c'est l'utilisation de l'élément facultatif
length qui vous pose
problème. Pour mieux comprendre, il vous faut une chaine
de caractère plus
longue exemple "toto"
Alors la macro suivante:
Public Sub MAIN()
Dim MaChaine As String
MaChaine = "abcd"
Mid(MaChaine, 1, 2) = "toto"
MsgBox "La chaîne est maintenant " & MaChaine
End Sub
donnera "tocd" car il n'utilise que 2 caractères de la
chaine de
remplacement...
par contre en omettant length comme ceci:
Public Sub MAIN()
Dim MaChaine As String
MaChaine = "abcd"
Mid(MaChaine, 1) = "toto"
MsgBox "La chaîne est maintenant " & MaChaine
End Sub
On obtient "toto" en résultat, tout est remplacé.
Où trouve-t-on dans la documentation du Word 2000 que la
sous-chaîne remplacée par Mid doit être de même longueur
que la chaîne de remplacement ?
Et si "Mid n'a pas pour objet de changer la longueur de
MaChaine", comment se fait-il que si nous en croyons les
exemples, des applications successives de Mid à une même
chaîne la font passer de "Le chien saute" (14 caractères)
à "Le canard sauta" (15 caractères) ?
Où trouve-t-on dans la documentation du Word 2000 que la
sous-chaîne remplacée par Mid doit être de même longueur
que la chaîne de remplacement ?
Et si "Mid n'a pas pour objet de changer la longueur de
MaChaine", comment se fait-il que si nous en croyons les
exemples, des applications successives de Mid à une même
chaîne la font passer de "Le chien saute" (14 caractères)
à "Le canard sauta" (15 caractères) ?
Où trouve-t-on dans la documentation du Word 2000 que la
sous-chaîne remplacée par Mid doit être de même longueur
que la chaîne de remplacement ?
Et si "Mid n'a pas pour objet de changer la longueur de
MaChaine", comment se fait-il que si nous en croyons les
exemples, des applications successives de Mid à une même
chaîne la font passer de "Le chien saute" (14 caractères)
à "Le canard sauta" (15 caractères) ?
L'Aide vba WD2000 me semble claire :
Mid, instruction
Remplace un nombre indiqué de caractères dans une
variable de type
Variant (String) par des caractères extraits d'une autre
chaîne.
Syntaxe
Mid(stringvar, start[, length]) = string
La syntaxe de l'instruction Mid comprend les éléments
suivants :
stringvar : Nom de la variable chaîne à modifier.
start : Donnée de type Variant (Long). Position du
caractère
dans l'argument stringvar où commence le remplacement de
texte.
length : Facultatif. Donnée de type Variant (Long).
Nombre de caractères à remplacer. Si ce paramètre est
omis,
la totalité de l'argument string est utilisée.
string : Expression de chaîne qui remplace une partie de
l'argument
stringvar.
Par contre dans la page d'exemples de l'Aide,
MyString = "Le chien saute" ' Initialise la chaîne.
Mid(MyString, 4, 5) = "lapin" ' MyString = "Le lapin
saute".
Mid(MyString, 4) = "boeuf" ' MyString = "Le boeuf
saute".
Mid(MyString, 4) = "boeuf sauta par-dessus" ' MyString
= "Le boeuf
sauta".
Mid(MyString, 4, 5) = "canard" ' MyString = "Le canard
sauta".
il y a effectivement une erreur: le résultat final
est "Le canar sauta"
puisqu'il est demandé de remplacer 5 caractères
de 'canard'
Le 3ème exemple par contre montre bien que string est
tronquée
pour que stringvar ne change pas de longueur.
Refaites vos essais, tout ceci est parfaitement
concordant :-)
L'Aide vba WD2000 me semble claire :
Mid, instruction
Remplace un nombre indiqué de caractères dans une
variable de type
Variant (String) par des caractères extraits d'une autre
chaîne.
Syntaxe
Mid(stringvar, start[, length]) = string
La syntaxe de l'instruction Mid comprend les éléments
suivants :
stringvar : Nom de la variable chaîne à modifier.
start : Donnée de type Variant (Long). Position du
caractère
dans l'argument stringvar où commence le remplacement de
texte.
length : Facultatif. Donnée de type Variant (Long).
Nombre de caractères à remplacer. Si ce paramètre est
omis,
la totalité de l'argument string est utilisée.
string : Expression de chaîne qui remplace une partie de
l'argument
stringvar.
Par contre dans la page d'exemples de l'Aide,
MyString = "Le chien saute" ' Initialise la chaîne.
Mid(MyString, 4, 5) = "lapin" ' MyString = "Le lapin
saute".
Mid(MyString, 4) = "boeuf" ' MyString = "Le boeuf
saute".
Mid(MyString, 4) = "boeuf sauta par-dessus" ' MyString
= "Le boeuf
sauta".
Mid(MyString, 4, 5) = "canard" ' MyString = "Le canard
sauta".
il y a effectivement une erreur: le résultat final
est "Le canar sauta"
puisqu'il est demandé de remplacer 5 caractères
de 'canard'
Le 3ème exemple par contre montre bien que string est
tronquée
pour que stringvar ne change pas de longueur.
Refaites vos essais, tout ceci est parfaitement
concordant :-)
L'Aide vba WD2000 me semble claire :
Mid, instruction
Remplace un nombre indiqué de caractères dans une
variable de type
Variant (String) par des caractères extraits d'une autre
chaîne.
Syntaxe
Mid(stringvar, start[, length]) = string
La syntaxe de l'instruction Mid comprend les éléments
suivants :
stringvar : Nom de la variable chaîne à modifier.
start : Donnée de type Variant (Long). Position du
caractère
dans l'argument stringvar où commence le remplacement de
texte.
length : Facultatif. Donnée de type Variant (Long).
Nombre de caractères à remplacer. Si ce paramètre est
omis,
la totalité de l'argument string est utilisée.
string : Expression de chaîne qui remplace une partie de
l'argument
stringvar.
Par contre dans la page d'exemples de l'Aide,
MyString = "Le chien saute" ' Initialise la chaîne.
Mid(MyString, 4, 5) = "lapin" ' MyString = "Le lapin
saute".
Mid(MyString, 4) = "boeuf" ' MyString = "Le boeuf
saute".
Mid(MyString, 4) = "boeuf sauta par-dessus" ' MyString
= "Le boeuf
sauta".
Mid(MyString, 4, 5) = "canard" ' MyString = "Le canard
sauta".
il y a effectivement une erreur: le résultat final
est "Le canar sauta"
puisqu'il est demandé de remplacer 5 caractères
de 'canard'
Le 3ème exemple par contre montre bien que string est
tronquée
pour que stringvar ne change pas de longueur.
Refaites vos essais, tout ceci est parfaitement
concordant :-)