IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Créer petit calendrier [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut Créer petit calendrier
    Hello le forum,

    J'ai un souci avec les dates, je souhaites générer un calendrier selon le mois et l'année qu'on choisit dans deux listes de validation.

    Je m'explique :

    En A1 liste de validation avec les mois.
    En A2 liste de validation avec les années (de 2009 à 2040).

    1) Je souhaites qu'il affiche en colonne B2:B32 les dates selon le mois et l'année choisit. (Exemple de format -> 03 juil.)

    2) Je souhaites qu'il affiche en colonne C2:C32 les noms des jours (Lundi, Mardi, Mercredi...)

    Juste les dates de 1 à 30 ou 31 selon le mois, ou 28 ou 29 pour février.
    Et le jour à côté... pas de fériés, rien d'autre

    Pour ceux qui voudraient télécharger le fichier, je le joins...

    Je ne sais pas si c'est faisable et je suis conscient que je demande beaucoup, mais là je patauge.

    Je vous serais reconnaissant si vous pouviez m'aider.

    Par avance, merci infiniment.

    Cordialement, Anton.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Bonjour,

    Je pense qu'un coup d'oeil du coté de la fonction dateadd devrait t'aider (il faudra peut-etre la combiner avec dateserial.

  3. #3
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    voici une méthode à partir de ton fichier
    Fichiers attachés Fichiers attachés

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Une autre piste de reflexion ci-jointe.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Bonjour
    Bravo cafeine pour les formules de calcul, ce qui prouve bien que tout n'est pas VBA

    Toutefois pour les inconditionnels, un code à adapter et à compléter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
        Dim datedebut As Date, datefin As Date
        Dim MoisNum As Integer, DateEnCours As Date
        Dim i As Integer
     
        Select Case Cells(1, 1).Value ' cellule A1
            Case "Janvier"
                MoisNum = 1
            Case "Février"
                MoisNum = 2
            Case "Mars"
                MoisNum = 3
            '...
            Case "Novembre"
                MoisNum = 11
            Case "Décembre"
                MoisNum = 12
        End Select
     
        datedebut = DateSerial(Cells(2, 1), MoisNum, 1)
        datefin = DateSerial(Cells(2, 1), MoisNum + 1, 1) - 1
        i = 0 ' utilisé pour le décalage de ligne
        For DateEnCours = datedebut To datefin
            Cells(2 + i, 2).Value = Day(DateEnCours) 'colonne B
            Cells(2 + i, 3).Value = Format(DateEnCours, "dddd") 'colonne C
            i = i + 1
        Next DateEnCours

  6. #6
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Merci fgiambelluco , dans ton code évite toi l'énumération des mois en passant par EQUIV voire par une recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MoisNum = ActiveSheet.Range("N1:N12").Find(Cells(1, 1).Value).Row
    Citation Envoyé par fgiambelluco Voir le message
    Bonjour
    Bravo cafeine pour les formules de calcul, ce qui prouve bien que tout n'est pas VBA

    Toutefois pour les inconditionnels, un code à adapter et à compléter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
        Dim datedebut As Date, datefin As Date
        Dim MoisNum As Integer, DateEnCours As Date
        Dim i As Integer
     
        Select Case Cells(1, 1).Value ' cellule A1
            Case "Janvier"
                MoisNum = 1
            Case "Février"
                MoisNum = 2
            Case "Mars"
                MoisNum = 3
            '...
            Case "Novembre"
                MoisNum = 11
            Case "Décembre"
                MoisNum = 12
        End Select
     
        datedebut = DateSerial(Cells(2, 1), MoisNum, 1)
        datefin = DateSerial(Cells(2, 1), MoisNum + 1, 1) - 1
        i = 0 ' utilisé pour le décalage de ligne
        For DateEnCours = datedebut To datefin
            Cells(2 + i, 2).Value = Day(DateEnCours) 'colonne B
            Cells(2 + i, 3).Value = Format(DateEnCours, "dddd") 'colonne C
            i = i + 1
        Next DateEnCours

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Calendrier] Créer un calendrier dynamique en php
    Par almisuifre dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 11/01/2012, 09h27
  2. Créer un calendrier (état) avec AM et PM
    Par lemiref dans le forum IHM
    Réponses: 6
    Dernier message: 22/11/2006, 17h54
  3. Réponses: 1
    Dernier message: 27/10/2006, 08h13
  4. Comment créer un calendrier sous vb.net
    Par Clim44 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 07/06/2006, 15h22
  5. Comment créer un calendrier ?
    Par Vodkha dans le forum Composants VCL
    Réponses: 9
    Dernier message: 24/07/2005, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo