Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/09/2011, 04h19   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 11
Points : 11
Par défaut [Novice] Incrementer des dates

Bonjour à tous,

Après maintes recherches sans succes.

J'aimerais incrementer les dates d'une année, en tenant compte des années bisextilles sur une feuille excel en colonne "A" et ce à partir d'une année selectionnée dans un ComboBox sur un UserForm.

Quelqu'un pourrais m'aider svp?

Merci de m'avoir lu.

Fasedan
fasedan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 06h41   #2
Membre habitué
 
Inscription : mars 2009
Messages : 86
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 86
Points : 100
Points : 100
Bonjour

Normalement les années bisextilles sont prises en compte par Windows, à mon avis il faudrait que tu jettes un coup d'oeil à la fonction DateAdd.
__________________
PeyePo
PeyePo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 09h14   #3
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Pour savoir si une année est bissextile, la formule est :
Code :
1
2
 
=OU(MOD(A1;4)=0;ET(MOD(A1;4)=0;MOD(A1;100)<>0))
avec l'année en A1.

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 10h10   #4
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Citation:
Normalement les années bisextilles sont prises en compte par Windows,
, sous Excel aussi pour peu qu'on ne travaille pas sur l'année 1900...

Code :
1
2
3
4
5
6
7
8
9
Sub toto()
Dim I
Dim maDate As Date
 
maDate = #2/26/2012# 'test changer 2012 en 2013
For I = 1 To 6
    Cells(I, 1) = maDate + I ' I= 3 => 29 fev
Next I
End Sub
voir ce tuto aussi : http://didier-gonard.developpez.com/...et-vba/#LIII-C

cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 13h12   #5
Candidat au titre de Membre du Club
 
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 11
Points : 11
Par défaut Oups... j'ai fait une grossière erreur

Je me suis trompé concernant les balises [code]

Je recommence donc,

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub CommandButton2_Click()
    Worksheets("Calendrier").Select
    Range("a1").Select
Dim dte As Date
Dim I As Integer
Dim Annee As Integer
Annee = "2012"
dte = "31/12/" & Annee - 1
'dte = "31/12/2010"
I = 1
 Do While dte < "31/12/" & Annee
    dte = DateAdd("d", 1, dte)
 
 
    Select Case Weekday(dte, vbMonday)
        Case 1, 2, 3, 4, 5, 6, 7
            Range("A" & I).Value = Format(dte, "mm/dd/yyyy")
            Range("B" & I).Value = Format(dte, "mmmm yyyy")
 
            I = I + 1
    End Select
Loop
End Sub
Voilà c'est mieux et mille excuses.
Fasedan
fasedan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 13h51   #6
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

Voici ton code avec la recherche de la dernière ligne renseignée
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub CommandButton2_Click()
Dim dte As Date
Dim DerLg As Long
Dim I As Integer, Annee As Integer
    With Worksheets("Calendrier")
        'Recherche de la dernière ligne renseignée en colonne A
        DerLg = .Range("A" & .Rows.Count).End(xlUp).Row
        Annee = InputBox(prompt:="Indiquez l'année", Title:="Année", Default:=2012)
        dte = "31/12/" & Annee - 1
        Do While dte < "31/12/" & Annee
            dte = DateAdd("d", 1, dte)
            Range("A" & I + DerLg).Value = Format(dte, "mm/dd/yyyy")
            Range("B" & I + DerLg).Value = Format(dte, "mmmm yyyy")
            I = I + 1
        Loop
    End With
End sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 14h30   #7
Candidat au titre de Membre du Club
 
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 11
Points : 11
Par défaut Merci à gFZT82 mais...

Merci de m'avoir lu et répondu.

Mais le code ne fonctionne pas, cela ne rajoute pas les dates d'une année complète à la suite du dernier enregistrement.

Bon après midi.
Fasedan
fasedan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 15h44   #8
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
J’ai effectué le test.
La seule anomalie que j’ai trouvée, c’est un mauvais positionnement du premier jour de l’année listée (le 31/12 était écrasé par la nouvelle liste).
J’ai remplacé Derlg par LigneAjout qui correspond à la première ligne vide.
Je saisis l’année 2012, je clique sur OK … l’année 2012 est correctement listée de la ligne 2 à la ligne 367.
Je saisis l’année 2013, je clique sur OK … l’année 2013 est correctement listée de la ligne 368 à la ligne 732.
Essaie d’être plus explicite sur ce qui ne fonctionne pas de ton coté.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub CommandButton2_Click()
Dim dte As Date
Dim LigneAjout As Long
Dim I As Integer, Annee As Integer
    With Worksheets("Calendrier")
        'Recherche de la première ligne vide en colonne A
        LigneAjout = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        Annee = InputBox(prompt:="Indiquez l'année", Title:="Année", Default:=2012)
        dte = "31/12/" & Annee - 1
        Do While dte < "31/12/" & Annee
            dte = DateAdd("d", 1, dte)
            Range("A" & I + LigneAjout).Value = Format(dte, "mm/dd/yyyy")
            Range("B" & I + LigneAjout).Value = Format(dte, "mmmm yyyy")
            I = I + 1
        Loop
    End With
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/09/2011, 18h39   #9
Candidat au titre de Membre du Club
 
Inscription : septembre 2008
Messages : 48
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 48
Points : 11
Points : 11
Par défaut Merci à tous pour vos réponse.

Bonjour,
J'ai pu avancer avec le code de gFZT82, encore merci.
Mais aussi merci au site "Developpez.com"

Cela me retire une épine du pied et le code fonctionne à merveille.

Je reviendrai surement plus tard.

Fasedan
fasedan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h11.


 
 
 
 
Partenaires

Hébergement Web