créer une macro pour incrémenter les dates automatiquement

cleopatre

XLDnaute Nouveau
Bonjour le Forum,
J'ai besoin de créer une macro ( je ne sais pas si c'est possible) qui me permet à partir d'une date de début et une date de fin en choisissant le pas convenable (semaine, mois , an ) d'afficher les dates correspondantes à partir de ma date de début et en incrémentant par le pas à chaque fois
Je m'explique:
Dans l'exemple ci-joint
j'ai dans l'onglet "donnée" ma date de début qui est égale au 14/12/2010; ma date de fin = 30/06/2012 le pas = semaine
J'aimerai pouvoir afficher dans l'onglet "projet " à partir de la cellule D1, les dates commençant par la date de début et en incrémentant à chaque fois de 7 (pour correspondre à chaque fois au lundi de chaque semaine) et si c'est possible le numéro de la semaine dans l'année directement.
Mais je sais que c'est un peu compliqué vue que ma date de début peut ne pas correspondre à un lundi et on peut avoir 53 semaine par an comme ça était le cas en 2010
Si vous avez des idées merci de me les communiquer
A+
 

Pièces jointes

  • exemple.xls
    22.5 KB · Affichages: 185
  • exemple.xls
    22.5 KB · Affichages: 190
  • exemple.xls
    22.5 KB · Affichages: 201

unrender

XLDnaute Junior
Re : créer une macro pour incrémenter les dates automatiquement

Flûte...
Me serais-je fait devancer ?
Sinon, j'avais fait ça :

Code:
Dim datedeb As Date, datefin As Date
 datedeb = Sheets("donnée").Range("B1")
 datefin = Sheets("donnée").Range("B2")
 numcol = 4
Select Case LCase(Sheets("donnée").Range("B3"))
    Case "semaine"
        pas = "ww"
    Case "mois"
        pas = "m"
    Case "année"
        pas = "yyyy"
End Select
 
 While Format(datedeb, "yyyymmdd") < Format(datefin+1, "yyyymmdd")
     Sheets("projet").Cells(1, numcol) = datedeb
     Sheets("projet").Cells(2, numcol).FormulaR1C1 = "=WEEKNUM(R[-1]C)"
     numcol = numcol + 1
    datedeb = DateAdd(pas, 1, datedeb)
 
 Wend
 
Dernière édition:

cleopatre

XLDnaute Nouveau
Re : créer une macro pour incrémenter les dates automatiquement

Bonjour le forum,
Bonjour Bebere, bonjour unrender
Je vous remercie énormément pour vos réponses, c'est bien ce que je cherche.
Par contre je n'ai pas trop compris ta fonction typejour Bebere!!! Elle tient compte des jours fériés?
A+
 

cleopatre

XLDnaute Nouveau
Re : créer une macro pour incrémenter les dates automatiquement

Bonjour le forum;
Bonjour Bebere, Unrender
J'ai une question. Si par exemple je saisie ma date de début le 13/06/2011; ma date de fin 27/06/2011 avec comme pas la semaine
En éxécutant le programme la résultat sera bien sur grace à votre aide 13/06/2011; 20/06/2011; 27/06/2011
Si aprés exécution du programme je reviens et je modifie ma date de fin et je la mets à 21/06/2011 normalement je dois avoir uniquement 2 dates alors que meme aprés éxécution la date 27/06/2011 de l'ancienne exécution reste affichée
comment je peux faire pour rémédier puisque pendant un projet on peut forcément changer la date de début (Bon quand la nouvelle date de fin est > à l'ancienne date de fin il ya pas de problème )?
Merci d'avance
 

unrender

XLDnaute Junior
Re : créer une macro pour incrémenter les dates automatiquement

Bonjour Cléopâtre, Bebere...

1° J'ai fait une modif par rapport à la remarque que tu as faite. Pour un bon fonctionnement, il faudrait mettre cette procédure dans la feuille 'donnée' et l'appeler par un 'call maj' que tu mets dans Worksheet_Change. Comme ça, que tu changes la date de début, celle de fin ou le pas, la procédure sera lancée.

Code:
Sub maj()
Dim datedeb As Date, datefin As Date
  Sheets("projet").Range("d1:iv2").ClearContents
  datedeb = Sheets("donnée").Range("B1")
  datefin = Sheets("donnée").Range("B2")
  numcol = 4
 Select Case LCase(Sheets("donnée").Range("B3"))
     Case "semaine"
         pas = "ww"
     Case "mois"
         pas = "m"
     Case "année"
         pas = "yyyy"
 End Select
  
  While Format(datedeb, "yyyymmdd") < Format(datefin + 1, "yyyymmdd")
      Sheets("projet").Cells(1, numcol) = datedeb
      Sheets("projet").Cells(2, numcol).FormulaR1C1 = "=WEEKNUM(R[-1]C)"
      numcol = numcol + 1
     datedeb = DateAdd(pas, 1, datedeb)
  
  Wend
End Sub

2° Si je peux me permettre, et sauf erreur de ma part, le fichier proposé par Bebere ne tient pas en compte le pas (semaine/mois/année)...
 

Bebere

XLDnaute Barbatruc
Re : créer une macro pour incrémenter les dates automatiquement

bonjour Cleopatre,Unrender
Unrender a raison,mon code n'est pas complet
mis le code de Unrender dans module2
il y a du code dans feuille données où tu peux choisir entre maj ou module1 ecrit pas(en commentaire pour le moment)
weeknum n'est pas à la norme iso
à bientôt
 

Pièces jointes

  • exempleSemLundi.zip
    17.1 KB · Affichages: 91

Staple1600

XLDnaute Barbatruc
Re : créer une macro pour incrémenter les dates automatiquement

Bonjour le fil


On peut aussi utiliser les possibilités offertes par la recopie incrémentée d'Excel
(On pourrait même le faire sans macro ;) )
aaa.jpg
L'exemple ci-dessous fonctionne avec en A1 un premier lundi
et en A2 le dernier lundi
Code:
Sub test() 'exemple à adapter
Dim plg As Range, a&
a = ([A2] - [A1]) / 7
Set plg = Range("A1").Resize(, a + 1)
plg.DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlDay, _
        Step:=7, Trend:=False
End Sub
On peut utiliser aussi en VBA les autres choix offerts (voir copie d'écran ci-dessus)
 

Pièces jointes

  • aaa.jpg
    aaa.jpg
    37.2 KB · Affichages: 279
  • aaa.jpg
    aaa.jpg
    37.2 KB · Affichages: 281
Dernière édition:

Discussions similaires