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 Sub

EoMonth() calcul la date de fin du mois par rapport à la date du jour

A+

Bonjour BrunoM45

Merci pour ton aide. Je te tiendrai informé à la fin du mois

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 sub

Re,

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 Sub

Nota : 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+

OK. Merci je teste ce soir en rentrant et reviendrai.

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:=True

Il restera ouvert, mais masqué

Auquel cas, vous pouvez allez dans la fenêtre d'exécution faire

 Windows(sFic).Visible = True

A+

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 = True

Je 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 Sub

A+

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

Rechercher des sujets similaires à "alerte fin mois msgbox"