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

10 réponses

1 2
Avatar
FxM
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




Avatar
Christophe Joly
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







Avatar
Christophe Joly
FX:

Ce qui est le plus surprenat c'est que je copie et colle ma formule dans la
feuille directement sans passer par la macro et que je remplace les
commandes en anglais par les fonctions en francais cela fonctionne.
Pourquoi la formule
=CONCATENER(B5,"
",RECHERCHEV(B5,CountryData,2),RECHERCHEV(B5,CountryData,3))"
fonctionne t-elle dans la feuille alors que la même formule dans la macro
ActiveCell.Formula = "=CONCATENATE(B5,"
",VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"
me fournit un message d'erreur de compilation
alors que la meme formule sans l'espace " "
ActiveCell.Formula "=CONCATENATE(B5,VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"
fonctionne.

Pour faire compliquer ceci reste le mystère à élucider ce soir.

merci encore.

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







Avatar
Nicolas B.
Salut tous les deux,

Il me semble qu'il faut plutôt remplacer les guillemets par chr(34) :
ActiveCell.Formula = "=CONCATENATE(B5," & chr(34) & " " & chr(34) &
",VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"


A+
--
Nicolas B.

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


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






Avatar
FxM
Mets deux guillemets de chaque coté :
ActiveCell.FormulaR1C1 = "=CONCATENATE(B5,"" "",VLOOKUP(etc...)

@+
FxM




Christophe Joly wrote:

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











Avatar
FxM
ActiveCell.Formula = ...
et non

ActiveCell.FormulaR1C1 = ...


Allez, dodo !

@+
FxM




FxM wrote:
Mets deux guillemets de chaque coté :
ActiveCell.FormulaR1C1 = "=CONCATENATE(B5,"" "",VLOOKUP(etc...)

@+
FxM



Avatar
Nicolas B.
Voir la solution dans le message plus haut.

Pour le "le mystère à élucider ce soir", c'est assez simple :
Tu écris dans VBA quelque chose comme ça :
ActiveCell.Formula = "=début formule" "suiteformule"

Pour VBA, les guillemets du mileu séparent les deux morceaux de formules. Tu
alignes donc deux chaînes de caractères, sans lien entre les deux (même pas
de concaténation), et ça génère une erreur.

Dans Excel, la formule n'est pas tapée entre guillemets, il comprend alors
les guillemets du milieu comme une chaîne de caractère contenant une espace
(et donc ils ne ferment pas deux chaînes consécutives, "début formule" et
"suite formule" dans l'exemple), d'où pas d'erreur.


A+
--
Nicolas B.

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


FX:

Ce qui est le plus surprenat c'est que je copie et colle ma formule
dans la feuille directement sans passer par la macro et que je
remplace les commandes en anglais par les fonctions en francais cela
fonctionne. Pourquoi la formule
=CONCATENER(B5,"
",RECHERCHEV(B5,CountryData,2),RECHERCHEV(B5,CountryData,3))"
fonctionne t-elle dans la feuille alors que la même formule dans la
macro ActiveCell.Formula = "=CONCATENATE(B5,"
",VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"
me fournit un message d'erreur de compilation
alors que la meme formule sans l'espace " "
ActiveCell.Formula > "=CONCATENATE(B5,VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"
fonctionne.

Pour faire compliquer ceci reste le mystère à élucider ce soir.

merci encore.

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






Avatar
Christophe Joly
Nicolas.

Merci mais Excel n'a pas aimé :-(

Christophe
"Nicolas B." a écrit dans le message de
news:%
Salut tous les deux,

Il me semble qu'il faut plutôt remplacer les guillemets par chr(34) :
ActiveCell.Formula = "=CONCATENATE(B5," & chr(34) & " " & chr(34) &
",VLOOKUP(B5,CountryData,2),VLOOKUP(B5,CountryData,3))"


A+
--
Nicolas B.

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


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










Avatar
Christophe Joly
Fx:

C'est la solution. A l'occasion, après le dodo si tu pouvais essayer de
m'expliquer le pourquoi du comment des doubles guillemets, ca m'interesse.

Merci beaucoup.

Christophe
"FxM" a écrit dans le message de
news:
ActiveCell.Formula = ...
et non

ActiveCell.FormulaR1C1 = ...


Allez, dodo !

@+
FxM




FxM wrote:
Mets deux guillemets de chaque coté :
ActiveCell.FormulaR1C1 = "=CONCATENATE(B5,"" "",VLOOKUP(etc...)

@+
FxM






Avatar
Michel Gaboly
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