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
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)
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 ?
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)
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)
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)