Concaténation de valeurs de cellules

Bonjour,

je ne comprends pas pourquoi j'arrive à faire ce test

        If ma_chaine_act <> ma_chaine_sui Then
            Rows(i + 1).Insert
            Range("A" & i + 1 & ":K" & i + 1).Value = Range("A" & i + 2 & ":K" & i + 2).Value
            Range("A" & i + 1 & ":R" & i + 1).Interior.Color = RGB(174, 240, 194)
        End If

celui ci aussi :

        ma_chaine_act = Range("G" & i).Value & Range("H" & i).Value & Range("I" & i).Value


alors que celui ci (qui me semble aussi fonctionnel mais plus économique et plus élégant) me fait une erreur
        ma_chaine_sui = Range("G" & i + 1 & ": I" & i + 1).Value
      

Qui saurait m'expliquer ce grand mystère (pour moi) ?

Bonjour,

Ce n'est pas un mystère.
Vous ne pouvez pas obtenir une valeur ou attribuer à une variable le résultat d'un range sur plusieurs colonnes
C'est un peu comme si vous mettiez sur votre feuille en A1 --> = G1:I1 ou par VBA --> Range("A1") = Range("G1:I1")

Faites le test vous allez voir que vous aurez une erreur.

Ceci sera correct

ma_chaine_sui = Range("G" & i+1).Value & Range("H" & i+1).Value & Range("I" & i+1).Value

Cordialement

Bonjour,

Pour expliquer ce grand mystère je vous conseille d'exécuter ce code pas à pas. Vous verrez que quand vous écrivez Range("I1:I5").Value en VBA, vous vous retrouvez avec un tableau de valeurs (Array), et non pas 1 valeur unique.

Donc écrire ma_chaine = Range1.Value & Range2.Value & Range3.Value renvoie bien une chaine de caractère, la concaténation des 3 valeurs.

Mais écrire machaine = Range("I1:I3").Value renvoie un tableau de 3 cases avec dans chacune des cases une valeur.

Donc si vous mélangez les deux, vous vous retrouvez à comparer des tableaux à des strings (des patates et des camions) et le code plante car ça n'a rien à voir.

De plus, la méthode "élégante" ne pourra jamais fonctionner car on ne peut pas écrire "tableau1 = tableau2" en VBA (et en programmation en générale). Il faut boucler sur les tableaux et comparer leurs valeurs une à une pour vérifier l'égalité.

EDIT : salut @Dan, nos messages se sont croisés (et se complètent !). Bonne journée

Merci à vous deux pour vos réponses.

Je pensais faire appel à une concaténation du contenu des cellules

C'est plus clair maintenant

Rechercher des sujets similaires à "concatenation valeurs"