IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur d'execution 13 avec month(range("D2") [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Août 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2014
    Messages : 18
    Points : 14
    Points
    14
    Par défaut Erreur d'execution 13 avec month(range("D2")
    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

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bonjour,

    déjà il ne faut jamais utiliser l'objet range sans préciser la feuille ..., et éviter les Select et autres activate...

    utilise with par exemple et remplace tout est Range par des "point" Range : .Range(
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    with ThisWorkBook.Sheets("SYNTHESE")
     
       m = Month(.Range("D2")) 'Ré
     
     
    ....
     .Range("A1") = dernier_jour_mois ' je range en A1 la date du dernier jour du mois
     
    end with
    ensuite dis nous ce qu'il y as dans ta cellule D2 au moment de l'erreur ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Août 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2014
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Merci bbil pour votre réponse.

    J'ai donc modifié le source comme vous me l'avez conseillé. Veuillez trouver ci-joint un imprime écran de ce que j'ai lors de l'erreur.

    Nom : 25-08-2014 20-37-26.png
Affichages : 258
Taille : 58,5 Ko

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Ben il semble que tu n'est pas une date en D2..

  5. #5
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Août 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2014
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Oui, mais même en format Date, ça ne fonctionne pas, voir ci-joint.

    Nom : 25-08-2014 21-24-33.png
Affichages : 280
Taille : 54,2 Ko

  6. #6
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Août 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2014
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    En fait je viens de trouver la raison de mon erreur, comme me l'a fait constater bbil, le format de ma cellule n'était pas le bon, même en apparence. Voici le source revu:
    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
    16
    17
    18
    19
    20
    21
    22
     
    Sub RechercheDernierJourDuMois()
    Dim MaDate  As Date
     
    With ThisWorkbook.Sheets("SYNTHESE")
     
    .Range("D2").Replace What:=".", Replacement:="/"
    .Range("D2").NumberFormat = "dd/mm/yyyy;@"
     MaDate = .Range("D2")
     
       m = Month(MaDate) 'Récupération du mois en cours
       A = Year(MaDate) '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 With
    End Sub
    Avant le lancement de la macro, j'avais en D2: "22.08.2014" et rien en A1.
    Après avoir lancé la macro, j'ai obtenu en D2: "22/08/2014" et en A1 :"31/08/2014"


    Merci bbil pour vos précieuses infos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. plus d'erreur d'execution 3265 avec ceci !?
    Par danbo52 dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/08/2011, 15h48
  2. erreur d'execution probleme avec GetPixel
    Par ralf91 dans le forum C#
    Réponses: 3
    Dernier message: 11/04/2008, 11h26
  3. Erreur d'execution impossible avec un innerHTML
    Par CrazySeb dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/06/2007, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo