Bonjour le forum
je dois détecter l'arrivée du mois suivant en vba , à l'ouverture de mon fichier excel
sub auto_open
if month(now)= month(now)+1 then
décaler une plage de variable de 9 cellules
end if
end sub
exemple concret: là, nous sommes en juillet,
quand Aout arrive, il y aura un décalage automatique dans le but de p prévoir que les couts du mois en cours !
cette condition ne sera jamais vérifiée car le mois actuel ne sera jamais égal au mois suivant
pour cela il faut mettre le mois dans une cellule et tester cette cellule à la prochaine ouverture du fichier
( en A1 par exemple )
Code:
Private Sub Workbook_Open()
If Month(Now) = [A1] Then
MsgBox ("il n'y a pas de changement de mois")
Else
MsgBox ("nous venons de changer de mois")
' ----------------------------------------------
' et c'est ici qu'il faut mettre la procédure
' pour décaler de 9 cellules
' ----------------------------------------------
End If
End Sub
en aucun cas, Month(Now) ne peut être égal à Month(Now)+1.
Pour vérifier qu'il y a changement de mois tu peux faire ainsi (avec la date de comparaison en A1, par exemple) : (fonction datediff("m"...) fait la différence en mois entre 2 dates : celle qui correspond au 1er du mois de A1 avec le 1er du mois en cours)
Code:
if DateDiff("m", DateSerial(Year([A1]), Month([A1]), 1), DateSerial(Year(Now), Month(Now), 1)) > 0 then msgbox "Nouveau mois"
ensuite pour décaler de 9 cellules, tout dépend de la structure de ta feuille... un exemple serait à ce stade le bienvenu
1)-- ça veut dire je dois l'utilisateur dois entrer manuellement la date dans [A1] , ?
2)--- quand j'essaye de comparer la case [A1] et la date actuel , il me sort des chiffres bizaroiques,
à rappeler que A1 doit contenir le mois et l'année
et la date actuel aussi
la différence sera une difference par rapport au mois : ex :
A1: 11/2011
dateActuel : 03/2012
DateDiff = 4
re,
je préférai que le 11/2011 se mets automatiquement en A1 !
l'idéal : à chaque entrée d'un nouveau projet, en A1 vient la date d'enregistrement du projet
comme ça la mise à jour se fait par rapport à cette date
avec ces deux codes,
le premier pour mettre la date du jour en A1 au moment de la sauvegarde
le second pour tester le changement de mois à chaque ouverture du fichier
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
[A1] = (Date)
End Sub
Private Sub Workbook_Open()
If Month(Date) <> Month([A1]) Then
MsgBox ("Nous venons de changer de mois")
' -------------------------------
' mettre ici le code pour décaler
' -------------------------------
End If
End Sub
re
merci phillipe, ça correspond bien à se que je cherche
MAIS
j'ai d'autres problème, ( comparaison des mois = 1339,...)
je veux essayer de s'en sortir et je vous tiens au courant