[Excel VBA] Problème formule de concaténation [Résolu/Fermé]

Signaler
Messages postés
27
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
22 mai 2008
-
Messages postés
27
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
22 mai 2008
-
Bonjour à tous,
J’ai un petit problème avec une concaténation en VBA sous Excel.

J’ai plusieurs tableaux identiques mais de tailles variables (en nombre de lignes) dont la dernière ligne est un total.
Je souhaite élaborer une procédure qui écrit en A1 une phrase du type : « Le total des débits est X et celui des crédits Y »

J’utilise l’instruction a = Range("A65536").End(xlUp).Row pour identifier dans chaque tableau la ligne du total. Celle-ci contient évidemment le total des débits et le total des crédits que je recherche. Illustration:

A1 900 -600
A2 500 -450
A3 400 -100
A4 Total crédits Total débits

En A1 le X et le Y ne doivent pas être figés ; si je change des données mes totaux sont actualisés, ma cellule A1 doit l’être aussi.

Sous Excel j’aurais en A1 :

= « Le total des débits est » & B4 & « et celui des crédits » & C4

Je suis incapable d’écrire la même chose en VBA… J’ai tout essayé, mais je dois avoir un problème de syntaxe. Je ne comprends notamment pas pourquoi cette commande ne marche pas :

Cells(1, 1).Formula = "= "Le total des débits est & B" & a & " & et celui des crédits & C" & a".

Les colonnes ne changent pas d'un tableau à l'autre et restent toujours B et C. La ligne, par contre, est aléatoire et est stockée dans la variable a.

Please help !

5 réponses


Bonjour,

votre concaténation est bel et bien "pas facile"

je ne suis pas sur d'avoir bien comprit, mais l'exemple
suivant devrait répondre à votre besoin ...

Sub Affichage()

    Dim Limite As Long, Syntaxe As String
    Dim PlageC As String, PlageD As String
    
    Limite = Range("A1:A65535").End(xlDown).Row
    
    PlageC = "B" & Limite
    PlageD = "C" & Limite
    
    Range("A1").Select
    Syntaxe = "=" & """" & "Le total des crédits est " & """" & "&" & PlageC & _
        "&" & """" & " Le total des débits est " & """" & "&" & PlageD
    
    ActiveCell.Offset(0, 0).Value = Syntaxe
    
End Sub
'

Lupin
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
27
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
22 mai 2008
3
Avec ta suggestion j'ai le meme problème qu'avec ma commande Formula.

VBA me dit Compile error: Expected: End of statement.
Il y a un problème de guillemets sur "le total..." je pense.

De plus, si je ne m'abuse, ta formule va me mettre la valeur actuelle des cellules en A1 mais ce n'est pas uniquement ce que je veux.
J'y veux une référence à ces cellules de sorte que si elles changent, ma cellule A1 change aussi.

D'autres idées?

Merci de ton aide.
Messages postés
232
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
12 juin 2007
175
Salut,

t'as essayé un truc du genre:
Cells(1, 1).FormulaR1C1 = "= "Le total des débits est " & Cells(a ,2).Value & " et celui des crédits est " & Cells(a,3).Value & ".""

Pas sûr que ça marche mais ça se tente...
Messages postés
27
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
22 mai 2008
3
up! :)
Il y a bien un pro de la concaténation sur ce site, non?
Messages postés
27
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
22 mai 2008
3
Merci beaucoup, c'est excellent!

Je vais pouvoir me servir de ce code comme base, car ma concaténation est en réalité plus compliquée lol.

++