Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/09/2011, 15h03   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 6
Points : 2
Points : 2
Par défaut NOVICE VBA fonction SUM

Salut à tous,
Aprés plusieurs années sans toucher une ligne de code j'ai beaucoup de mal a m'y remettre surtout quand c'est pour le boulot

Voila je bloque sur la somme de cellule d'une ligne, mon code est le suivant:

Code :
1
2
3
4
5
6
Dim num_lastlign As Variant ' numéro derniere ligne
Dim nb_line As Variant ' numéro de ligne utilisé
 
For nb_line = 8 To num_lastlign Step 1
Cells(nb_line, 3) = Application.Evaluate("sum(Cells(nb_line, 4):Cells(nb_line, 6))")
Next
En gros je veux:
additionner de D4 à D6 et mettre le resultat dans D3
additionner de E4 à E6 et mettre le resultat dans E3
jusqu'a la fin de la boucle

la boucle fonctionne correctement, la fonction s'execute mais dans la cellule excel qui doit recevoir la somme j'ai: #NOM?

avec le code suivant:
Code :
1
2
3
For nb_line = 8 To num_lastlign Step 1
Cells(nb_line, 3).Value = Application.Evaluate("sum(Cells(nb_line, 4).value:Cells(nb_line, 6).value)")
Next
la dans les cellules excel j'ai #VALEUR!

Merci de votre aide
super_dek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 15h42   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
En utilisant la fonction Somme d'Excel
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub MonTest()
Dim LastLig As Long                                        ' numéro derniere ligne remplie de la colonne A
 
Application.ScreenUpdating = False
With Worksheets("Feuil1")                                  'à adapter
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
    If LastLig > 3 Then
        With .Range(.Cells(3, 4), .Cells(3, 8)) 'les sommes de D3 à H3
            .FormulaR1C1 = "=SUM(R[1]C:R[" & LastLig - 3 & "]C)"
            .Value = .Value
        End With
    End If
End With
End Sub
Sinon, pour ton code tu aurais du faire comme ceci
Code :
1
2
3
4
5
Dim i As Integer
 
For i = 3 To 8
    Cells(3, i) = Evaluate("sum(" & Cells(4, i).Address & ":" & Cells(LastLig, i).Address & ")")
Next
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 18/09/2011, 16h09   #3
Invité de passage
 
Inscription : janvier 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 6
Points : 2
Points : 2
testé et approuvé!

merci beaucoup!
super_dek est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h20.


 
 
 
 
Partenaires

Hébergement Web