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 avec récurence et neutralisation des vacances [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2014
    Messages : 14
    Par défaut Planning avec récurence et neutralisation des vacances
    Bonjour à tous.

    Voici trois jour que je bloque sur un problème.

    Je suis en train de réaliser en VBA une gestion de planning pour mon personnel.
    Certaines personnes ont un planning différent une semaine sur deux ou un semaine sur trois.
    La fréquence st determinée en début d'année. Par exemple:

    Semaine    1  2  3  4  5  6  7Vacances 8Vacances 9 10 11 12
    Planning   1  1  2  1  1  2                      1  1  2  1
    Mon problème s'il y a une ou deux semaines de vacances, la récurrence du planning reprend là où elle s'est arrêtée ainsi dans l'exemple ci-dessus.

    Alors oui, utiliser une boucle avec test des dates mais depuis trois jours, impossible d'écrire cette boucle.....

    Mon code n'est vraiment pas propre....

    J'espère que vous comprendrais ma demande

    Merci d'avance à tous pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je n'ai pas ouvert ton fichier ( http://www.developpez.net/forums/d84...s-discussions/ )
    Je comprends donc pas trop comment sont organisées tes données, en particulier la façon dont tu indiques les vacances et l'endroit où tu place le modèle de fréquence.

    En partant sur l'organisation de l'image ci-dessous :
    Nom : Planning.png
Affichages : 234
Taille : 6,7 Ko

    En B5 se trouve la formule :
    En C5 se trouve la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(C4="X";"";INDEX($B$1:$Z$1;1+MOD(C3-1-NB.SI($B4:B4;"X");NBVAL($B1:$Z1))))
    Puis tu copies C5 vers la droite autant que nécessaire.

    Le modèle peut avoir 1 à 25 valeurs, la formule s'adapte en fonction.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2014
    Messages : 14
    Par défaut
    Merci, c'est exactement cela, mais en VBA....
    Je continue à chercher

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2014
    Messages : 14
    Par défaut
    Bon finalement j'ai trouvé.
    Du coup je poste le code si ça peut rendre service à quelqu'un

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Private Sub CommandButton2_Click() 'uniquement pour le test
    Dim D_Toussaint As Date
    Dim F_Toussaint As Date
    Dim D_Noel As Date
    Dim F_Noel As Date
    Dim D_Hiver As Date
    Dim F_Hiver As Date
    Dim D_Print As Date
    Dim F_Print As Date
    Dim D_Ete As Date
    Dim F_Ete As Date
    Dim Rentree As Date
    Dim First_Date As Date
    Dim i
    Dim Sem_Ok
    Dim Nbr_Ok
    Dim Frequence
    Dim Neutral
     
     
    '******Dans la feuille 3 sont stockées toutes les dates des vacances*********************
    With Feuil3
    Rentree = .Cells(2, 2).Value
    D_Toussaint = .Cells(3, 2).Value
    F_Toussaint = .Cells(3, 3).Value
    D_Noel = .Cells(4, 2).Value
    F_Noel = .Cells(4, 3).Value
    D_Hiver = .Cells(5, 2).Value
    F_Hiver = .Cells(5, 3).Value
    D_Print = .Cells(6, 2).Value
    F_Print = .Cells(6, 3).Value
    D_Ete = .Cells(7, 2).Value
    F_Ete = .Cells(7, 3).Value
    End With
     
     
    Frequence = TextBox2.Text 'Correspond à la récurence d'application de l'emploi du temps "3" pour 1semaine sur trois par exemple
    First_Date = DTPicker1.Value 'Dasn la DTpicker on saisi la date de la première occurence
    Nbr_Ok = Format(First_Date, "ww", vbMonday, vbFirstFourDays) 'On récupère le numéro de la semaine de la première occurence
     
    TextBox3.Text = Nbr_Ok 'On stocke le numéro de la première occurence dasn une textbox - Provisoire, juste pour la construction
     
    For i = Rentree To D_Ete Step 7 'On fixe la période
     
    If D_Toussaint < i And i < F_Toussaint Then Neutral = Neutral + 7 'Pour chaque période de vacances on neutralise une semaine
    If D_Noel < i And i < F_Noel Then Neutral = Neutral + 7 'Pour chaque période de vacances on neutralise une semaine
    If D_Hiver < i And i < F_Hiver Then Neutral = Neutral + 7 'Pour chaque période de vacances on neutralise une semaine
    If D_Print < i And i < F_Print Then Neutral = Neutral + 7 'Pour chaque période de vacances on neutralise une semaine
     
    If i = First_Date + Neutral + (Frequence * 7) Then
    Sem_Ok = Format(i, "ww", vbMonday, vbFirstFourDays)
    TextBox3.Text = TextBox3.Text & "|" & Sem_Ok
    First_Date = i
    Neutral = 0
    End If
     
    Next i
     
     
    End Sub
    Résolu. Merci à tous

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

Discussions similaires

  1. Trier mon planning avec des horaires
    Par jetset30 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/11/2009, 17h36
  2. créer un plan avec des coordonnées
    Par relena93 dans le forum Qt
    Réponses: 1
    Dernier message: 09/03/2009, 20h54
  3. Tracer des individus dans un plan avec différentes couleurs
    Par stefsas dans le forum ODS et reporting
    Réponses: 4
    Dernier message: 19/09/2008, 10h12
  4. Réponses: 1
    Dernier message: 15/06/2008, 12h32
  5. Afficher un fond en arrière plan avec des boutons
    Par eGen dans le forum Agents de placement/Fenêtres
    Réponses: 15
    Dernier message: 03/04/2005, 23h37

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