Probleme avec activecell.formulaR1C1 en vba

Résolu/Fermé
skykiller31 Messages postés 112 Date d'inscription dimanche 20 avril 2008 Statut Membre Dernière intervention 5 août 2011 - 3 août 2011 à 01:35
skykiller31 Messages postés 112 Date d'inscription dimanche 20 avril 2008 Statut Membre Dernière intervention 5 août 2011 - 5 août 2011 à 02:25
Bonjour,

après plusieurs recherches je n'ai trouvé que des solutions qui ne fonctionnent pas sur mon fichier xls.

voici mon code:

Sub test()

Dim formule As String

formule = "=SI(A34="""";""-"";RECHERCHEV(A34 ;'C:\Documents and Settings\CLIENT\Mes documents\[EasyFact v1.0.xls]Tarifs Par Défaut'!$A:$C;2;0))"

'vérifier ce que formule contienne
MsgBox formule

ActiveCell.FormulaR1C1 = formule

End Sub

ce code est conçu dans le but d'attribuer une formule de calcul à la cellule sélectionée auparavant.

j'ai vérifié ce que contient la variable formule et ça correspond exactement à la formule que j'ai conçu manuellement dans un autre fichier xls.

=SI(A34="";"-";RECHERCHEV(A34 ;'C:\Documents and Settings\CLIENT\Mes documents\[EasyFact v1.0.xls]Tarifs Par Défaut'!$A:$C;2;0))

dès j'enlève le signe = mon code fonctionne mais dès que je l'remets il m'affiche un msg d'erreur 1004

j'ai cherché partout mais rien ne fonctionne, alors je me remets au pros du VBA ;)

merci d'avance!!!


3 réponses

skykiller31 Messages postés 112 Date d'inscription dimanche 20 avril 2008 Statut Membre Dernière intervention 5 août 2011 5
4 août 2011 à 12:18
merci franck pour ce ptit rappel, mais même en l'adaptant au vb, ça ne marche pas, il me donne le même message d'erreur.

j'ai testé avec une formule de VLOOKUP tres simple et ça a marché, donc je me suis dit que c'est peut être ma formule qui n'est pas conforme au langage mais là c'est pas le cas non plus
1
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
4 août 2011 à 13:19
Bonjour,
1- vire le R1C1 de
ActiveCell.FormulaR1C1
La formule :
formule = "=IF(A34="""",""-"",VLOOKUP(A34,'C:\Documents and Settings\CLIENT\Mes documents\[EasyFact v1.0.xls]Tarifs Par Défaut'!$A:$C,2,0))"
fonctionne impeccablement chez moi avec ActiveCell.Formula = formule

2- Sinon
N'aurais tu pas omis de remplacer un ";" par une ","???
Si tu n'en es pas sur ajoute :
formule = Replace(formule, ";", ",")
Donc teste :
Sub test() 
Dim formule As String 
formule = "=IF(A34="""",""-"",VLOOKUP(A34,'C:\Documents and Settings\CLIENT\Mes documents\[EasyFact v1.0.xls]Tarifs Par Défaut'!$A:$C,2,0))"
formule = Replace(formule, ";", ",")
'vérifier ce que formule contienne 
MsgBox formule 
ActiveCell.Formula = formule 
End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
3 août 2011 à 08:42
Salut,
Des p'tits trucs pour utiliser VBA avec des formules :
1- les fonctions doivent être en Anglais,
2- les délimiteurs sont différents sous VBA et sous Excel. exemple ici, le ";" d'Excel devient "," en VBA.
Ta formule devient donc :
formule = "=IF(A34="""",""-"",VLOOKUP(A34,'C:\Documents and Settings\CLIENT\Mes documents\[EasyFact v1.0.xls]Tarifs Par Défaut'!$A:$C,2,0))"
0
skykiller31 Messages postés 112 Date d'inscription dimanche 20 avril 2008 Statut Membre Dernière intervention 5 août 2011 5
5 août 2011 à 02:25
bonjour Frank!!
avant de poster la 2eme fois j'ai refait le code avec tes consignes mais ça n'a pas marché et quand j'ai remplacé "formulaR1C1" par "formula" c'était le jackpot...:)

Donc Merci bcp pour ton aide précieuse, t'es un vrai pro ;)
0