[VBA] - Forcer un nombre à deux chiffres
Bonjour;
Tout d'abord voici ma macro:
Sub Fct_Dates_Annee(annee As Integer)
Columns("A:A").Select
Selection.ClearContents
Selection.NumberFormat = "yyyy-mm-dd"
Selection.HorizontalAlignment = xlRight
On Error Resume Next
j = 1
m = 1
a = annee
ligne = 1
Range("A1").Select
Do While m < 13
Do While j < 32
jourencours = a & "-" & m & "-" & j
ActiveCell.Offset(ligne, 0).Value = jourencours
ActiveCell.Offset(ligne, 0).Value = DateValue(jourencours)
ligne = ligne + 1
j = j + 1
Loop
m = m + 1
j = 1
Loop
End SubCette macro me permet d'avoir dans ma colonne A la totalité de l'année au format date "aaaa-mm-jj".
Il y a une suite à cette macro, qui me rempli les lignes B à F avec du texte; et j'exporte en CSV cette feuille pour un traitement en PhP.
Il m'est nécessaire de générer les dates inexistantes telles 31/02/2011.
Le souci est le suivant:
Les dates existantes sont de type 2011-02-21.
Or la date inexistante est de la forme 2011-2-31.
Je souhaiterais qu'au lieu de 2011-2-31, il m'affiche dans ma colonne 2011-02-31
En Gros, je souhaiterais forcer le format de ma variable "m" à deux chiffres; même pour les unités (01; 02; 03; .. ; 09; 10; 11; 12)
Avez vous une idée de comment faire ?
Merci d'avance pour votre aide.
Bonjour Adrien.D,
Plutôt que de trouver une solution à ton problème, je te propose un équivalent à ta macro :
Sub Fct_Dates_Annee(annee As Integer)
Dim nbJour As Long
Application.ScreenUpdating = False 'désactive la mise à jour de l'écran
With Columns("A:A")
.ClearContents
.NumberFormat = "yyyy-mm-dd"
.HorizontalAlignment = xlRight
End With
nbJourAnnee = DateValue("31-12-" & annee) - DateValue("1-1-" & annee) + 1
With [A2]
.Value = annee & "-01-01"
.AutoFill Destination:=.Resize(nbJourAnnee)
End With
End SubBonjour,
Modifier cette section :
Do While m < 13
mm = IIf(m < 10, "0" & m, m)
Do While j < 32
jj = IIf(j < 10, "0" & j, j)
jourencours = a & "-" & mm & "-" & jjLe reste sans changement.
A+
Bonjour,
la solution de galopin01 me satisfait entièrement.
Je passe le fil en résolu.