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 :

planning des congés pour un calendrier [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Par défaut planning des congés pour un calendrier
    Bonjour à tout le monde,
    Je souhaiterais automatiser ma gestion des jours de congé pour les inclure dans un calendrier.
    Pour cela, j'ai une feuille pour encoder les jours (congé) et une feuille (planning) dans laquelle se retrouvera tous les jours à la suite, pour l'affichage dans un calendrier.
    Dans la feuille "congé', en C5, je mets mon 1er jour et le dernier jour en D5. Par exemple, en C5, la valeur 12/10/2020 et en D5, la valeur 23/10/2020.
    Ce que je cherche à faire, c'est retrouver sur la feuille planning, dans la 1ère cellule vide de la colonne G (dans ce cas, G3), la valeur 12/10/2020 et dans la cellule vide vers le bas, 13/10/2020 et ainsi de suite jusque G14 avec la valeur 23/10/2020.
    Ensuite, dans la feuille congé, s'il y a une date en C6 et D6, refaire le même processus avec la valeur C6 qui se retrouve sur la feuille planning en G15. Si C6 est vide, la boucle s'arrête.
    Je vois ce que je souhaiterais faire mais je n'arrive pas à trouver le début.
    Dans mon exemple (calendrier), les jours de congé sont en bleu et les jours fériés en jaune.
    Ca fonctionne déjà. Mon problème, c'est automatiser les jours de congé de la feuille congé vers la feuille planning.
    En vous remerciant pour votre aide.
    Images attachées Images attachées    

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour,

    Pour t'aider et te mettre sur la bonne voie, je te conseil la lecture de ce tuto de Pierre Fauconnier.

    Calendrier Perpétuel

    https://fauconnier.developpez.com/tu...el/calendrier/

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Essayez ceci
    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
    Sub Copie_congés()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim i As Long, DerLig_f1 As Long, DerLig_f2 As Long, Annee As Long
        Dim Col_f2 As Range
     
        Application.ScreenUpdating = False
        Set f1 = Sheets("congé")
        Set f2 = Sheets("planning")
        Annee = f1.Range("C1").Value
     
        DerLig_f1 = f1.Range("C" & Rows.Count).End(xlUp).Row
        Set Col_f2 = f2.Rows(2).Find(Annee)
        LCol_f2 = Split(Col_f2.Address, "$")(1)
        DerLig_f2 = f2.Range(LCol_f2 & "3:" & LCol_f2 & Rows.Count).End(xlUp).Row + 1
     
        For i = 5 To DerLig_f1
            Date_Deb = f1.Cells(i, "C")
            Date_fin = f1.Cells(i, "D")
            Ind = 0
            Do
                f2.Range(LCol_f2 & DerLig_f2).Value = Date_Deb + Ind
                Ind = Ind + 1
                DerLig_f2 = DerLig_f2 + 1
            Loop While f2.Range(LCol_f2 & DerLig_f2 - 1) < Date_fin
        Next i
    End Sub
    Cdlt

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Par défaut
    Citation Envoyé par mfoxy Voir le message
    Merci mais je ne trouve pas la solution à ce que je souhaiterais arriver

    Citation Envoyé par ARTURO83 Voir le message

    Merci mais j'ai une erreur sur le code:
    Erreur d'exécution 91
    Variable objet ou variable de bloc with non définie sur la ligne "LCol_f2 = Split(Col_f2.Address, "$") (1)"

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Merci mais j'ai une erreur sur le code:
    Erreur d'exécution 91
    Variable objet ou variable de bloc with non définie sur la ligne "LCol_f2 = Split(Col_f2.Address, "$") (1)"
    La variable LCol_f2 n'a pas été déclarée
    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
    Option Explicit
     
    Sub Copie_congés()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim i As Long, DerLig_f1 As Long, DerLig_f2 As Long, Annee As Long, Ind As Long
        Dim Col_f2 As Range
        Dim LCol_f2 As String
        Dim Date_Deb As Date, Date_fin As Date
     
        Application.ScreenUpdating = False
        Set f1 = Sheets("congé")
        Set f2 = Sheets("planning")
        Annee = f1.Range("C1").Value
     
        DerLig_f1 = f1.Range("C" & Rows.Count).End(xlUp).Row
        Set Col_f2 = f2.Rows(2).Find(Annee)
        LCol_f2 = Split(Col_f2.Address, "$")(1)
        DerLig_f2 = f2.Range(LCol_f2 & "3:" & LCol_f2 & Rows.Count).End(xlUp).Row + 1
     
        For i = 5 To DerLig_f1
            Date_Deb = f1.Cells(i, "C")
            Date_fin = f1.Cells(i, "D")
            Ind = 0
            Do
                f2.Range(LCol_f2 & DerLig_f2).Value = Date_Deb + Ind
                Ind = Ind + 1
                DerLig_f2 = DerLig_f2 + 1
            Loop While f2.Range(LCol_f2 & DerLig_f2 - 1) < Date_fin
        Next i
    End Sub
    Le fichier en exemple pour comparer avec le vôtre, notamment au niveau des colonnes
    Pièce jointe 573193

    Cdlt

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Par défaut
    Merci, c'est exactement cela que je cherchais.
    Cela fonctionne très bien si je mets manuellement l'année dans la feuille "congé", colonne G (Dans ce cas, 2020)
    Si je passe par =annee(A1) ou A1 est la date du jour, cela ne fonctionne plus.
    J'ai mis la cellule en format date, en format standard, rien à faire.
    J'ai une erreur sur la ligne LCol_f2 = Split(Col_f2.Address, "$") (1).
    Pour résumer, dès que je fais référence à une cellule pour avoir l'année, ça plante.

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 17/02/2009, 22h37
  2. Logiciel pour concevoir les plans des maisons
    Par WELCOMSMAIL dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 23/12/2008, 08h38
  3. Réponses: 0
    Dernier message: 26/11/2008, 12h20
  4. [MSSQL2005] Quel plan de maintenance pour des performances?
    Par david_chardonnet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/03/2008, 12h51
  5. Planning et estimation des charges pour un projet de site Intranet
    Par rad_hass dans le forum Gestion de projet
    Réponses: 1
    Dernier message: 08/02/2008, 11h48

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