XL 2019 Renvoi d'erreur sur une somme créée en VBA

R.Noel

XLDnaute Nouveau
Bonjour à la communauté,

J'ai créé en VBA un code qui me créé une somme sur une plage dynamiquement créée:
VB:
    Dim ligne_bas As Integer
    cellule_bas = 2
    Dim cellule_haut As Integer
    cellule_haut = 2
    For j = 2 To nbre_lignes
        If Cells(j, 20) <> "" Then
            cellule_haut = j
            Cells(cellule_haut, 23).Formula = "=SOMME(V" & cellule_bas & ":V" & cellule_haut & ")"
            cellule_bas = j + 1
            cellule_haut = 0
        End If
    Next

On peut voir sur la capture que la formule générée est correcte, mais elle renvoie une erreur #VALEUR.

Or j'ai fait le teste de copier/coller cette formule dans la cellule juste à droite et là, elle fonctionne.
Capture.PNG
Capture2.PNG


La seule différence est que, dans la formule générée, le mot "somme" est en minuscules (alors que dans mon code il est en majuscules).

Pouvez-vous m'aider s'il vous plaît ?

PS: excusez si je ne réponds pas tout de suite, je suis un peu surchargé.

Merci d'avance !
 
Solution
Bonjour R.Noel, jean marie,

essaye :

Cells(cellule_haut, 23).Formula = "=SUM(V" & cellule_bas & ":V" & cellule_haut & ")"

si ça ne marche pas, je te propose d'utiliser Application.Sum()

soan

Salut Soan,

Bingo: il fallait écrire "SUM" et non "SOMME": ça fonctionne.

J'ai séché 2 heures en essayant toutes les combines mais je n'ai pas imaginé que le string "SUM" se traduirait automatiquement en "SOMME".

Grâce à vous, me voilà un peu moins novice en VBA.

Mille mercis, et bonne fin de journée :) :)

PS: je n'ai pas trouvé le moyen de mettre "Résolu".

R.Noel

XLDnaute Nouveau
Bonjour R.Noel
il aurait été super que tu joignes un fichier de quelques Ligne , surtout qu'il n'y a rien de Confidentielle !
jean marie
Bonjour !

Merci de ta réponse :) Mais justement, si: c'est confidentiel: c'est un gros fichier avec des données salariales nominatives.
Or si je l'édite, je risque d'avoir encore plus d'erreurs ...

Mais s'il n'est vraiment pas possible de diagnostiquer ainsi, j'essayerai de trouver une autre solution.

Merci Jean-Marie.
 

R.Noel

XLDnaute Nouveau
Bonjour R.Noel, jean marie,

essaye :

Cells(cellule_haut, 23).Formula = "=SUM(V" & cellule_bas & ":V" & cellule_haut & ")"

si ça ne marche pas, je te propose d'utiliser Application.Sum()

soan

Salut Soan,

Bingo: il fallait écrire "SUM" et non "SOMME": ça fonctionne.

J'ai séché 2 heures en essayant toutes les combines mais je n'ai pas imaginé que le string "SUM" se traduirait automatiquement en "SOMME".

Grâce à vous, me voilà un peu moins novice en VBA.

Mille mercis, et bonne fin de journée :) :)

PS: je n'ai pas trouvé le moyen de mettre "Résolu".
 

ChTi160

XLDnaute Barbatruc
Re
ce que j'ai bidouillé
VB:
Dim ligne_bas As Integer
    Dim cellule_haut As Integer
    cellule_haut = 2
    For j = 2 To 10 'j'ai mis 10 
        If Cells(j, 1) <> "" Then
        Cells(j, 2).Formula = "=SUM(A" & cellule_haut & ":A" & j & ")"   '  la colonne est A 
        End If
    Next
oups c'était résolu Lol
jean marie
 

ChTi160

XLDnaute Barbatruc
Re
ce que j'ai bidouillé
VB:
Dim ligne_bas As Integer
    Dim cellule_haut As Integer
    cellule_haut = 2
    For j = 2 To 10
        If Cells(j, 1) <> "" Then
        Cells(j, 2).Formula = "=SUM(A" & cellule_haut & ":A" & j & ")"        
        End If
    Next
ca aussi ca marche je crois
Code:
 Cells(j, 2).FormulaLocal = "=Somme(A" & cellule_haut & ":A" & j & ")"
jean marie
 

R.Noel

XLDnaute Nouveau
Re
ce que j'ai bidouillé
VB:
Dim ligne_bas As Integer
    Dim cellule_haut As Integer
    cellule_haut = 2
    For j = 2 To 10
        If Cells(j, 1) <> "" Then
        Cells(j, 2).Formula = "=SUM(A" & cellule_haut & ":A" & j & ")"       
        End If
    Next
ca aussi ca marche je crois
Code:
 Cells(j, 2).FormulaLocal = "=Somme(A" & cellule_haut & ":A" & j & ")"
jean marie
Je testerai quand même demain ChTI160, juste pour t'apporter une réponse pour ton aide. :)
 

R.Noel

XLDnaute Nouveau
Re
ce que j'ai bidouillé
VB:
Dim ligne_bas As Integer
    Dim cellule_haut As Integer
    cellule_haut = 2
    For j = 2 To 10 'j'ai mis 10
        If Cells(j, 1) <> "" Then
        Cells(j, 2).Formula = "=SUM(A" & cellule_haut & ":A" & j & ")"   '  la colonne est A
        End If
    Next
oups c'était résolu Lol
jean marie
Bonjour ChTi160 et Soan,

comme promis hier, j'ai testé la solution de ChTi160 en l'adaptant à mon code, et en définitive, cela m'amène à la solution de Soan. Donc bravo à vous deux.

Merci et à bientôt.

Belle journée à tous.
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 137
Membres
112 668
dernier inscrit
foyoman