Bonjour à tous les membres du forum,

Je suis débutant sur VBA, et je sèche sur une erreur d'execution 13:

En gros, j'indexe les résultats de production du jour précédent sur une feuille d'un classeur que j'ai nommé "SYNTHESE", et pour cela je compare la date de la cellule D2 (celle de la sauvegarde du moment), avec la date en E2(logiquement celle de la veille, ou celle d'aujourd'hui si la macro est lancée 2 fois dans la journée). Si la valeur est la même, on change rien, sinon on décale toutes les cellules une colonne à droite et on insère la colonne du jour.

Je dois maintenant vérifier si je suis à la fin du mois
Si non on continue comme au dessus,
Si oui: je dois , s'il n'existe pas, créer un classeur avec comme nom quelque chose comme "relevé_Prod_<Année En Cours>", avec dedans une feuille par mois; et copier les résultats de ma feuille SYNTHESE vers la feuille correspondant au mois.

J'ai commencé par écrire quelques trucs glanés sur le Net, et qui semble fonctionner chez d'autres....Mais pour moi, j'ai une erreur d'execution 13 sur la ligne m = Month(Range("D2")) 'Récupération du mois en cours

Voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub RechercheDernierJourDuMois()
 
Sheets("SYNTHESE").Select
 
   m = Month(Range("D2")) 'Récupération du mois en cours
   A = Year(Range("D2")) 'Récupération de l'année en cours
 
    'Calcul du premier jour du mois suivant
    date_mois_suivant = DateSerial(A, m + 1, 1)
 
    'Date du dernier jour
    dernier_jour_mois = date_mois_suivant - 1
 Range("A1") = dernier_jour_mois ' je range en A1 la date du dernier jour du mois
 
End Sub
A savoir que la cellule D2 et A1 sont en mode standard sur la feuille excel, j'ai essayé en mode date sur la feuille, idem. Quand je remplace D2 par une cellule vide (en mode standard), le code passe sans erreur.

Je ne sais pas aller plus loin, une idée me débloquerait....

Merci

Eric W