Inserer une formule dans excel par macro en vba

ANNIBAL3 Messages postés 4 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 29 août 2008 - 28 août 2008 à 11:00
cs_comme Messages postés 122 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 18 juillet 2009 - 29 août 2008 à 18:28
Bonjour,

je me permet de poser cette question car je n'ai pas trouver de reponse dans les forums ( ou j'ai mal cherché )

Voici ma question elle concerne l'insertion de formule excel par le biais d'une macro en vba :

je cherche à insérer en celulle D1 la formule suivante : =SI(feuil1!$A$1="";"";A1)

je tape la formule suivante et le message qui apparait c'est " la méthode de la classe range a échoué ", pouvez vous s'il vous plait m'aider à corriger mon script :

Range("D1").Formula = "=SI(Données!$A$1="";"";A1)"

merci

12 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
28 août 2008 à 12:20
Bonjour,

De tête il me semble qu'il faur mettre le nom anglais de la fonction :
Range("D1").Formula = "= IF (Données!$A$1 ="";"";A1)"

0
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
28 août 2008 à 13:57
Salut ,
j'ai également un problème avec le code même avec IF.
Mais par contre , quand j'ecris cette formule directement dans la
cellule ,ça fonctionne !    =SI(Données!$A$1="";"";A1).
Je ne comprend pas pourquoi ?

Tu peut remplacer par:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)




 If Trim(Sheets("Données").Range("A1").Value) = "" Then
    Sheets("Données").Range("D1").Value = ""
 Else
    Sheets("Données").Range("D1").Value = _
    Sheets("Données").Range("A1").Value
 End If
 
End Sub

A++
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
28 août 2008 à 14:07
Bonjour,

Sinon enregistre une macro quand tu fais cela, tu verra bien le code qu'il te génère.

0
ANNIBAL3 Messages postés 4 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 29 août 2008
28 août 2008 à 14:13
en effet il n'accepte pas non plus le "IF", merci pour ta réponse mais je ne comprends pas pourquoi il n'accepte pas ce script car par exemple si je lui demande :

Range("A1").select
Activecell="=feuil1!A2"

il accepte

mais

Range("A1").select
Activecell="=si(feuil1!A2="";1;0)"

il refuse

alors je serais curieux de savoir poukoi

babal
0

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

Posez votre question
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
28 août 2008 à 14:32
Bonjour,

Je me répète :
Enregistre une macro quand tu fais cela, tu verra bien le code qu'il te génère.

Moi j'ai obtenu pour
A1 : =SI(B1=10;0;B1)

ActiveCell.FormulaR1C1 = "=IF(RC[1]=10,0,RC[1])"

0
ANNIBAL3 Messages postés 4 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 29 août 2008
28 août 2008 à 15:23
en effet je suis bête de ne pas y avoir pensé avant merci beaucoup

babal
0
cs_comme Messages postés 122 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 18 juillet 2009
29 août 2008 à 12:36
Une autre idéé :

Sub MACC()
Dim EG As String, VD1 As String, VD2 As String, VD3 As StringEG "+": VD1 "SI($A$1=": VD2 = """": VD3 = """;"""";A1)"
Range("D1").Select
Range("D1").Formula = EG & VD1 & VD2 & VD3
End Sub
if faut bien compter les guillemets et ça marche........
 La formule s'insère exactement et fonctionne lorsque on double clic dessus
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
29 août 2008 à 12:43
Bonjour,

Uniquement pour faciliter la lecture :

EG = "+"
VD1 = "SI($A$1="
VD2 = """"
VD3 = """;"""";A1)"
est plus clair que :EG "+": VD1 "SI($A$1=": VD2 = """": VD3 = """;"""";A1)"

Et ton Formula est = "+SI($A$1="""";"""";A1)" en une ligne, c'esttrès lisible (à condition de savoir compter les doublequote ).

0
cs_comme Messages postés 122 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 18 juillet 2009
29 août 2008 à 15:45
MR Nhenry , bonne remarque mais dites si celà fonctionne ou non..
en conclusion voici la bonne idée pour  ANNIBL3 qui a posé la question


sub macc
Range("D1").Select
Range("D1").Formula = "+SI($A$1="""";"""";A1)"


end sub

ça marche bien
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
29 août 2008 à 16:10
Bonjour,

Je ne parvien pas à faire fonctionner ton exemple en fait (je n'avais pas tester).
Ce que tu donne m'affiche le texte et si je met = à la place du +, ça foire (Erreur) (même si je change SI par IF).

0
ANNIBAL3 Messages postés 4 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 29 août 2008
29 août 2008 à 16:24
merci beaucoup à vous c niquel

bon week end

babal
0
cs_comme Messages postés 122 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 18 juillet 2009
29 août 2008 à 18:28
Ne  met pas le " = "à la place de "+" car c'est la meme chose pour une formule ;
C'est du texte oui mais double clic dessus et avec la touche entrée ça donne le resultat;;;;
0
Rejoignez-nous