OVH Cloud OVH Cloud

Problème espace dans concatenation

13 réponses
Avatar
Christophe Joly
Bonsoir:

Dans une VBA, j'ai la formule suivante:

ActiveCell.Formula =
"=CONCATENATE(B5,VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"

Cette formule fonctionne à merveille. Maintenant, j'aimerais inclure un
espace entre le le résultat de B et celui de VLOOKUP(B5,CountryData,2).
Alors j'ai écrit:
ActiveCell.Formula = "=CONCATENATE(B5,"
",VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"
Malheuereusement, j'obtiens un message du type erreur de Compilation /
Erreur de Syntaxe.

Je ne vois pas mon erreur. Merci de votre aide.

Christophe

3 réponses

1 2
Avatar
Nicolas B.
Bonsoir,

Je ne connaissais pas le truc du double guillemet. J'en étais resté à
chr(34), ce qui fait parfois lourd dans une formule.
Comme quoi, j'en apprends ici tous les jours... ;-)

Merci

Bonne nuit
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonsoir,

Le problème vient de ce que le guillemet permet de distinguer une
chaine
de caractères d'autres éléments comme les varaibles, les constantes,
...

Afin qu'il n'y ait pas d'ambiguïté entre la fin d'une chaîne de
caractères et un guillemet situé à l'intérieur d'une chaîne de
caractères, celui-ci doit être remplacé par un double guillemet.

Il faut donc que tu remplaces

"=CONCATENATE(B5," ",...

par

"=CONCATENATE(B5,"" "",...

C'est également valable pour les anciennes macros, XL4.


Par ailleurs, la fonction CONCATENER n'a d'éventuel intérêt que si ses
arguments sont très nombreux. De manière générale, elle est avantageu-
sement remplacée par l'opérateur "&" :

¡ & " " & B1

équivaut à

=CONCATENER(A1;" ";B1)

C'est plus court à écrire, et le résultat est au moins aussi lisible.



Bonsoir:

Dans une VBA, j'ai la formule suivante:

ActiveCell.Formula >> "=CONCATENATE(B5,VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"

Cette formule fonctionne à merveille. Maintenant, j'aimerais
inclure un espace entre le le résultat de B et celui de
VLOOKUP(B5,CountryData,2). Alors j'ai écrit:
ActiveCell.Formula = "=CONCATENATE(B5,"
",VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"
Malheuereusement, j'obtiens un message du type erreur de Compilation
/ Erreur de Syntaxe.

Je ne vois pas mon erreur. Merci de votre aide.

Christophe




Avatar
Michel Gaboly
Re,

CountryData est probablement une variable définie dans VBA.

Une formule de la feuille de calcul n'a aucun moyen de la reconnaître,
ce qui explique le message d'erreur.

Il faut décomposer l'argument passé à Formula en chaîne de caractères
et variables :

ActiveCell.Formula = "=CONCATENATE(B5,"" "",VLOOKUP(B5," &
CountryData.Address(False, False) & ",2),VLOOKUP(B5," &
CountryData.Address(False, False) & ",3))"

ou beaucoup mieux, définir dans la feuille (ou le classeur) un nom
correspondant à la plage correspondant à CountryData, en rajoutant
cette ligne :

ActiveSheet.Names.Add "DonnéesPays", CountryData

avant

ActiveCell.Formula =...

ce qui permet d'écrire :

ActiveCell.Formula = "=CONCATENATE(B5,"" "",VLOOKUP(B5,
DonnéesPays,2),VLOOKUP(B5,DonnéesPays,3))"

ou en laissant tomber CONCATENER()

ActiveCell.Formula = "µ & "" "" & VLOOKUP(B5,
DonnéesPays,2) & VLOOKUP(B5,DonnéesPays,3)"




Merci FX. J'ai testé. Je n'ai plus de message d'erreur de compilation en
revanche le résulat dans la cellule n'est plus bon puisque j'obtiens
désormais #NAME?
Qu'en penses-tu?

Christophe
"FxM" a écrit dans le message de
news:%
Bonsoir,

Non testé :
remplace ton espace (soit les trois caractères " ") par chr(32)

@+
FxM



Christophe Joly wrote:

Bonsoir:

Dans une VBA, j'ai la formule suivante:

ActiveCell.Formula > > > "=CONCATENATE(B5,VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"

Cette formule fonctionne à merveille. Maintenant, j'aimerais inclure un
espace entre le le résultat de B et celui de VLOOKUP(B5,CountryData,2).
Alors j'ai écrit:
ActiveCell.Formula = "=CONCATENATE(B5,"
",VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"
Malheuereusement, j'obtiens un message du type erreur de Compilation /
Erreur de Syntaxe.

Je ne vois pas mon erreur. Merci de votre aide.

Christophe







--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
Michel Gaboly
De rien ;-))

Une bonne technique pour s'en sortir si on bloque pour transcrire
en VBA une formule qui fonctionne dans une feuille Excel, c'est
l'enregistrement auto.

Classique mais efficace : cela t'aurait permis de découvrir ;-)))
le "truc" du double guillemet.

Il ne faut pas mépriser cet enregistrement auto, qui peut souvent
dépanner facilement ;-)))



Bonsoir,

Je ne connaissais pas le truc du double guillemet. J'en étais resté à
chr(34), ce qui fait parfois lourd dans une formule.
Comme quoi, j'en apprends ici tous les jours... ;-)

Merci

Bonne nuit
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC

Bonsoir,

Le problème vient de ce que le guillemet permet de distinguer une
chaine
de caractères d'autres éléments comme les varaibles, les constantes,
...

Afin qu'il n'y ait pas d'ambiguïté entre la fin d'une chaîne de
caractères et un guillemet situé à l'intérieur d'une chaîne de
caractères, celui-ci doit être remplacé par un double guillemet.

Il faut donc que tu remplaces

"=CONCATENATE(B5," ",...

par

"=CONCATENATE(B5,"" "",...

C'est également valable pour les anciennes macros, XL4.


Par ailleurs, la fonction CONCATENER n'a d'éventuel intérêt que si ses
arguments sont très nombreux. De manière générale, elle est avantageu-
sement remplacée par l'opérateur "&" :

¡ & " " & B1

équivaut à

=CONCATENER(A1;" ";B1)

C'est plus court à écrire, et le résultat est au moins aussi lisible.



Bonsoir:

Dans une VBA, j'ai la formule suivante:

ActiveCell.Formula > >> "=CONCATENATE(B5,VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"

Cette formule fonctionne à merveille. Maintenant, j'aimerais
inclure un espace entre le le résultat de B et celui de
VLOOKUP(B5,CountryData,2). Alors j'ai écrit:
ActiveCell.Formula = "=CONCATENATE(B5,"
",VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"
Malheuereusement, j'obtiens un message du type erreur de Compilation
/ Erreur de Syntaxe.

Je ne vois pas mon erreur. Merci de votre aide.

Christophe




--
Cordialement,

Michel Gaboly
http://www.gaboly.com



1 2