Pb dans les dates.

Résolu
Signaler
Messages postés
23
Date d'inscription
mercredi 18 janvier 2006
Statut
Membre
Dernière intervention
2 avril 2008
-
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
Bonjour,
Je developpe une petite macro avec VBA et j'ai quelques soucis avec cette commande:

mois = Month(Format(cellule.Value, "dd/mm/yyyy"))

Je met dans une variable 'mois' le mois d'une date (format 'jj/mm/aaaa hh/mm') d'une cellule.
Mon problème est que je reçois une erreur mais assez aléatoirement.
Par exemple si je mets comme date '31/11/2008  12:48:58', il me sort l'erreur 'imcopatibilité de type.
Si je met 03 même 12 à la place de 11, ça fonctionne.
Peut être que la fonction n'est pas la bonne.

Merci pour votre aide.

7 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Re,

Ok, je viens de piger ton problème...Apparement la date 31/11/2008 est fausse car le mois de Novembre à 30 jours.....Essaye en mettant 30/11/2008 et tu verras que cela fonctionne...Faut vérifier ta date avant de récupérer le mois dans ta variable...

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

De quel type est le format de ta cellule ?

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
23
Date d'inscription
mercredi 18 janvier 2006
Statut
Membre
Dernière intervention
2 avril 2008

Personnalisée : jj/mm/aaaa hh/mm
Messages postés
23
Date d'inscription
mercredi 18 janvier 2006
Statut
Membre
Dernière intervention
2 avril 2008

Effectivement j'ai pas fait cette vérification la. Merci beaucoup.
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Re,

Pour vérifier la saisie de ta date utilise : Isdate (retour en Boolean)

Toto = "31/11/2008"
MsgBox IsDate(Toto)

Toto = "30/11/2008"
MsgBox IsDate(Toto)

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Bonjour à tous les deux :

Méfiance avec VB !
Isdate ne suffit pas pour dormir tranquille ...

Il n'y a qu'à saisir "09/21/2008" pour comprendre  : en format jj/mm/aaaa, le doigt de l'utilsateur étourdi frappe sur 2 au lieu de 1 en voulant frapper "09/11/2008" ===>>> le mois 21 n'existe pas mais VB va s'amuser à corriger ===>>> et on se retrouve sereinement avec la date du 11/09/008...
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
d'accord avec jmfmarques, la saisie de dates est un casse tête. Il faut stocker en Date dès que l'on peut, par defaut, ca considère les parametres régionnaux, au pire, ca joue en internationnal, mais c'est un sujet épineux.

si IsDate dit Ok ! on peut dire que ca va.... si la date n'est pas celle qu'il souhaitait, l'utilisateur n'a qu'a s'en prendre a lui... ou a modifier ses regional settings pour que ceux-ci collent a ses preferences.

mois = Month(Format(cellule.Value, "dd/mm/yyyy"))
utilisation de Format non requise ici.