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

plg0037 Messages postés 3 Date d'inscription mercredi 9 février 2011 Statut Membre Dernière intervention 21 février 2012 - 11 févr. 2011 à 11:34
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 - 14 févr. 2011 à 15:04
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

plg0037 Messages postés 3 Date d'inscription mercredi 9 février 2011 Statut Membre Dernière intervention 21 février 2012
11 févr. 2011 à 12:08
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
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
12 févr. 2011 à 04:15
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
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
12 févr. 2011 à 04:25
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)
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 févr. 2011 à 15:04
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+
0
Rejoignez-nous