Cette question provient d'un commentaire sous Range.Formula = dans VBA génère une erreur étrange .
J'ai écrit ce programme par essais et erreurs et j'ai donc naturellement essayé +
pour concaténer des chaînes.
Mais &
est-il plus correct que +
pour concaténer des chaînes?
&
est toujours évalué dans un contexte de chaîne, alors que +
ne peut pas concaténer si l'un des opérandes n'est aucune chaîne:
"1" + "2" => "12"
"1" + 2 => 3
1 + "2" => 3
"a" + 2 => type mismatch
C'est simplement une source subtile de bugs potentiels et doit donc être évité. &
always signifie "concaténation de chaînes", même si ses arguments ne sont pas des chaînes:
"1" & "2" => "12"
"1" & 2 => "12"
1 & "2" => "12"
1 & 2 => "12"
"a" & 2 => "a2"
La principale différence (très intéressante) pour moi est que:"string" & Null
-> "string"
tandis que"string" + Null
-> Null
Mais c'est probablement plus utile dans les applications de base de données comme Access.
Il y a la fonction concaténer. Par exemple
= CONCATENER (E2, "-", F2)Mais l'opérateur & concatène toujours les chaînes. + fonctionnera souvent, mais s'il y a un nombre dans l'une des cellules, cela ne fonctionnera pas comme prévu.