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 :

Aide pour créer un Calendrier VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut Aide pour créer un Calendrier VBA
    Bonjour à tous et à toutes .

    Voilà j'ai un problème, je vous l'explique, je désirerai remplir mon calendrier par les numéros de jours, en fonction du mois et de l'année, le tout ne devant pas dépasser la limite de la largeur et de la hauteur du tableau. Hélas je ne sais pas comment commencer du tout, c'est pour cela que je vous demande de l'aide. Si vous pouvez m'éclairer, je vous en serai reconnaissant. Merci d'avance Calendrier.xlsm

  2. #2
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut
    Je n'ai pas demandé qu'on me fasse directement le travail, mais si on pouvait m'aider en m'expliquant comment commencer, j'ai joint mon fichier pour que ça soit plus simple à comprendre et pour que vous sachiez comment je voudrai que ça soit fait

  4. #4
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    As-tu déjà paramétré ton UserForm du coup ?

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    j'ai joint mon fichier pour que ça soit plus simple à comprendre et pour que vous sachiez comment je voudrai que ça soit fait
    Très mauvaise idée. Lis ma signature. Je suis loin d'être le seul à ne pas accepter d'ouvrir un classeur tiers.
    Tu dois être capable, si ton projet et bien pensé, de l'exposer très précisément.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut
    Oui, j'ai déjà paramétré mon UserForm

    unparia, je vous comprends, j'aurai sûrement fait de même à votre place.
    Cela fait déjà plus d'une semaine déjà que j'essaie, mais rien ne va

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    Const j = 1, m = 5, y = 2017
    Debug.Print DateSerial(y, m, j)
    End Sub

  8. #8
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub Bouton6_Clic()
     
    Set f = ActiveSheet
     
    Set cellule0 = f.Cells(15, "D")
     
    interligne = 2
     
    cellule0.Offset(1, 1).Resize(6 * interligne, 7).ClearContents
     
    mois = 6
    annee = 2017
     
    ladate = DateSerial(annee, mois, 1)
     
    jour = Weekday(ladate, vbUseSystemDayOfWeek)
    precedent = jour
    semaine = 1
     
    While Month(ladate) = mois
     
    cellule0.Offset(semaine * interligne, jour).Value = Day(ladate)
     
    cellule0.Offset(semaine * interligne, jour).Select
     
    ladate = ladate + 1
     
    jour = Weekday(ladate, vbUseSystemDayOfWeek)
    If jour < precedent Then
     semaine = semaine + 1
    End If
    precedent = jour
     
    Wend
     
    End Sub

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour ca devrait faire l'affaire selon ton tableau dans ta piece jointe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
        create_calendrier 2017, 2 'année puis mois
    End Sub
    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
    Function create_calendrier(année, mois)
        Dim i As Long, col As Long, lig As Long, nbjour As Long
        nbjour = Day(DateSerial(année, mois + 1, 0)) ' te donne le nombre de jour dans le mois en parametre
        col = Weekday(DateSerial(année, mois, 1)) - 1    ' te donne la colonne(l'index du jour de la semaine ), ajouter la différence si le calendrier ne commence pas en colonne "A"
        If col = 0 Then col = 7
        lig = 3
        With Sheets(1)
            .Range(.Cells(3, 1), .Cells(14, 7)).ClearContents
            For i = 1 To nbjour
                If col = 8 Then lig = lig + 2: col = 1
                .Cells(lig, col) = i
                col = col + 1
            Next
            .Cells(1, 1) = Format(DateSerial(année, mois, 1), "mmmm  ") & année
        End With
    End Function
    Nom : demo.gif
Affichages : 3386
Taille : 328,5 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    Bonjour à tous,
    Je me suis permis de reprendre le joli code de Patricktoulon (Merci ), enfaite je suis parti avec une validation des données en A1 pour l'année, et pareil en B1 pour les mois,
    pour avoir automatiquement un beau calendrier en changeant le mois ou l'année, Vous trouverez ci dessous le code modifié,
    sans doute avec quelque arrangement à faire (suis débutant et j'aime apprendre).
    J'attends vos conseils pour aider tous ce qui souhaite en profiter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Not Intersect(Target, Range("A1")) Is Nothing Then Call Calendrier
    If Not Intersect(Target, Range("B1")) Is Nothing Then Call Calendrier
     
    End Sub
    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
    27
    28
    29
    30
    31
    Sub Calendrier()
     
    Dim col&, an&, nbjour&, lig&, j&
    Dim mo$, l$
    Dim m%, n%, k%, o%
    an = Worksheets("Feuil1").Range("A1").Value: mo = Worksheets("Feuil1").Range("B1").Value
    k = Month(DateValue(mo & ", 0")): nbjour = Day(DateSerial(an, k + 1, 0))
    col = Weekday(DateSerial(an, k, 1)) - 1
    If col = 0 Then col = 7
    lig = 4
        With Worksheets("Feuil1")
        Range(Cells(3, 1), Cells(20, 7)).ClearContents
        Range(Cells(3, 1), Cells(20, 7)).Interior.Pattern = xlNone
        Range(Cells(3, 1), Cells(20, 7)).Borders.LineStyle = xlLineStyleNone
    For j = 1 To nbjour
    l = Format((j & "/" & k & "/" & an), "dddd")
    m = Day(Date)
    n = Month(Date)
    o = Year(Date)
        If col = 8 Then lig = lig + 3: col = 1
        .Cells(lig, col) = j
        .Cells(lig - 1, col) = l
        .Cells(lig - 1, col).Interior.ColorIndex = 20
        Range(Cells(lig + 1, col), Cells(lig - 1, col)).Borders.LineStyle = xlDouble
        If m = j And k = n And an = o Then
        .Cells(lig, col).Interior.ColorIndex = 6
        End If
    col = col + 1
    Next
    End With
    End Sub
    Pièce jointe 270869

    Au plaisir

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour Nicolas
    sincèrement une ligne de jour en format text c'est un peu tout mutch
    il aurait été bien par exemple d'ajouter une colonne pour les numero de semaine
    voir programmer un array pour les fériés
    et je ne sais quoi d'autre qui pourrais avoir une fonction (utilité)
    mais les jours pour chaque semaine non
    allez tiens amuse toi avec ca

    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
    Sub test()
        create_calendrier 2017, 12    'année puis mois
    End Sub
    Function create_calendrier(année, mois)
        Dim i As Long, col As Long, lig As Long, nbjour As Long, difeuro As Long
        nbjour = Day(DateSerial(année, mois + 1, 0))    ' te donne le nombre de jour dans le mois en parametre
        col = Weekday(DateSerial(année, mois, 1))  ' te donne la colonne(l'index du jour de la semaine ), ajouter la différence si le calendrier ne commence pas en colonne "A"
        If Weekday(DateSerial(année, 1, 1), vbMonday) > 4 Then difeuro = 1    ' 1 si semaine commence apres jeudi
        If col = 1 Then col = 8
        lig = 3
        With Sheets(1)
            .Range(.Cells(1, 1), .Cells(14, 8)).ClearContents
            For i = 1 To nbjour
                If col = 9 Then lig = lig + 2: col = 2
                .Cells(lig, col) = i
                .Cells(lig, 1) = Val(Format(DateSerial(année, mois, i), "WW", vbMonday)) - difeuro
                col = col + 1
            Next
            .Cells(1, 2) = UCase(Format(DateSerial(année, mois, 1), "mmmm yyyy "))
            .Cells(2, 1).Resize(1, 8) = Array("semaine", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche")
     
                End With
    End Function
    UN PEU COMME CA
    Nom : demo.gif
Affichages : 4246
Taille : 322,8 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Ce code concerne un userform mais le calcule de fériés est bien présent!
    https://www.developpez.net/forums/d1...e/#post8029399

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    salut robert nikel j'ai intégré ta fonction paque

    Juste une petite question bête avant que je regarde, Comment tu fait pour combiner tes cellules K1 K2 avec ton code ?
    @nicolas
    dans l'evement change du sheet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$K$2" Or Target.Address = "$K$1" Then create_calendrier Range("K1").Value, Range("K2").Value
    End Sub
    @docmarti
    oui aussi
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  14. #14
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    Merci à tous, y a du boulot là, merci encore

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    si il y a avait pas de boulot on s'ennuierait
    tu semble perdu avec l'évènement change ?
    Nom : demo.gif
Affichages : 311
Taille : 541,8 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    Non, ça c'est ok pas de soucis, mais c'est tout ce que vous m'avez balancé en peu de temps, je m'y perd

  17. #17
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne voudrais pas gâcher la fête mais une simple mise en forme conditionnelle et quelques formules notamment de la catégorie Date et c'est fait.
    Surtout si c'est pour faire un calendrier perpétuel. A quoi bon faire cela en VBA
    Pour paraphraser Pierre Fauconnier "Penser Excel avant VBA"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  18. #18
    Invité
    Invité(e)
    Par défaut
    Bonjour mes bien cher frères,
    pour c'eux que ça intéresse (un informaticien c'est avant tout un documentaliste)!

    http://asso-grecque-ahela.fr/docs/datepaques.pdf

    https://fr.wikipedia.org/w/index.php...42n171pfgk536n

  19. #19
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Amen
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. aide pour créer un fond d'écran en vba
    Par elephanto dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 14/02/2009, 09h40
  2. debutant en VBA aide pour créer un formulaire
    Par vince_ballad dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/07/2007, 22h41
  3. besoin d'aide pour créer un uml
    Par bob75018 dans le forum UML
    Réponses: 9
    Dernier message: 11/03/2006, 12h18
  4. aide pour créer un jeu
    Par cstefany dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/10/2005, 03h51
  5. [FLASH MX2004] Aide pour créer une animation
    Par SnakeTales dans le forum Flash
    Réponses: 5
    Dernier message: 04/08/2005, 10h50

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