[Catégorie modifiée VB6 -> VBA] Modifier format dates VBA [Résolu]

Messages postés
42
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
12 juin 2012
- - Dernière réponse : Calade
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
- 26 mai 2011 à 17:14
Bonjour,

Je souhaite additionner dans une boucle FOR un jours à une date.

Pour cela j'ai ma variable que je déclare en format date

DIM MaDate as Date

pour que mon programme fonctionne je dois avoir la variable sous cette forme : AAMMJJ (pas de . ou / entre les AA et MMM JJ)

Comment puis-je passer de la forme JJ/MM/AAAA à la forme AAMMJJ dans VBA ?

Merci de votre aide

Vorens
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
207
3
Merci
Hé Bé !
Regarde :
 Dim madatestring As String
  Dim madatedate As Date
  madatestring = "27/02/2008"
  madatedate = CDate(madatestring) + 3
  MsgBox madatedate

et ce sera toujours vfrai, année bissectile ou non

____________________
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 145 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Bonjour,

Pour les opérations sur des dates, intéresse-toi aux fonctions DateAdd() et DateDiff().

Pour la récupérer sous une forme particulière, la fonction Format() fera le travail. Attention cette dernière renvoie une chaîne de caractères.


Calade
Commenter la réponse de Calade
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
12 juin 2012
0
Merci
Re,

Merci pour la rapidité de la réponce, jamais deçu sur ce forum =)

Je vais lire les infos de la touche magique F1 sur la fonction DateAdd() qui me semble être celle dont j'ai besoin.

Si j'ai bien compris, la fonction Format nous passe les données en chine de caractère, donc au prochain passage de la boucle, il faut que;

1)je re transfort en format date classique
2)Passage par fonction DateAdd
3)passage par fonction Format
4)programme notmal
5)Recomence au point 1

Ou alors dateAdd accept les chaines de caractère ?
Commenter la réponse de Vorens
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Je ne crois pas qu'il soit nécessaire de transformer sans arrêt ta date.

La fonction Format() ne te servira que pour l'affichage, mais pour tes calculs en boucle ne change pas de type, tu ralentirais ton appli.


Calade
Commenter la réponse de Calade
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
12 juin 2012
0
Merci
Re,

J'ai vu un exemple de code dans l'aide mais lorsque je le tape pour ma situation il me demande de mettre un signe = + une varaible donc sa donne.

'Passer au jours suivant_________________________________________________________________________________________________________


DateAdd("d", 1, "DateSelec") = DateSelec
Format("DateSelec", aammdd) = DateSelec



Next i


Dès lors j'ai un message d'incompatiblité de type sur la ligne DateAdd ("d...

Vous voyez ou j'ai fais de la Merdouille ?
Commenter la réponse de Vorens
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Ce serait plutôt l'inverse:

DateSelec = DateAdd("d", 1, "DateSelec")


Calade
Commenter la réponse de Calade
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
12 juin 2012
0
Merci
Re,

La fonction en marche pas encore, incompatibilité de type toujours sur la même ligne.
Commenter la réponse de Vorens
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
207
0
Merci
Bonjour,
1)- il est bien clair que la variable à laquelle on doit rajouter 1/plusieurs jour(s) doit être typée en Date
2) - pour ajouter des unités en jours, nul même besoin de DateAdd (il suffit d'ajouter des unités) à la date concernée !


____________________
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
Commenter la réponse de ucfoutu
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
12 juin 2012
0
Merci
Re,

Etant donner que ma date est en format chaine de caractère car elle me sert à composer un path, il est pénible de faire moult changement de format afin d'additionner un jour.
J'ai donc magouillé pour changer les valeurs dans ma chaine de caractère comme le montre le code suivant. (Et le pire c'est que sa marche)


'Passer au jours suivant_________________________________________________________________________________________________________

'Déclaration de variable
jour = Left(Right(DateSelec, 2), 4)   'Jours actuel sorti de la chaine de caractère
jourFev = Février                     'Nombre de jours dans le mois de février

'Addition des jours pour janvier

If Mois 1 And jour 31 Then
DateSelec = DateSelec + 100
DateSelec = DateSelec - 31
End If

'Addition des jours pour février

If Mois 2 And jourFev 28 Then
DateSelec = DateSelec + 100
DateSelec = DateSelec - 28
ElseIf Mois 2 And jourFev 29 Then
DateSelec = DateSelec + 100
DateSelec = DateSelec - 29
End If

'Addition des jours pour Mars

If Mois 3 And jour 31 Then
DateSelec = DateSelec + 100
DateSelec = DateSelec - 31
End If


DateSelec = DateSelec + 1


Je vous remercie tout de même pour l'attention que vous avez porté à mon message. Bonne après midi à vous.
Commenter la réponse de Vorens
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
12 juin 2012
0
Merci
Effectivement vu comme sa

Je suis un newbie en VBA et je trouve des solutions de newbires

Pour les années bissextile j'ai enregistre leur nom pour les 100 prochaines années ( sa m'étonnerais qu'on use encore mon fichier dans 100 ans )

Je prend note de la solution variante pro et vais l'adapter à mon fichier.
Commenter la réponse de Vorens
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Salut ucfoutu,

2) - pour ajouter des unités en jours, nul même besoin de DateAdd (il suffit d'ajouter des unités) à la date concernée !


je serais moins affirmatif que toi, j'ai déjà eu des problèmes en additionnant directement des jours à une date (spécialement quand il y a changement de mois et/ou d'année). D'utiliser la fonction DateAdd() règle tous les problèmes.


Calade
Commenter la réponse de Calade
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
207
0
Merci
salou Calade,

Donne un exemple (avec date en type date, hein) où ça ne marche pas, pour voir


____________________
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
Commenter la réponse de ucfoutu
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Salut,

Je serais bien en peine de retrouver le cas précis où j'ai eu ce problème et où cette fameuse fonction à régler le problème et peut-être qu'à l'époque j'avais mélangé deux choses, mais depuis ce temps j'utilise DataAdd() pour être tranquille.
C'est simplement ce que j'ai voulu dire.

Calade
Commenter la réponse de Calade
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
207
0
Merci
Evidemment, que tu serais en peine de retrouver un tel cas ! Il n'existe tout simplement pas .
Ton erreur devait tout simplement être ailleurs
Explication.
Une date est stockée sous VB sous la forme d'un nombre réel, en jours (d'écart positif ou négatif par rapport à une date d'origine), tout simplement.




____________________
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
Commenter la réponse de ucfoutu
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Tu as peut-être raison, c'est assez loin tout ça.


Calade
Commenter la réponse de Calade