Un peu d'aide svp.

Résolu/Fermé
Mathbenjo Messages postés 30 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 7 juillet 2010 - 11 mai 2009 à 09:46
Mathbenjo Messages postés 30 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 7 juillet 2010 - 11 mai 2009 à 13:33
Bonjour à tous,

Je dévelloppe une petite macro en vb/vba pour excel. Une partie de cette dernière consiste à reprendre la formule d'une cellule existance et de la compléter par le contenu d'un conbobox.
Rien de folichon. J'ai donc ecrit le code suivant :

Sheets("feuil1").Select
Range("C3").Select
Dim tt
tt = Range("C1").Formula
ActiveCell.Formula = tt + "+" + ComboBox1.Value + "!R[3]C[0]"

La formule en C1 est : =Feuil2!C4+Feuil3!C4

il devrait me sortir cela : =Feuil2!C4+Feuil3!C4+Feuil2!C6 (si j'ai choisi Feuil2 dans ma combobox)

mais il me sort cela : =Feuil2!$D:$D+Feuil3!$D:$D+Feuil2!C6

Cela doit venir d'un guillement qui manque ou je c pas trop. Si quelqu'un peut m'aider.
MErci

3 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
11 mai 2009 à 11:31
Bonjour,

C'est le mélange entre les deux modes de notation de formule qui pose problème :
La notation de type "C4" et la notation relative de type "R[3]C[0]"
Il faut opter pour l'une ou l'autre. Par exemple ce code fonctionne :

Sheets("Feuil1").Select
Range("C3").Select
Dim tt As String
tt = Range("C1").Formula
ActiveCell.Formula = tt & "+" & ComboBox1.Value & "!C6"

Remarque : Il vaut mieux utiliser l'opérateur de concaténation & et déclarer tt en texte

A+


EDIT : pardon je viens de corriger en remettant ComboBox1.Value
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
11 mai 2009 à 11:49
Re bonjour,

Pour être exhaustif, voici le code qui fonctionne en relatif :

Sheets("Feuil1").Select
Range("C3").Select
Dim tt As String
ActiveCell.Formula = Range("C1").Formula
ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+" & ComboBox1.Value & "!R[3]C[0]"

En effet, il faut d'abord recopier la formule en C3 car si on prend le texte brut de la formule en C1, la référence relative n'est plus bonne pour C3

A+
0
Mathbenjo Messages postés 30 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 7 juillet 2010
11 mai 2009 à 13:33
Genial ca marche, merci beaucoup pour ton aide.
Je débute en vb je connais pas toutes les specificitées.

Bonne journée.
0