Manipulation des formules EXCEL 2000 via VB. Une bizarrerie à résoudre

Signaler
Messages postés
3
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
21 février 2012
-
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
-
Une bizarrerie, résolue mais non élucidée:
Sous VB Excel 2000 la programmation de formule dans une cellule Excel pose parfois qq problèmes. Par exemple le programme ci dessous:

Sub essai7()
Dim formule, code As String
code = "A"
formule = "=SOMME.SI(F2:F92;""" & code & """;G2:G92)-SOMME.SI(F2:F92;""" & code & """;J2:J92)"
Worksheets("Février").Range("J108").Formula = formule
MsgBox Worksheets("Février").Range("J108").Formula
End Sub


plante à l'exécution.(Error 1004)

Par contre le même programme légèrement modifié ci-dessous:
Sub essai7()
Dim formule, code As String
code = "A"
formule = "=SOMME.SI(F2:F92;""" & code & """;G2:G92)-SOMME.SI(F2:F92;""" & code & """;J2:J92)"
Worksheets("Février").Range("J108").FormulaLocal = formule
MsgBox Worksheets("Février").Range("J108").Formula
End Sub

fonctionne correctement.
Trouvez l'erreur!

Ancien développeur en retraite

4 réponses

Messages postés
3
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
21 février 2012

Du même auteur avec présentation + soignée. Pardon je n'avais pas remarqué les subtilités propres à ce forum.
Sub essai7() 
Dim formule, code As String 
code = "A" 
formule = "=SOMME.SI(F2:F92;""" & code & """;G2:G92)-SOMME.SI(F2:F92;""" & code & """;J2:J92)"
Worksheets("Février").Range("J108").Formula = formule 
MsgBox Worksheets("Février").Range("J108").Formula 
End Sub 



Sub essai7() 
Dim formule, code As String 
code = "A" 
formule = "=SOMME.SI(F2:F92;""" & code & """;G2:G92)-SOMME.SI(F2:F92;""" & code & """;J2:J92)"
Worksheets("Février").Range("J108").FormulaLocal = formule 
MsgBox Worksheets("Février").Range("J108").Formula 
End Sub 

Ancien développeur en retraite
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour
Si mes souvenir sont bons :

Formula formule sans appel à une fonction intégrée (a1+b2)
fomulalocal = appel à une fonction intégrée (=SUM(A1:A10)

bonne journée
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Re bonjour
Annule ma précédente réponse mes souvenirs n'étaient pas bon.

Formula = formule en anglais (=SUM(A1:A10)
Formulalocal = pour nous formule en français (=Somme(A1:A10)
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

Le VBA intègre une aide qui répond très bien à ce type de questionnement !

extrait de l'aide a propos de "Formula"

Cette propriété renvoie ou définit la formule de l'objet en notation de style A1 et dans le langage de la macro

Ici il faut comprendre le langage natif qui est Anglais US
[u]
extrait de l'aide a propos de "FormulaLocal"/u
[i]
Cette propriété renvoie ou définit la formule de l'objet, en utilisant les références du style A1 dans le langage de l'utilisateur/i

Ici il faut comprendre le langage d’installation de ton excel.

En résumé "Formula" ne comprend que les formules écrites avec le nom et la structure des fonctions en natif, soit l'anglais

dans ton cas la formule aurait fonctionnée si elle avait été ecrite comme suit :
formule = "=SUMIF(F2:F92,""" & code & """,G2:G92)-SUMIF(F2:F92,""" & code & """,J2:J92)"



A+