[Excel VBA] additions de plusieurs feuilles

Fermé
PtitDab - 25 juin 2009 à 17:13
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 26 juin 2009 à 09:41
Bonjour,
je vais essayer de vous expliquer mon problème:

je suis débutante en VBA et j'ai un fichier excel avec une feuille "résumé" dans laquelle je veux additionner des plages de cellules d'autres feuilles,
en bref, je veux que dans la cellule A1 de la feuille résumé, il y ait A1 de la feuille 2 + A1 de la feuille 3 ...
Le problème est que je le nombre de feuilles n'est pas connu à l'avance.
Voici le code que j'ai mais qui ne fonctionne pas:

Sub calcul()
Dim somme(5) As Variant
Dim i As Integer
Dim j As Integer
Dim n As Integer
n = ThisWorkbook.Worksheets.Count
For i = 0 To 4
For j = 1 To n
somme(i) = somme(i) + Worksheets(j).Range("A1:A5").Cells(i).Value
Next j
Next i
Range("A1:A5").Value = somme
End Sub

L'erreur provient de la ligne "somme(i)=somme(i)+....." le débogage renvoit "erreur définie par l'application ou par l'objet"

Merci pour votre aide si précieuse
A voir également:

2 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 juin 2009 à 20:07
Bonjour,

J'avoue ne pas avoir bien compris ce que tu cherchais à faire en lisant ton code.

Voilà 2 méthodes qui, je pense, peuvent t'aider.

A noter ici les méthodes parcourent les 6 premières lignes de la colonne A de chaque feuille sauf de la feuille "résumé". A toi de l'adapter si ça te convient.
Sub test()
Dim i As Long
Dim j As Long

For i = 1 To Worksheets.Count
    For j = 1 To 6
        If Worksheets(i).Name <> "résumé" Then
            Worksheets("résumé").Cells(j, 1).Value = Worksheets("résumé").Cells(j, 1).Value + Worksheets(i).Cells(j, 1).Value
        End If
    Next j
Next i

End Sub

Sub test2()
Dim sh
Dim j As Long

For Each sh In Worksheets
    For j = 1 To 6
        If sh.Name <> "résumé" Then
            Worksheets("résumé").Range("A" & j).Value = Worksheets("résumé").Range("A" & j).Value + sh.Range("A" & j).Value
        End If
    Next j
Next sh

End Sub


Bon courage

;o)
0
Bonjour Polux, le forum,

j'ai essayé ton code et ça fonctionne nickel
merci beaucoup
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > PtitDab
26 juin 2009 à 09:41
Salut,

De rien, bon courage pour la suite

;o)
0
Merci Polux
j'essaierai ca demain et je te tiens au courrant.
Bonne soirée
0