Lancer telle ou telle macro en fonction du mois cellule A1 feuil1, à la fermeture...

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais votre aide afin d'écrire une macro.
A la fermeture du fichier, je souhaite, en fonction du mois de la cellule A1 au format date fonction AUJOURDHUI(), lancer automatiquement la macro1 (pour janvier), les macro1 et 2 (pour février), les macro2 et 3 (pour mars) ect ect.
J'ai essayé de bidouiller ça dans ThisWorkbook, mais suis nul en VBA...donc ça plante :

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If Range("A1").Value = "janvier" Then 'A1 de la Feuil1 (Base)
Call macro1
If Range("A1").Value = "février" Then
Call macro1
Call macro2
If Range("A1").Value = "mars" Then
Call macro2
Call macro3
'ect
'ect
End If
End Sub

Merci pour votre aide.
A vous lire.
Bien amicalement,
Christian
 

vgendron

XLDnaute Barbatruc
Re : Lancer telle ou telle macro en fonction du mois cellule A1 feuil1, à la fermetu

Bonjour,

Sans ton fichier exemple, difficile d'être certain de la réponse,
mais comme tu dis que ta cellule A1 est au format date avec la formule =aujourdhui

ta macro devrait plutot ressembler à ca: avec un select case

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

mois=month(Range("A1"))

select case mois
case 1
  call macro1
case 2
  call macro2
case 2
  call macro3
'etc etc...

else case
  msgbox ("erreur pas de macro à lancer")
end select

End Sub
 

Christian0258

XLDnaute Accro
Re : Lancer telle ou telle macro en fonction du mois cellule A1 feuil1, à la fermetu

Re, le forum, vgendron,

Merci à toi pour ton aide.
Dis-moi, dans la macro pas besoin de préciser la feuille dans laquelle on prend la cellule A1 pour référence ?

A vous lire.
Merci
Christian
 

vgendron

XLDnaute Barbatruc
Re : Lancer telle ou telle macro en fonction du mois cellule A1 feuil1, à la fermetu

si c'est mieux.. surtout si la fenetre active au moment de la fermeture n'est pas la meme à chaque fois

mois=month(sheets("Base").Range("A1"))
 

Christian0258

XLDnaute Accro
Re : Lancer telle ou telle macro en fonction du mois cellule A1 feuil1, à la fermetu

Re, le forum, vgendron,

Merci pour cette ligne de commande.
Autre tite question dans la cellule A1 il faut mettre le format "m" pour obtenir 3 (mars) ou je peux laisser le format "mmm" pour mars.?
Merci
Christian
 

vgendron

XLDnaute Barbatruc
Re : Lancer telle ou telle macro en fonction du mois cellule A1 feuil1, à la fermetu

c'est comme tu veux: la Macro ne s'en occupe pas.. du moment que la cellule contienne une date, elle est capable d'en extraire le numéro du mois. qu'il soit affiché mars March ou 3..
 

Christian0258

XLDnaute Accro
Re : Lancer telle ou telle macro en fonction du mois cellule A1 feuil1, à la fermetu

Re, le forum, vgendron,
Je reviens vers vous pour une éventuelle amélioration ?
Quelle condition écrire expl ; case 2 janvier pour ne pas lancer cette macro si la date système 15 est atteinte...?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
mois = Month(Sheets("Saisies").Range("B1"))
select case mois
case 1
call janvier
case 2
call janvier 'ne rien faire si la date système du 15 est atteinte
case 2
call février
case 3
call février 'ne rien faire si la date système du 15 est atteinte
case 3
call mars

ect ect
End Select
End Sub

Merci pour votre aide.
Bien amicalement,
Christian
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : Lancer telle ou telle macro en fonction du mois cellule A1 feuil1, à la fermetu

Hello

il suffit de rajouter un test sur le jour système
date système est donnée par Now
day(now) retourne le jour
aujourd'hui. ca donne le 10

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
mois = Month(Sheets("Saisies").Range("B1"))
select case mois

case 1
  if day(now)>=15 then call janvier

case 2
  call février

case 3
call mars


End Select
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 963
Membres
103 068
dernier inscrit
Strogoff