Problème de format de date dans une boucle

Signaler
Messages postés
16
Date d'inscription
mardi 21 octobre 2008
Statut
Membre
Dernière intervention
20 juillet 2011
-
Messages postés
16
Date d'inscription
mardi 21 octobre 2008
Statut
Membre
Dernière intervention
20 juillet 2011
-
bonjour à tous.

voici ce que je souhaite faire, en pseudo langage :

uneDate = dateActuelle - 21 jours

tant que cette date < dateActuelle

...
uneDate = unedate + 1 jour

fin tant que

Seulement, je souhaite que toutes les dates maniées soit au format mm/dd/yyyy, et je ne veux pas toucher à la config de ma machine pour passer le format de date à mm/dd/yyyy.

Voici ce que j'ai fait :

    Dim test As String
    
    test = Format(DateAdd("d", -21, Date), "mm/dd/yyyy")

    While (test) <= Date

        ...        
        test = DateAdd("d", 1, test) 'incrémente la date
        
    Wend


Malheureusement, cela ne fonctionne pas :
en effet, après création de la variable test, celle-ci vaut bien "06/03/2011", ça c'est normal
mais après l'incrémentation, au lieu de passer à 06/04/2011, cela passe à 07/03/2011. Cela s'explique du fait, je pense, que pour la machine, vu qu'elle est réglée en mode dd/mm/yyyy, quand on dit "incrémente les jours", et bien elle incrémente automatiquement les premières valeurs de la date (sans chercher à savoir s'il s'agit de jours ou de mois)... je ne sais pas si je suis très clair.

Merci à ceux qui pourront m'aider.

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Quelle la langue du Windows ?
Quel est le format du système ?

Si tu dois afficher des dates dans un format autre que celui de l'OS :
- Fais tous tes calculs avec des variables de type Date (pas String), exprimées au format de l'OS - comme ça les fonctions DateAdd et DateDiff fonctionneront
- Fais la conversion du format d'affichage au moment où tu en as besoin mais ne travaille pas avec un format date différent du système.

Ceci impose que tu aies :
- une variable de travail de type Date, celle avec laquelle tu vas faire tes calculs de date,
- et une variable de type String qui représentera ta date au format souhaité et qui utilisera la première variable dans une fonction Format, par exemple.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,iment certain d'avoir bien compris (une fois de plus) les tenants et aboutissants.
Je propose donc ceci, à tout hasard :
Dim test As Date
    test = DateSerial(Year(Date), Month(Date), Day(Date) - 21)
    MsgBox test
    While test <= Date
        test = DateSerial(Year(test), Month(test), Day(test) + 1)
    Wend
    MsgBox Format(test, "mm/dd/yyyy")



____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
16
Date d'inscription
mardi 21 octobre 2008
Statut
Membre
Dernière intervention
20 juillet 2011

merci à vous pour vos réponses, cela fonctionne