[Excel VBA] Problème formule de concaténation

Résolu/Fermé
Kvo Messages postés 27 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 22 mai 2008 - 26 avril 2007 à 11:31
Kvo Messages postés 27 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 22 mai 2008 - 17 mai 2007 à 17:41
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 !
A voir également:

5 réponses

Utilisateur anonyme
17 mai 2007 à 17:19
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
Kvo Messages postés 27 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 22 mai 2008 3
26 avril 2007 à 13:41
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.
1
xjl Messages postés 232 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 12 juin 2007 183
26 avril 2007 à 11:48
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...
0
Kvo Messages postés 27 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 22 mai 2008 3
17 mai 2007 à 12:50
up! :)
Il y a bien un pro de la concaténation sur ce site, non?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kvo Messages postés 27 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 22 mai 2008 3
17 mai 2007 à 17:41
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.

++
0