Bilan entre deux périodes

  • Initiateur de la discussion Initiateur de la discussion Ugop
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ugop

XLDnaute Nouveau
Bonjour,
Ma question est: est-il possible de créer un classeur bilan entre 2 periodes?
Je m'explique, dans un dossier Année(ex:2011),il y a 12 classeur excel (Janvier a decembre) comprenant 5feuilles chacun. Dans chaque classeur la 5éme feuille est la feuille bilan du mois.
J'aimerai savoir si il est donc possible de selectionner 2mois et de recuperer la feuille bilan de tous les Mois compris entre les 2Mois qu'on aura choisi ( ex: Juin et Aout => récuperer la feuille5 des classeur juin,juillet et Aout), et de faire la somme de tous les bilan directement.
(sachant que toutes les feuilles bilan sont identiques)

Merci de votre attention 🙂
 
Dernière édition:
Re : Bilan entre deux périodes

Bonjour.
Oui , ça semble possible et si je savais en quoi consistent les noms des classeurs, comment y sont organisées les données à sommer, je pourrais même vous dire comment faire.
Je pense à enregistrer une macro en y faisant, sur une feuille bilan résultante initiallment préparée à 0,
un collage spécial avec addition.
À+
 
Re : Bilan entre deux périodes

Alors voilà 1 des 12classeur du mois ainsi que le classeur Bilan dont on pourrait choisir les 2 dates.
En gros, dans 1 dossier il y aura 13 classeur. et ayant la possibilité de faire un copier/coller de ses 13 classeur dans un nouveau dossier ( ex: 2012).

Merci pour votre aide.
 

Pièces jointes

Re : Bilan entre deux périodes

Ça pourrait être dans ce style:
VB:
Sub SommBilans(ByVal DateDéb As Date, ByVal DateFin As Date)
Dim FCible As Worksheet, FSourc As Worksheet
Set FCible = ThisWorkbook.Worksheets(1)
FCible.[B14:E20].Value = 0
While Month(DateDéb) <= Month(DateFin)
   Workbooks.Open ThisWorkbook.Path & "\" & Format(DateDéb, "mmmm") & ".xls"
   Set FSourc = ActiveWorkbook.Worksheets(5)
   FSourc.[B14:E20].Copy
   FCible.[B14:E20].PasteSpecial Paste:=xlValues, Operation:=xlAdd
   DateDéb = DateSerial(Year(DateDéb), Month(DateDéb) + 1, 1)
   Wend
End Sub
À+
 
Re : Bilan entre deux périodes

Merci beaucoups, ca marche mais je suis face a un dernier petit probleme du a mon niveau assez faible. Comment on fait pour declarer DateDéb et DateFin sur la feuille Bilan ?
Et j'aimerais juste recuperer la 5eme feuille :s

Dsl et Merci encore
 
Dernière édition:
Re : Bilan entre deux périodes

Peut être:
VB:
SommBilans CvDate(Me.[DateDéb].Value), CvDate(Me.[DateFin].Value)
à condition que ce soit dans le module de la feuille portant le bouton de commande qui l'exécute,
et que DateDéb et DateFin y soient les noms donnés aux plages qui les contiennent par Insertion, Noms, Définir.
Il est encore possible de fabriquer une Date avec DateSerial(y, m, d) s'il est plus pratique d'indiquer des mois.
 
Re : Bilan entre deux périodes

Bonjour,

voila ce que j'obtiens:
=SOMME('V:\xxx\2011\[Janvier.xls]grille écoute 1'!B75;'V:\xxx\2011\[Janvier.xls]grille écoute 2'!B75;'V:\xxx\2011\[Janvier.xls]grille écoute 3'!B75;'V:\xxx\2011\[Janvier.xls]grille écoute 4'!B75😉
Il recupère toutes les feuilles d'un seul mois.
J'ai suivi vos instruction definir > nom> ...
Je ne comprends pas :s
 
Re : Bilan entre deux périodes

Je ne me suis évidemment pas farcis toutes les plages à sommer, je n'ai fait que de B14 à E20
À vous de rajouter le reste sans oublier ce j'aurais pu oublier, de toute façon, moi.
Si toutefois c'est dans cette plage de Bilan.xls que vous trouvez des formules au lieux de nombres, après une exécution, joignez ce classeur que je voie ce que vous avez fait.
 
Re : Bilan entre deux périodes

Cliquez un peu partout dans le code et à chaque fois: touche F1.
Si un terme fréquemment cidé dans les explications vous échape, redemandez moi demain.
Il fait ce que vous avez demandé :
Il met à 0 les valeurs d'un ensemble de plages (une seule dans ce que je vous ai écrit)
Puis il ouvre tour à tour des classeurs nommés comme des noms de mois, et cumule ces mêmes plages de la feuille 5 dans celles préalablement initialisée à 0. (une seule plage là aussi dans ce que je vous ai écrit.
Bonne soirée.
 
Re : Bilan entre deux périodes

Bonjour,
J'ai donc etudié le programme que vous m'avez envoyé et j'ai quelques questions
Workbooks.Open ThisWorkbook.Path & "\" & Format(DateDéb, "mmmm") & ".xls"
Ca veut dire que mes classeurs mois devront acomporter que 4lettres ? (ex: Janv / févr) ou c'est une norme?
Et pour declarer Datedéb et DateFin, j'ai fais Insertion, Noms, Définir pour les cases E3 et E4.
Comment assignez ces cases à dateDéb et date fin dans le code VBA?

Merci et bonne Appetit
 
Re : Bilan entre deux périodes

Bonjour
Ca veut dire que mes classeurs mois devront acomporter que 4lettres ?
Non, erreur peut être de ma part 3 "m" suffisent pour restituer le nom complet du mois.
Comment assignez ces cases à dateDéb et date fin dans le code VBA?
Version courte:
VB:
DateDéb = Feuil1.[DateDéb].Value
Avec Feuil1: le nom VBA de la feuille, encore appelé CodeName

Version longue:
VB:
DateDéb = Thisworkbook.Worksheets("LaFeuille").Range("DateDéb").Value
Avec Lafeuille: le nom Excel de la feuille (onglet).
À+


P.S. Il pouurait être nécessaire de faire plutôthighlight=vba]DateDéb = CDate(Feuil1.[DateDéb].Value)
[/code]
 
Dernière édition:
Re : Bilan entre deux périodes

Sub SommBilans(ByVal DateDéb As Month, ByVal DateFin As Month)
Dim FCible As Worksheet, FSourc As Worksheet
FCible = ThisWorkbook.Worksheets(1)
DateDéb = CDate(Feuil1.[DateDéb].Value)
DateDéb = CDate(Feuil1.[DateFin].Value)
FCible.[B14:E20].Value = 1
FCible.[B28:E29].Value = 1
FCible.[B37:E42].Value = 1
FCible.[B50:E51].Value = 1
FCible.[B59:E67].Value = 1
FCible.[B75:E75].Value = 1
While Month(DateDéb) <= Month(DateFin)
Workbooks.Open ThisWorkbook.Path & "\" & Format(DateDéb, "mmm") & ".xls"
Set FSourc = ActiveWorkbook.Worksheets(5)
FSourc.[B14:E20].Copy
FCible.[B14:E20].PasteSpecial Paste:=xlValues, Operation:=xlAdd
FSourc.[B28:E29].Copy
FCible.[B28:E29].PasteSpecial Paste:=xlValues, Operation:=xlAdd
FSourc.[B37:E42].Copy
FCible.[B37:E42].PasteSpecial Paste:=xlValues, Operation:=xlAdd
FSourc.[B50:E51].Copy
FCible.[B50:E51].PasteSpecial Paste:=xlValues, Operation:=xlAdd
FSourc.[B59:E67].Copy
FCible.[B59:E67].PasteSpecial Paste:=xlValues, Operation:=xlAdd
FSourc.[B75:E75].Copy
FCible.[B75:E75].PasteSpecial Paste:=xlValues, Operation:=xlAdd
DateDéb = DateSerial(Year(DateDéb), Month(DateDéb) + 1, 1)
Wend

End Sub

Voila le code que j'ai fais grace a votre aide.
J'ai essayer de mettre toutes les valeurs a 1 dans toutes les plages pour faire un test mais toutes les cases sont vides. pouvez vous m'éclairer? svp

Merci et bonne journée!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Règle de 3
Réponses
11
Affichages
831
Réponses
3
Affichages
671
Réponses
2
Affichages
553
Retour