Report automatique

DAD

XLDnaute Nouveau
Bonjour,
J'ai un fichier excel qui me créer automatiquement avec une macro d'après une feuille modéle un feuille par jour du mois :
exemple
01 JUILLET 2011
02 JUILLET 2011 etc ect
et cela et sans fin en fonction de la plage de date que je défini.
Ce que j'ai besoin c'est que le total de la cellule M23 de la feuille du 01 JUILLET se reporte en cellule M3 de la feuille du 02 JUILLET et etc etc jusqu'a la dernier feuille
Est ce que qq aurait la macro qui va bien ?
Merci d'avance
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Report automatique

Bonsoir Dad et bienvenue sur XLD, hello le Forum

Une approche très simple mais à la seule condition que ton classeur soit structuré dans un order logique des feuilles comme suit :

Index 1 = 01 JUILLET 2011
Index 2 = 02 JUILLET 2011
Index 3 = 04 JUILLET 2011
Index 4 = 05 ...
Et ainsi de suite ...

Par Index, nous entendons que c'est la propriété de l'ordre des Feuilles de Gauche à Droite (1 étant l'index de la Feuille à extrême Gauche)

Par ailleurs je prévois que tu aies dans ce classeur un ou plusieurs Onglets qui ne contiennent pas de Solde à reporter, donc j'ai prévu un Select Case, les feuilles renseignées ne seront pas prises en considération (pas de report en page Index suivant)
Code:
Option Explicit
Private Const CELL_SOLDE As String = "M23"
Private Const CELL_REPORT As String = "M3"
 
Sub Report_Solde()
Dim WB As Workbook, WS As Worksheet
Dim TheSolde As Double
Set WB = ThisWorkbook
For Each WS In WB.Worksheets
    If Sheets.Count < WS.Index + 1 Then Exit For
 
    Select Case WS.Name
 
        Case "Feuille Qui ne contient pas de solde"
        TheSolde = 0
            '===> Nothing To Do"
 
        Case "Autre Feuille Qui ne contient pas de solde"
            '===> Nothing To Do
 
        Case Else
            TheSolde = WS.Range(CELL_SOLDE)
            Worksheets(WS.Index + 1).Range(CELL_REPORT) = TheSolde
 
    End Select
Next WS
End Sub

NB Par le fait que je passe une Variable "TheSolde" le montant reporté sera "en dur" (pas une formule réactualisable). Si le besoin était ce serait une autre approche plus compliquée et il faudrait fabriquer une formule écrite par VBA, mais je n'ai pas compris ce besoin dans la demande. (au cas où cette macro peut être lancée à chaqyue changement aussi)

Cordialement,

@+Thierry
 

DAD

XLDnaute Nouveau
Re : Report automatique

Super c'est ce que je voulais !!

comment faire pour que la macro soit automatique c'est à dire qu'elle prenne en compte les nouvelle saisie sans avoir besoin de la relancer à chaque fois ?

si c'est possible bien sûr !

en tout merci beaucoup déja pour cela.







Bonsoir Dad et bienvenue sur XLD, hello le Forum

Une approche très simple mais à la seule condition que ton classeur soit structuré dans un order logique des feuilles comme suit :

Index 1 = 01 JUILLET 2011
Index 2 = 02 JUILLET 2011
Index 3 = 04 JUILLET 2011
Index 4 = 05 ...
Et ainsi de suite ...

Par Index, nous entendons que c'est la propriété de l'ordre des Feuilles de Gauche à Droite (1 étant l'index de la Feuille à extrême Gauche)

Par ailleurs je prévois que tu aies dans ce classeur un ou plusieurs Onglets qui ne contiennent pas de Solde à reporter, donc j'ai prévu un Select Case, les feuilles renseignées ne seront pas prises en considération (pas de report en page Index suivant)
Code:
Option Explicit
Private Const CELL_SOLDE As String = "M23"
Private Const CELL_REPORT As String = "M3"
 
Sub Report_Solde()
Dim WB As Workbook, WS As Worksheet
Dim TheSolde As Double
Set WB = ThisWorkbook
For Each WS In WB.Worksheets
    If Sheets.Count < WS.Index + 1 Then Exit For
 
    Select Case WS.Name
 
        Case "Feuille Qui ne contient pas de solde"
        TheSolde = 0
            '===> Nothing To Do"
 
        Case "Autre Feuille Qui ne contient pas de solde"
            '===> Nothing To Do
 
        Case Else
            TheSolde = WS.Range(CELL_SOLDE)
            Worksheets(WS.Index + 1).Range(CELL_REPORT) = TheSolde
 
    End Select
Next WS
End Sub

NB Par le fait que je passe une Variable "TheSolde" le montant reporté sera "en dur" (pas une formule réactualisable). Si le besoin était ce serait une autre approche plus compliquée et il faudrait fabriquer une formule écrite par VBA, mais je n'ai pas compris ce besoin dans la demande. (au cas où cette macro peut être lancée à chaqyue changement aussi)

Cordialement,

@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Report automatique

Bonjour Dan, le Forum


Je suis content que tu puisses trouver ton bonheur avec cette petite macro.


On peut essayer de voir en Macro Evènementielle mais je viens juste de tester sur ThisWorkBook mais étrangement sur Private Sub Workbook_SheetChange nous plantons lamentablement…



Pas le temps de chercher pourquoi je dois partir… Une sorte de récurrence car tous les onglets changent par la Macro Report_Solde qui est elle-même relancée par l’évènement… (Une Histoire Sans fin !)




Essaies sur l’évènement Private Sub Workbook_SheetSelectionChange là cela semble fonctionner…. Tu changeras au moins de feuille pour vérifier si le solde est bien reporté…


VB:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Report_Solde
End Sub

Ceci dans le Private Module de ThisWorkBook (La Sub Report_Solde restant dans un module Public Standard)

Cordialement

@+Thierry
 

DAD

XLDnaute Nouveau
Re : Report automatique

Super cela fonctionne au top !!!!!!

merci beaucoup c'est super sympa je vais gagner un temps fou !!

bien cordialement.

Bonjour Dan, le Forum


Je suis content que tu puisses trouver ton bonheur avec cette petite macro.


On peut essayer de voir en Macro Evènementielle mais je viens juste de tester sur ThisWorkBook mais étrangement sur Private Sub Workbook_SheetChange nous plantons lamentablement…



Pas le temps de chercher pourquoi je dois partir… Une sorte de récurrence car tous les onglets changent par la Macro Report_Solde qui est elle-même relancée par l’évènement… (Une Histoire Sans fin !)




Essaies sur l’évènement Private Sub Workbook_SheetSelectionChange là cela semble fonctionner…. Tu changeras au moins de feuille pour vérifier si le solde est bien reporté…


VB:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Report_Solde
End Sub

Ceci dans le Private Module de ThisWorkBook (La Sub Report_Solde restant dans un module Public Standard)

Cordialement

@+Thierry
 

Discussions similaires

Réponses
0
Affichages
232

Statistiques des forums

Discussions
312 330
Messages
2 087 351
Membres
103 526
dernier inscrit
HEC