Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

calendrier sur une colonne

  • Initiateur de la discussion Initiateur de la discussion romain1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

romain1

Guest
Bonjour;

Je cherche à créer un tableau avec 4 colonnes. Jusque là, je sais faire. Une colonne contient la date, une autre nom/prénom, une autre le pays et la quatrième le commentaire.

Je cherche à rentrer toutes les dates depuis le 1er janvier 1987 dans la première colonne. Comment dois-je m'y prendre?

Je fonctionne sur Mac avec Excel 2008.

Toute aide sera la bienvenue car je me vois mal entrer toutes ces dates manuellement.

Cordialement,

Romain.
 
Re : calendrier sur une colonne

Bonsoir
Il te suffit d'ecrire ta premiere date et ensuite dans la cellule du dessous faire = A2 +1, si ta premiere date et en A2 ensuite tirer vers le bas
 
Dernière édition:
Re : calendrier sur une colonne

Bonsoir à tous,

Vois ceci :
VB:
Sub Calendrier() ' construit un calendrier dans une colonne
' choix de la cellule de départ par l'utilisateur
' choix des dates de début et fin de calendrier
Dim deb#, fin#, NbJours&, i As Date
Dim Cell As Range, Li&, Col%
  
  On Error Resume Next
  deb = CDate(InputBox("Première date du calendrier :"))
  fin = CDate(InputBox("Dernière date du calendrier :"))
  If Err <> 0 Then Exit Sub
  Set Cell = Application.InputBox _
    ("Sélectionnez la cellule où commence le calendrier", Type:=8)
  If Err <> 0 Then Exit Sub
  Li = Cell.Row: Col = Cell.Column
  For i = deb To fin
      With Cells(Li, Col)
        .Value2 = i
        .NumberFormatLocal = "jjj jj mmm aa"
        .Font.Name = "verdana"
        .Font.Size = 10
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
      End With
      Li = Li + 1
  Next i
End Sub

Klin89
 
Re : calendrier sur une colonne

Bonjour à tous
Une version beaucoup plus rapide du code de klin89:
VB:
Sub Calendrier() ' construit un calendrier dans une colonne
' choix de la cellule de départ par l'utilisateur
' choix des dates de début et fin de calendrier
Dim deb&, fin&, i&, dat&(), msg$
Dim Cell As Range
 
  msg = "Date invalide."
  On Error GoTo E
  deb = CDate(InputBox("Première date du calendrier :"))
  fin = CDate(InputBox("Dernière date du calendrier :"))
  If fin < deb Then Exit Sub
  Set Cell = Application.InputBox(Prompt:="Sélectionnez la cellule où commence le calendrier", Type:=8)
  On Error GoTo 0
  ReDim dat(1 To fin - deb + 1, 1 To 1)
  For i = CLng(deb) To CLng(fin): dat(i - deb + 1, 1) = i: Next
  With Cell.Resize(fin - deb + 1, 1)
    .NumberFormatLocal = "jjj jj mmm aa"
    .Font.Name = "verdana"
    .Font.Size = 10
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .Value = dat
  End With
Exit Sub

E:
  MsgBox msg
  Resume
End Sub
ROGER2327
#5166


Samedi 7 Clinamen 138 (La Main de Gloire, V)
9 Germinal An CCXIX
2011-W13-2T00:18:44Z
 
Dernière édition:
Re : calendrier sur une colonne

Bonjour et bienvenu sur le forum, salut les autres,

Il ne faut pas réinventer ce qui est prévu nativement sur Excel : menu Édition - Série

Si cet outil n'apparait pas dans la liste : menu Outils - Personnaliser - Édition
Glisser/coller l'icône dans la barre d'outils
Saisir la date de début en A1 (ou autre part suivant besoin)
Cliquer sur le bouton Série et suivre les instructions.
 
Re : calendrier sur une colonne

Bonjour hoerwind, ROGER2327

Dans ce cas précis, oui.

Le code présenté peut être décliné pour dresser la liste des mercredis et des vendredis par exemple en ajoutant une condition (If weekday...end if)
Question : peut-on dresser cette liste à l'aide du menu Édition - Série

Pour ma part, je mets de côté le code de Roger.

Klin89
 
Re : calendrier sur une colonne

Bjr à tous

Roger : et si l'on veut construire ce calendrier sur une ligne, que faut-il changer dans le code ?

merci de votre attention, cordialement, Gérard
 
Re : calendrier sur une colonne

Bonjour à tous
  • (…)
    Il ne faut pas réinventer ce qui est prévu nativement sur Excel : menu Édition - Série
    (…)
    On fait ce qu'on veut, d'autant que je doute que la fonction de remplissage en série native puisse appliquer la fonte Verdana, corps 10 et un format personnalisé à la série créée. Mais il n'est pas impossible que j'ignore les finesses de cette fonction intégrée.

    Ceci dit, on peut simplifier le code en utilisant la méthode DataSeries, si on n'a pas à déployer une série de dates présentant des singularités (par exemple : exclusion des mercredis). Voici une possibilité, incluant le choix de la disposition en ligne ou en colonne :
    VB:
    Sub Calendrier() ' construit un calendrier dans une ligne ou une colonne
    ' choix de la cellule de départ par l'utilisateur
    ' choix des dates de début et fin de calendrier
    Dim deb&, fin&, msg$, HV As Boolean
    Dim Cell As Range
     
      msg = "Date invalide."
      On Error GoTo E
      deb = CDate(InputBox("Première date du calendrier :"))
      fin = CDate(InputBox("Dernière date du calendrier :"))
      If fin < deb Then Exit Sub
      Set Cell = Application.InputBox(Prompt:="Sélectionnez la cellule où commence le calendrier", Type:=8)
      On Error GoTo 0
      HV = MsgBox("Orientation horizontale ?", vbYesNo) = vbYes
      With Cell.Resize((1 + HV) * (fin - deb) + 1, HV * (deb - fin) + 1)
        .NumberFormatLocal = "jjj jj mmm aa"
        .Font.Name = "Verdana"
        .Font.Size = 10
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Value = deb
        .DataSeries Rowcol:=2 + HV, Type:=xlChronological, Date:=xlDay, Step:=1, Trend:=False
      End With
    Exit Sub
    
    E:
      MsgBox msg
      Resume
    End Sub
  • (…)
    Roger : et si l'on veut construire ce calendrier sur une ligne, que faut-il changer dans le code ?
    (…)
    Il suffit de remplacer
    VB:
      With Cell.Resize(fin - deb + 1, 1)
    par
    VB:
      With Cell.Resize(1, fin - deb + 1)
    et
    VB:
        .Value = dat
    par
    VB:
        .Value = WorksheetFunction.Transpose(dat)
    On peut aussi faire une version donnant le choix de la disposition (comme dans l'exemple donné plus haut) :
    VB:
    Sub Calendrier1() ' construit un calendrier dans une ligne ou une colonne
    ' choix de la cellule de départ par l'utilisateur
    ' choix des dates de début et fin de calendrier
    Dim deb&, fin&, i&, dat&(), msg$, HV As Boolean
    Dim Cell As Range
     
      msg = "Date invalide."
      On Error GoTo E
      deb = CDate(InputBox("Première date du calendrier :"))
      fin = CDate(InputBox("Dernière date du calendrier :"))
      If fin < deb Then Exit Sub
      Set Cell = Application.InputBox(Prompt:="Sélectionnez la cellule où commence le calendrier", Type:=8)
      On Error GoTo 0
      HV = MsgBox("Orientation horizontale ?", vbYesNo) = vbYes
      ReDim dat(1 To fin - deb + 1, 1 To 1) '***
       For i = CLng(deb) To CLng(fin): dat(i - deb + 1, 1) = i: Next '***
       With Cell.Resize((1 + HV) * (fin - deb) + 1, HV * (deb - fin) + 1) '***
         .NumberFormatLocal = "jjj jj mmm aa"
        .Font.Name = "Verdana"
        .Font.Size = 10
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        If HV Then .Value = WorksheetFunction.Transpose(dat) Else .Value = dat
      End With
    Exit Sub
    
    E:
      MsgBox msg
      Resume
    End Sub
    En bricolant les lignes marquées '***, on peut adapter la série de dates à toutes les exigences particulières qu'on veut.
ROGER2327
#5167


Samedi 7 Clinamen 138 (La Main de Gloire, V)
9 Germinal An CCXIX
2011-W13-2T10:35:28Z
 
Re : calendrier sur une colonne

Merci beaucoup, mais j'ai une erreur quand je choisis "horizontal" :
"erreur définie par l'application ou par l'objet"
à la ligne :

Code:
  With Cell.Resize((1 + HV) * (fin - deb) + 1, HV * (deb - fin) + 1) '***

Gérard
 
Dernière édition:
Re : calendrier sur une colonne

Re…
Bizarre…
Je ne parviens pas à reproduire ce phénomène.
Je joins mon classeur d'essai.​
ROGER2327
#5168


Samedi 7 Clinamen 138 (La Main de Gloire, V)
9 Germinal An CCXIX
2011-W13-2T11:13:13Z
 

Pièces jointes

Re : calendrier sur une colonne

Ben oui ça marche....
Je ne comprends pas... j'ai refait un copier/coller dans mon fichier et ça marche ....!!!

désolé pour le dérangement...merci

Gérard
 
Re : calendrier sur une colonne

Re…
Ben oui ça marche....
Je ne comprends pas... j'ai refait un copier/coller dans mon fichier et ça marche ....!!!

désolé pour le dérangement...merci

Gérard
Pas grave…
La moindre erreur de sélection pour un copier/coller est fatale.
Bien que tout le code que je propose soit sérieusement testé, on n'est jamais sûr de rien…​
ROGER2327
#5170


Samedi 7 Clinamen 138 (La Main de Gloire, V)
9 Germinal An CCXIX
2011-W13-2T12:08:58Z
 
Re : calendrier sur une colonne

Re…
Ajouter :
Code:
.Columns.EntireColumn.AutoFit
(largeur automatique)
ou :
Code:
.ColumnWidth = 20 ' Ad libitum
(largeur contrôlée)
après la ligne :
Code:
If HV Then .Value = WorksheetFunction.Transpose(dat) Else .Value = dat
ROGER2327
#5172


Samedi 7 Clinamen 138 (La Main de Gloire, V)
9 Germinal An CCXIX
2011-W13-2T13:34:49Z
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
0
Affichages
556
Réponses
3
Affichages
1 K
Réponses
12
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…