OVH Cloud OVH Cloud

Consolider les feuilles d'un classeur

2 réponses
Avatar
Thierry
Bonsoir,

pour la gestion de heures de main d'oeuvre, j'utise un classeur par mois
dans lequel j'ai une feuille nommé "Récap", une autre "Modèle" et un certain
nombre de feuilles portant le nom des salariés ayant travaillé sur le mois
concerné.

je veux consolider toutes les feuilles des salariés du classeur vers la
feuille "Récap".

En utilisant l'enregistreur de macro j'obtient:

Selection.Consolidate
Sources:=Array("'SalariéA'!R5C3:R66C33","'SalariéB'!R5C3:R66C33",
etc ),Function:=xlsum, etc

D'un mois à l'autre, le nombre de salariés peut être différent ainsi que
leur nom.
C'est pourquoi je ne peut pas me contenter de la solution ci dessus.

J'aimerai récupérer le nom des feuilles automatiquement.

exemple:

NbFeuil=Sheets.count
For i=1 to NbFeuil
If Sheets(i).Name ="Récap" Then Goto Suivant
If Sheets(i).Name ="Modèle" Then Goto Suivant
Suivant:
Next i

à partir de là je bloque.
je ne sais pas comment construire ma Source.


Merci de l'aide que vous pourriez m'apporter.

Thierry

2 réponses

Avatar
Daniel
Bonsoir.
Essaie une boucle du genre (la feuille de récap se nommant "recap")

Sub test()
Dim sh As Worksheet, Ctr As Single
For Each sh In Sheets
If sh.Name <> "Recap" Then
Ctr = Ctr + sh.Range("A1").Value
'*** etc.
End If
Next sh
Sheets("Recap").Range("A1") = Ctr
End Sub

Cordialement.
Daniel
"Thierry" a écrit dans le message de news:

Bonsoir,

pour la gestion de heures de main d'oeuvre, j'utise un classeur par mois
dans lequel j'ai une feuille nommé "Récap", une autre "Modèle" et un
certain
nombre de feuilles portant le nom des salariés ayant travaillé sur le mois
concerné.

je veux consolider toutes les feuilles des salariés du classeur vers la
feuille "Récap".

En utilisant l'enregistreur de macro j'obtient:

Selection.Consolidate
Sources:=Array("'SalariéA'!R5C3:R66C33","'SalariéB'!R5C3:R66C33",
etc ),Function:=xlsum, etc

D'un mois à l'autre, le nombre de salariés peut être différent ainsi que
leur nom.
C'est pourquoi je ne peut pas me contenter de la solution ci dessus.

J'aimerai récupérer le nom des feuilles automatiquement.

exemple:

NbFeuil=Sheets.count
For i=1 to NbFeuil
If Sheets(i).Name ="Récap" Then Goto Suivant
If Sheets(i).Name ="Modèle" Then Goto Suivant
Suivant:
Next i

à partir de là je bloque.
je ne sais pas comment construire ma Source.


Merci de l'aide que vous pourriez m'apporter.

Thierry




Avatar
lSteph
Bonsoir Thierry,

Si la consolidation vise ainsi la somme de cellules situées toujours à même
adresse dans chaque feuille.,
on peut faire cela sans macro,
(Il te faut placer ton récap et modèle ou complètement avant ou complètement
après les autres feuilles)
donc avec une formule exemple en b2 ainsi à étendre:
=somme(feuilDeb:feuilFin!b2)
feuilDeb et feuilFin envisagés ici comme les noms de la première et de la
dernière des feuilles à additionner.
Pour les nouvelles il faudra les insérer entre les deux, celles qui en
seront sorties ne seront plus prises en compte.

'lSteph
"Thierry" a écrit dans le message de news:

Bonsoir,

pour la gestion de heures de main d'oeuvre, j'utise un classeur par mois
dans lequel j'ai une feuille nommé "Récap", une autre "Modèle" et un
certain
nombre de feuilles portant le nom des salariés ayant travaillé sur le mois
concerné.

je veux consolider toutes les feuilles des salariés du classeur vers la
feuille "Récap".

En utilisant l'enregistreur de macro j'obtient:

Selection.Consolidate
Sources:=Array("'SalariéA'!R5C3:R66C33","'SalariéB'!R5C3:R66C33",
etc ),Function:=xlsum, etc

D'un mois à l'autre, le nombre de salariés peut être différent ainsi que
leur nom.
C'est pourquoi je ne peut pas me contenter de la solution ci dessus.

J'aimerai récupérer le nom des feuilles automatiquement.

exemple:

NbFeuil=Sheets.count
For i=1 to NbFeuil
If Sheets(i).Name ="Récap" Then Goto Suivant
If Sheets(i).Name ="Modèle" Then Goto Suivant
Suivant:
Next i

à partir de là je bloque.
je ne sais pas comment construire ma Source.


Merci de l'aide que vous pourriez m'apporter.

Thierry