OVH Cloud OVH Cloud

sum(Feuil1:Feuil2!A1) en vba

4 réponses
Avatar
Titi
Bonjour à tous,

Je suis en face d'un probleme que je ne sais résoudre.

j'ai 2 classeurs : 1 classeur avec 31 feuilles nommés de 1 a 31
(correspondant au jour d'un mois)ex:classeur1) et un second avec une
feuille recap (ex:classeur2)

sur la feuille recap (classeur2), j'ai deux date (ex: du 02/12/05 au
22/12/05)
a partir de ces dates je récupere dans un string le jour en chiffre.
j'ai donc par exemple strdate1=2 et strdate2=22
ces deux chiffre correspondent donc a la feuille 2 et la 22 de mon
classeur 1

j'aimerai donc selectionner toutes les feuilles (le tout en vba) de la
feuille 2 a 22 (y compris celles entre les 2)

afin d'additionner par exemple toutes les cellule "A1"

en fait remplacer la formule =sum([classeur1.xls]2:22!A1) par du code
vba. mais je ne peux pas ecrire (ex:ActiveSheets.range("B2")=
"=sum([classeur1.xls]2:22!A1)" )

car je ne connais pas a l'avance, le nom de mon classeur1
(strMonclasseur) ni le nom de mes feuilles puisqu'elles sont récupérer
dans un string.

j'espère avoir était claire dans mon explication.

D'avance, je vous remercie.

4 réponses

Avatar
JB
Bonjour,

Je ne sais pas si l'exemple ci dessous peut t'aider:
D3 et E3 contiennent la feuille de début et la feuille de fin.
La macro écrit la formule =SOMME(Feuil2:Feuil3!B3) et la recopie 4
fois.

http://cjoint.com/?mcsHs4MUMN

Sub essai()
Range("b3").Formula = "=Sum(" & [D3] & ":" & [E3] & "!B3)"
Range("b3").Select
ActiveCell.Copy Range(ActiveCell, ActiveCell.Offset(4, 0))
End Sub

Cordialement JB
Avatar
JLuc
*Bonjour Titi*,
dim somme, x
x=0
for x = strdate1 to strdate2
somme = somme + workbook("Classeur1").worksheets(x).range("A1")
next
Pas teste, mais devrait marcher :oÞ
Reviens nous dire
JLuc

Bonjour à tous,

Je suis en face d'un probleme que je ne sais résoudre.

j'ai 2 classeurs : 1 classeur avec 31 feuilles nommés de 1 a 31
(correspondant au jour d'un mois)ex:classeur1) et un second avec une feuille
recap (ex:classeur2)

sur la feuille recap (classeur2), j'ai deux date (ex: du 02/12/05 au
22/12/05)
a partir de ces dates je récupere dans un string le jour en chiffre.
j'ai donc par exemple strdate1=2 et strdate2"
ces deux chiffre correspondent donc a la feuille 2 et la 22 de mon classeur 1

j'aimerai donc selectionner toutes les feuilles (le tout en vba) de la
feuille 2 a 22 (y compris celles entre les 2)

afin d'additionner par exemple toutes les cellule "A1"

en fait remplacer la formule =sum([classeur1.xls]2:22!A1) par du code vba.
mais je ne peux pas ecrire (ex:ActiveSheets.range("B2")=
"=sum([classeur1.xls]2:22!A1)" )

car je ne connais pas a l'avance, le nom de mon classeur1 (strMonclasseur) ni
le nom de mes feuilles puisqu'elles sont récupérer dans un string.

j'espère avoir était claire dans mon explication.

D'avance, je vous remercie.



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS

Avatar
JB
Bonjour

Autre exemple avec des feuilles nommées Sem1,Sem2,...

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("D3:E3"), Target) Is Nothing Then
Range("b3").Formula = "=Sum(sem" & [D3] & ":sem" & [e3] & "!B3)"
Range("b3").Select
ActiveCell.Copy Range(ActiveCell, ActiveCell.Offset(6, 0))
End If
End Sub

http://cjoint.com/?mdiuVIpgWZ

Cordialement JB
Avatar
Titi
*Bonjour Titi*,
dim somme, x
x=0
for x = strdate1 to strdate2
somme = somme + workbook("Classeur1").worksheets(x).range("A1")
next
Pas teste, mais devrait marcher :oÞ
Reviens nous dire
JLuc

Bonjour à tous,

Je suis en face d'un probleme que je ne sais résoudre.

j'ai 2 classeurs : 1 classeur avec 31 feuilles nommés de 1 a 31
(correspondant au jour d'un mois)ex:classeur1) et un second avec une
feuille recap (ex:classeur2)

sur la feuille recap (classeur2), j'ai deux date (ex: du 02/12/05 au
22/12/05)
a partir de ces dates je récupere dans un string le jour en chiffre.
j'ai donc par exemple strdate1=2 et strdate2"
ces deux chiffre correspondent donc a la feuille 2 et la 22 de mon
classeur 1

j'aimerai donc selectionner toutes les feuilles (le tout en vba) de la
feuille 2 a 22 (y compris celles entre les 2)

afin d'additionner par exemple toutes les cellule "A1"

en fait remplacer la formule =sum([classeur1.xls]2:22!A1) par du code
vba. mais je ne peux pas ecrire (ex:ActiveSheets.range("B2")=
"=sum([classeur1.xls]2:22!A1)" )

car je ne connais pas a l'avance, le nom de mon classeur1
(strMonclasseur) ni le nom de mes feuilles puisqu'elles sont récupérer
dans un string.

j'espère avoir était claire dans mon explication.

D'avance, je vous remercie.




Merci JLuc,


fonctionne imppecable

également a toi JB