Comment limiter l'action d'une macro
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir,
J'ai fais un petit programme pour suivre les recettes et les dépenses de notre association. En début de chaque mois, nous avons des dépenses et des recettes récurrentes.
J'essaye d'automatiser ces tâches avec un programme qui crée des entrées automatiquement dans chaque tableau (tableau Dépenses et tableau Revenus) le problème est qu'à chaque fois que j'ouvre le classeur, les entrée se cumulent.
Je ne vois pas comment limiter l'action de la macro à 1 fois par mois.
Voici le code:
Private Sub Workbook_Open()
'Vérifier si la date est entre le 5 et le 15 de chaque mois
If Day(Date) >= 5 And Day(Date) <= 15 Then
'Vérifier si le code a déjà été exécuté ce mois-ci
If Worksheets("Dépenses").Range("A1").Value <> Month(Date) Then
'Mettre à jour la date du mois dernier pour éviter une nouvelle exécution du code ce mois-ci
Worksheets("Dépenses").Range("A1").Value = Month(Date)
'Trouver la dernière ligne des tableaux Dépenses et Revenus
Dim lastRowDepenses As Long
lastRowDepenses = Worksheets("Dépenses").Cells(Rows.Count, "A").End(xlUp).Row
Dim lastRowRevenus As Long
lastRowRevenus = Worksheets("Revenus").Cells(Rows.Count, "A").End(xlUp).Row
'Ajouter une ligne automatiquement à la fin des tableaux Dépenses et Revenus
Worksheets("Dépenses").Range("A" & lastRowDepenses + 1).Value = Date
Worksheets("Dépenses").Range("C" & lastRowDepenses + 1).Value = "aaaaaa"
Worksheets("Dépenses").Range("D" & lastRowDepenses + 1).Value = "bbbbbb"
Worksheets("Dépenses").Range("F" & lastRowDepenses + 1).Value = "ccccccc"
Worksheets("Dépenses").Range("H" & lastRowDepenses + 1).Value = 2
Worksheets("Revenus").Range("A" & lastRowRevenus + 1).Value = Date
Worksheets("Revenus").Range("C" & lastRowRevenus + 1).Value = "aaaaaa"
Worksheets("Revenus").Range("D" & lastRowRevenus + 1).Value = "bbbbbbb"
Worksheets("Revenus").Range("G" & lastRowRevenus + 1).Value = "cccccccc"
Worksheets("Revenus").Range("I" & lastRowRevenus + 1).Value = 2
End If
End If
End Sub
Merci de votre aide,
Windows / Edge 113.0.1774.35
- Comment limiter l'action d'une macro
- Action - Guide
- Télécharger film d'action gratuitement et rapidement - Télécharger - TV & Vidéo
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Vous devez disposer d'une autorisation pour effectuer cette action - Guide
- Action fans - Accueil - Guide arnaque
3 réponses
Bonjour,
Chez moi, pas de probleme.
Le test A1 mois enregistre <> mois date est ok
Par contre, d'ou sortent vos donnees a enregistrer?
bonjour,
Au lieu d'enregistrer le numéro du mois, j'enregistrerais la date du premier jour du mois:
Dim todayDate As Date, cemois As Date todayDate = Date cemois = DateSerial(Year(todayDate), Month(todayDate), 1) If [a1] <> cemois Then [a1] = cemois ' ...
Suite:
Purquoi n'utilisez vous pas le code donne ici:
Code vba ne fonctionne pas [Résolu] (commentcamarche.net)