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 :

Problème de format date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Problème de format date
    Bonjour,
    J'utilise le VBA pour Excel depuis plus de 10 ans et j'ai un fichier de suivi des comptes bancaires avec bien évidemment des dates conformes.
    À l'occasion d'un premier problème, je m'aperçois que le format des dates est défini en : *14/03/2001, je ne sais pas si j'ai perdu la mémoire, mais je pense ne jamais avoir appliqué ce format. Cela dit les dates sont conformes.
    Par contre, je crée un nouveau fichier et cette fois une date :
    - 30/11/2019 avec ajout d'un mois devient bien 31/12/2019
    alors que :
    - 01/11/2019 avec ajout d'un mois devient 12/01/2019
    Je n'y comprends plus rien et si quelqu'un a une explication, je le remercie par avance.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par jacques_jean Voir le message
    À l'occasion d'un premier problème, je m'aperçois que le format des dates est défini en : *14/03/2001, je ne sais pas si j'ai perdu la mémoire, mais je pense ne jamais avoir appliqué ce format. Cela dit les dates sont conformes.
    C'est le format qu'Excel applique automatiquement à une cellule sans format lorsqu'on y tape une date.

    Fais le test : créer un nouveau fichier > taper une date dans une cellule > clic droit sur le cellule > Format de cellule > Onglet Nombre.
    Tu verras que le format est passé à celui que tu décris.

    Par contre, je crée un nouveau fichier et cette fois une date :
    - 30/11/2019 avec ajout d'un mois devient bien 31/12/2019
    alors que :
    - 01/11/2019 avec ajout d'un mois devient 12/01/2019
    Quelle méthode utilises-tu pour ajouter un mois ?

  3. #3
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 576
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    Debug.Print "01/11/2019", DateSerial(Year("01/11/2019"), Month("01/11/2019") + 1, Day("01/11/2019"))
    End Sub

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut à vous,

    Pour ajouter un mois, on peut aussi utiliser la fonction de feuille MOIS.DECALER
    Cette fonction retourne le numéro de série.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Menhir :
    Quelle méthode utilises-tu pour ajouter un mois ?
    J'utilise une variable constituée de trois variables (jour, mois année) en ajoutant selon un critère indiqué dans la colonnes suivante : mensuel, un bimestriel, trimestriel, etc. Et c'est là que j'ai le problème du jour qui devient le mois s'il est inférieur à 12.

    MarcelG :
    Pour ajouter un mois, on peut aussi utiliser la fonction de feuille MOIS.DECALER
    Cette fonction retourne le numéro de série.
    Mais celle-ci ne fonctionne pas en VBA ?

    Et pour terminer, Thumb down :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    Debug.Print "01/11/2019", DateSerial(Year("01/11/2019"), Month("01/11/2019") + 1, Day("01/11/2019"))
    End Sub
    J'ai adapté et cela fonctionne : Cells(i, 1) = DateSerial(Year(Cells(i, 1)), Month(Cells(i, 1)) + 1, Day(Cells(i, 1)))

    Merci pour vos réponses.
    Dernière modification par Invité ; 12/10/2019 à 14h51.

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut jacques_jean,

    La traduction en VBA de la fonction MOIS.DECALER est EDATE
    D'où, si la date initiale est reportée en A1, et que l'on souhaite un décalage de 3 mois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
     
    Sub essai_date()
     
    With Worksheets(1)
            .Range("B1").Value = Application.WorksheetFunction.EDate(.[A1], 3)
            .Range("B1").NumberFormat = "dd/mm/yyyy"
    End With
     
    End Sub

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour MarcelG,

    Merci pour votre réponse, mais j'ai un petit problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("B1").Value = AMarcelG pplication.WorksheetFunction.EDate(.[A1], 3)
    J'obtiens le message :
    Propriété ou méthode non gérée par cet objet.
    Est-ce que cela devrait fonctionner sur Excel 2003 ? D'autre part j'ai lu un article sur le site de Microsoft, précisant : « Utilisez EDATE pour calculer des dates d’échéance qui tombent le même jour du mois que la date d’émission. »

    Je voulais justement ajouter des précisions à ma réponse précédente ; la proposition de Thumb down fonctionne, sachant qu'il faut tester si la date est une fin de mois, car si dans ce cas le jour est "31" et que la fin de mois de la période suivante est le "30" cela fonctionne bien, mais dans le cas inverse, on aura toujours le "30" et il faut donc ajouter 1 jour. Il faut également tester l'année pour bien trouver la fin du mois de février : si "Mod4" donne un reste = "0" il faut aussi ajouter un jour puisqu'il s'agit d'une année bissextile.

    Et donc, je pose la question : si votre proposition doit fonctionner sur la version 2003, n'aurai-je pas la même démarche à faire quand il s'agit d'une fin de mois ?
    Dernière modification par Invité ; 12/10/2019 à 14h51.

Discussions similaires

  1. [XL-2007] Problème de format date
    Par Martialino dans le forum Excel
    Réponses: 5
    Dernier message: 01/08/2010, 09h03
  2. Problème de format date de naissance
    Par philippeshoto dans le forum Sécurité
    Réponses: 4
    Dernier message: 14/01/2009, 06h47
  3. Problème de format date automatique
    Par moilou2 dans le forum IHM
    Réponses: 13
    Dernier message: 30/06/2008, 11h24
  4. Problème de format DATE
    Par sajodia dans le forum Toad
    Réponses: 11
    Dernier message: 09/06/2008, 12h05
  5. [SSAS][2K5] Problème de format date
    Par geof dans le forum SSAS
    Réponses: 6
    Dernier message: 11/04/2008, 18h52

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