Alerte à la fin du mois avec msgbox
Bonjour tout le monde,
je voudrai pouvoir afficher une alerte avec un msgbox sur ma feuille lorsque la date du jour est le dernier jour du mois.
Sur ma feuille la date du jour se trouve en cellule C6
J'ai commencé avec ces lignes mais je crois que tout est faux !
Pourriez-vous m'aider SVP
Private Sub Workbook_Open()
If Range("C6") = DateFinMois Then
MsgBox "ATTENTION ! N'oubliez pas de clore le mois en cours aujourd'hui ! "
End If
End Sub
Merci d'avance et A+
Cdt Rubis
Bonjour Rubis5460
Inutile d'avoir une cellule avec date du jour, il suffit de mettre
Private Sub Workbook_Open()
If Application.EoMonth(Date, 0) = Date Then
MsgBox "ATTENTION ! N'oubliez pas de clore le mois en cours aujourd'hui ! "
End If
End SubEoMonth() calcul la date de fin du mois par rapport à la date du jour
A+
Bonjour BrunoM45
Merci pour ton aide.
Par contre j'ai une autre question !
Peut-on modifier l'apparence du msgbox ? taille, couleur etc.. ?
Re BrunoM45
Ok j'ai vu que il faudrait passer par un userform. Donc on va laisser comme c'est.
Merci à toi et A+.
Cdt Rubis5460
Re BrunoM45,
J'ai un dernier petit soucis dans mon dossier.
La macro ci-dessous doit me copier les cellules "B13 et B14" de la feuille "TDB Personnel et Salaires" vers le classeur 'PRODUCTION ET FACTURATION" sur la feuille "RECAP FRAIS GESTION SITE" dans la colonne du mois en cours lignes 15 et 16.
Elle me fait cela bien, sauf que moi je voudrai que la macro n'ouvre pas le classeur "PRODUCTION ET FACTURATION" quand elle fait le transfert.
Que faudrait-il changer dans cette macro ?
Merci d'avance BrunoM45
A+
Sub SalairesCharges_RecapFrais()
'Envoi des salaires et charges vers la recap des frais du site
Application.ScreenUpdating = False
Dim i As Byte
'range("A1") fait référence a la position du mois courant dans la feuille "Recap salaires et charges"
i = Sheets("TDB Personnel et Salaires").Range("A1").Value
'sélectionne les cellules a copier
Sheets("TDB Personnel et Salaires").Range("B13", "B14").Copy
'Ouvre le classeur destination
Workbooks.Open "F:\PILOTE\PRODUCTION ET FACTURATION.xlsm"
'copie les données sélectionnées a l'emplacement voulu
Workbooks("PRODUCTION ET FACTURATION").Sheets("RECAP FRAIS GESTION SITE").Range("B7").Offset(15, i).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End subRe,
A moins de le faire via la méthode ADODB (pas simple) tu es obligé d'ouvrir le classeur, mais tu peux masquer la fenêtre
Sub SalairesCharges_RecapFrais()
Dim i As Byte
Dim sPath As String, sFic As String
Dim Wbk As Workbook
'sPath = ThisWorkbook.Path & "\"
sPath = "F:\PILOTE\"
sFic = "PRODUCTION ET FACTURATION.xlsm"
'Envoi des salaires et charges vers la recap des frais du site
Application.ScreenUpdating = False
'range("A1") fait référence a la position du mois courant dans la feuille "Recap salaires et charges"
i = Sheets("TDB Personnel et Salaires").Range("A1").Value
'Ouvre le classeur destination
Set Wbk = Workbooks.Open(sPath & sFic) '"F:\PILOTE\PRODUCTION ET FACTURATION.xlsm"
Windows(sFic).Visible = False
'copie les données sélectionnées a l'emplacement voulu
Sheets("TDB Personnel et Salaires").Range("B13:B14").Copy
Wbk.Sheets("RECAP FRAIS GESTION SITE").Range("B7").Offset(15, i).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' Fermer le classeur
Wbk.Close SaveChanges:=True
Application.CutCopyMode = False
End SubNota : je n'aime pas figer le chemin d'accès et le noms des fichiers dans mes codes, je passe toujours par des variables
Le jour ou il y a un changement, tu as juste à changer 1 ligne ou 2
A+
Bonsoir BrunoM45
je viens de tester ton texte VBA il n'a pas buger, mais je n'arrive plus a ouvrir le classeur "PRODUCTION ET FACTURATION" !!
Re,
Vous avez bien copié le code tel quel et exécuté" jusqu'au bout !?
Car le classeur est ouvert et masqué, si vous n'exécutez pas
Wbk.Close SaveChanges:=TrueIl restera ouvert, mais masqué
Auquel cas, vous pouvez allez dans la fenêtre d'exécution faire
Windows(sFic).Visible = TrueA+
Oui j'ai copié le code tel quel, executé et fermer "GESTION Personel et salaires" et lorsque je veux ouvrir le classeur "PRODUCTION ET FACTURATION" il m'ouvre excel mais une page vide !!
si je tape dans la fenêtre d'éxécution Windows(sFic).Visible = True je fais quoi ?
Re,
Arf oui effectivement, je n'avais pas été jusque là
Dans la fenêtre d'exécution il faut mettre
windows("PRODUCTION ET FACTURATION.xlsm").Visible = TrueJe n'ai jamais fait gaffe que le Windows masqué était gardé en mémoire dans le classeur, donc ça ne sert à rien
Voici une autre solution
Sub SalairesCharges_RecapFrais()
Dim i As Byte
Dim sPath As String, sFic As String
Dim Wbk As Workbook
sPath = ThisWorkbook.Path & "\"
'sPath = "F:\PILOTE\"
sFic = "PRODUCTION ET FACTURATION.xlsm"
' Désactiver le rafraichissement écran
Application.ScreenUpdating = False
'Envoi des salaires et charges vers la recap des frais du site
'range("A1") fait référence a la position du mois courant dans la feuille "Recap salaires et charges"
i = Sheets("TDB Personnel et Salaires").Range("A1").Value
'Ouvre le classeur destination
Set Wbk = Workbooks.Open(sPath & sFic) '"F:\PILOTE\PRODUCTION ET FACTURATION.xlsm"
'copie les données sélectionnées a l'emplacement voulu
ThisWorkbook.Sheets("TDB Personnel et Salaires").Range("B13:B14").Copy
Wbk.Sheets("RECAP FRAIS GESTION SITE").Range("B7").Offset(15, i).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' Fermer le classeur
Wbk.Close SaveChanges:=True
Application.CutCopyMode = False
' Activer le rafraichissement écran
Application.ScreenUpdating = True
End SubA+
Ouf ! j'ai eu peur !
Tout fonctionne. C'est vraiment galère parfois.
Merci à toi BrunoM45 pour ton travail.
Bonne soirée et A+ peut être.
Cdt Rubis5460