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 :

Macro pour alimenter un tableau à partir d'un planning et d'un tableau contenant un calendrier perpetuel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #21
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Merci,

    Je viens de faire tourner la macro elle fonctionne, mais elle affiche effectivement plus de résultats qu'il n'en faudrait dans la feuille "instances PCK" car à partir de la colonne AG les résultats seront pour la feuille "Instances PDK" . Je regarde le code pour essayer de comprendre et essayer de faire les modifications avant de revenir vers toi.
    Cordialement,

  2. #22
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    ... et j'ai réussi à te caser une boucle For Next !
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #23
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Oui j'ai vu ça.

    Cordialement,

    Bonjour Daniel,

    J'ai modifié cette ligne pour les année à 53 semaines:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set Plage = .Cells(Ligne, 2).Resize(, 53)
    Il faudrait que la macro ne prenne que les entrées, traités et solde des colonnes suivantes pour "Instances PCK" B C D E F G K L M N O P T U V W X Y Z AA AB AC AD AE (le reste étant pour Instances PDK)
    afin de ne pas prendre en compte les colonnes concernant la productivité des pôles.

    Concernant les flèches est-il possible d'intégrer une MFC dans la macro pour supprimer le tas de flèche à coté du tableau? Par contre les flèches dans les MFC sont inverses à mon besoin flèche montante verte et flèche descendante rouge, il faudrait que ça soit le contraire.

    Cordialement,

  4. #24
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Essaie :

    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
    Sub RemplissagePCK()
        Dim Plage As Range, C As Range, S2 As Variant, S1 As Variant
        Dim Ligne As Integer, Lig As Integer, Cols As Variant, Col As Integer
        Cols = Array(2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31)
        With Sheets("Suivi hebdo")
            S2 = Application.Max(.[A:A])
            S1 = InputBox("Entrez un n° de semaine entre 2 et " & S2)
            If S1 = "" Or CInt(S1) > S2 Or CInt(S1) < 2 Then Exit Sub
            S1 = CInt(S1)
            Ligne = Application.Match(S1, .[A:A], 0)
            Set Plage = .Cells(Ligne, 2).Resize(, 52)
        End With
        Lig = 8
        Col = 1
        With Sheets("Structure Instances PCK")
            For Each C In Plage
                Col = Col + 1
                If IsNumeric(Application.Match(C.Column, Cols, 0)) Then
                    If C.Offset(-Ligne + 3).Value = "Entrées" Then
                        Lig = Lig + 1
                        .Cells(Lig, 3) = C.Value
                    ElseIf C.Offset(-Ligne + 3).Value = "Traités" Then
                        .Cells(Lig, 5) = C.Value
                    ElseIf C.Offset(-Ligne + 3).Value = "Solde" Then
                        .Cells(Lig, 6) = C.Value
                        If C.Value = C.Offset(-1).Value Then
                            .[K10].Copy .Cells(Lig, 7)
                        ElseIf C.Value > C.Offset(-1).Value Then
                            .[K9].Copy .Cells(Lig, 7)
                        ElseIf C.Value < C.Offset(-1).Value Then
                            .[K11].Copy: .Cells(Lig, 7).Paste
                        End If
                    End If
                End If
            Next C
        End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #25
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Bonjour Daniel,

    Je voudrais rajouter une ligne de code avant la copie des flèches pour effacer les cellules sinon les flèches se collent les unes sur les autres d'une semaine à l'autre.
    j'ai essayé de faire ça mais ça ne marche pas.( si ligne 7 différente de vides alors tu supprimes mais j'ai du louper quelque chose)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     If .Cells(Lig, 7) <> ("") Then
                            .Cells(Lig, 7) = .Cells(Lig, 7).Delete
    Cordialement,

  6. #26
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonjour,

    Je voudrais rajouter une ligne de code avant la copie des flèches pour effacer les cellules sinon les flèches se collent les unes sur les autres d'une semaine à l'autre.
    Non, le fait d'effacer la cellule ne supprime pas la flèche. J'ai modifié le code :

    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
    Sub RemplissagePCK()
        Dim Plage As Range, C As Range, S2 As Variant, S1 As Variant
        Dim Ligne As Integer, Lig As Integer, Cols As Variant, Col As Integer
        Cols = Array(2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31)
        With Sheets("Suivi hebdo")
            S2 = Application.Max(.[A:A])
            S1 = InputBox("Entrez un n° de semaine entre 2 et " & S2)
            If S1 = "" Or CInt(S1) > S2 Or CInt(S1) < 2 Then Exit Sub
            S1 = CInt(S1)
            Ligne = Application.Match(S1, .[A:A], 0)
            Set Plage = .Cells(Ligne, 2).Resize(, 52)
        End With
        Lig = 8
        Col = 1
        With Sheets("Structure Instances PCK")
            'boucle de suppression des flèches
            For Each Sh In .Shapes
                If Sh.TopLeftCell.Column = 7 Then Sh.Delete
            Next Sh
            For Each C In Plage
                Col = Col + 1
                If IsNumeric(Application.Match(C.Column, Cols, 0)) Then
                    If C.Offset(-Ligne + 3).Value = "Entrées" Then
                        Lig = Lig + 1
                        .Cells(Lig, 3) = C.Value
                    ElseIf C.Offset(-Ligne + 3).Value = "Traités" Then
                        .Cells(Lig, 5) = C.Value
                    ElseIf C.Offset(-Ligne + 3).Value = "Solde" Then
                        .Cells(Lig, 6) = C.Value
                        If C.Value = C.Offset(-1).Value Then
                            .[K10].Copy .Cells(Lig, 7)
                        ElseIf C.Value > C.Offset(-1).Value Then
                            .[K9].Copy .Cells(Lig, 7)
                        ElseIf C.Value < C.Offset(-1).Value Then
                            .[K11].Copy: .Cells(Lig, 7).Paste
                        End If
                    End If
                End If
            Next C
        End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  7. #27
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Merci maintenant c'est parfait!
    Je te souhaite un bon weekend et je te sollicite lundi pour mes dernières pour mes dernière macros...

    un très grand merci Daniel.

    Cordialement,

  8. #28
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Bonjour Daniel,

    Voila j'ai adapté ta macro pour les instances PDK tout fonctionne parfaitement!

    Je t'expose mes dernieres macros que je souhaite mettre en place.

    -Je souhaite remplir automatiquement la feuille "suivi mensuel" sur le même principe que la feuille "suivi hebdo" à partir de la feuille "saisie".
    -La feuille "activité doit pemettre de totaliser pour chaque employés les différentes activité qu'ils ont chaque semaines à partir de la feuille "Plannning" dans le but d'effectuer une meilleure planification des tâches.

    -Pour les feuilles "Instances" je souhaite mettre en place à coté des tableau un calculateur pour faire une moyenne de productivité pour le pôle productivité régularisation PCK et le pôle productivité PDK :
    exemple aujourd'hui nous sommes en semaine 13: ce calculateur doit pouvoir donner la possibilité de calculer la moyenne de la productivité des semaines précedentes en totalisant les traitées et les 1/2 journées affectées et afficher le résultat tout me laissant le choix du nombre de semaines précédantes sur lequel je souhaite effectuer le calcul dans l'exemple présent de jusqu'a 12 semaines et plus au fur et à mesure dans l'avancmeent dans l'année.

    - est-il possible de mettre en place un lien hypertexte qui permette d'afficher le "planning" à la bonne date à l'ouverture, je souhaite également faire de même pour la feuille "saisie" avec en plus la selection de l'activité à saisir par le biais d'une liste déroulante.

    - la dernière macro sera pour remplacer les liaisons des fichiers externe qui ne fonctionne pas.

    Ca fait beaucoup de macro....

    Cordialement,

  9. #29
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonjour,

    -Je souhaite remplir automatiquement la feuille "suivi mensuel" sur le même principe que la feuille "suivi hebdo" à partir de la feuille "saisie".
    Est-ce que ça te pose un problème ? Dis ce qui t'arrête.

    -La feuille "activité doit pemettre de totaliser pour chaque employés les différentes activité qu'ils ont chaque semaines à partir de la feuille "Plannning" dans le but d'effectuer une meilleure planification des tâches.
    Par macro ?

    -Pour les feuilles "Instances" je souhaite mettre en place à coté des tableau un calculateur pour faire une moyenne de productivité pour le pôle productivité régularisation PCK et le pôle productivité PDK :
    exemple aujourd'hui nous sommes en semaine 13: ce calculateur doit pouvoir donner la possibilité de calculer la moyenne de la productivité des semaines précedentes en totalisant les traitées et les 1/2 journées affectées et afficher le résultat tout me laissant le choix du nombre de semaines précédantes sur lequel je souhaite effectuer le calcul dans l'exemple présent de jusqu'a 12 semaines et plus au fur et à mesure dans l'avancmeent dans l'année.
    Il faudrait que je voie quelle disposition tu veux donner à ce calculateur.

    - est-il possible de mettre en place un lien hypertexte qui permette d'afficher le "planning" à la bonne date à l'ouverture, je souhaite également faire de même pour la feuille "saisie" avec en plus la selection de l'activité à saisir par le biais d'une liste déroulante.
    Ca ne sera pas un lien hypertexte mais le résultat sera le même. Je peux traiter cette partie assez rapidement.. Laquelle des deux feuilles sera affichée à l'ouverture ?

    - la dernière macro sera pour remplacer les liaisons des fichiers externe qui ne fonctionne pas.
    C'est à priori assez facile si l'on doit supprimer toutes les liaisons. C'est faisable de toutes façons.

    Je vais avoir assez peu de temps d'ici le 10/04 et ensuite, je serai en vacances pour une semaine. Je vais faire ce que je peux.

    Voici le fichier modifié pour le positionnement à l'ouverture sur les feuilles Saisie et Planning.

    http://cjoint.com/?ECEnxGhuJfl
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  10. #30
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Q:-Je souhaite remplir automatiquement la feuille "suivi mensuel" sur le même principe que la feuille "suivi hebdo" à partir de la feuille "saisie".
    Est-ce que ça te pose un problème ? Dis ce qui t'arrête.
    R:Ce qui me pose un souci c'est de remplacer toutes la partie de la macro "Semaines" pour le calcul de la semaine pour remplacer par un calcul pour le mois.

    Q:Ca ne sera pas un lien hypertexte mais le résultat sera le même. Je peux traiter cette partie assez rapidement.. Laquelle des deux feuilles sera affichée à l'ouverture ?
    R:Tout dépend les besoins des utilisateurs il n'y a pas de feuille prioritaire, je viens de télécharger ton fichier peux-tu me dire comment tu as fait?

    Q:La feuille "activité doit pemettre de totaliser pour chaque employés les différentes activité qu'ils ont chaque semaines à partir de la feuille "Plannning" dans le but d'effectuer une meilleure planification des tâches.
    Par macro ?
    R:Si je peux éviter la macro c'est mieux.

    Qour les feuilles "Instances" je souhaite mettre en place à coté des tableau un calculateur pour faire une moyenne de productivité pour le pôle productivité régularisation PCK et le pôle productivité PDK :
    exemple aujourd'hui nous sommes en semaine 13: ce calculateur doit pouvoir donner la possibilité de calculer la moyenne de la productivité des semaines précedentes en totalisant les traitées et les 1/2 journées affectées et afficher le résultat tout me laissant le choix du nombre de semaines précédantes sur lequel je souhaite effectuer le calcul dans l'exemple présent de jusqu'a 12 semaines et plus au fur et à mesure dans l'avancmeent dans l'année. Il faudrait que je voie quelle disposition tu veux donner à ce calculateur.

    Exemple.xlsx

    Cordialement,

  11. #31
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Q:-Je souhaite remplir automatiquement la feuille "suivi mensuel" sur le même principe que la feuille "suivi hebdo" à partir de la feuille "saisie".
    Est-ce que ça te pose un problème ? Dis ce qui t'arrête.
    R:Ce qui me pose un souci c'est de remplacer toutes la partie de la macro "Semaines" pour le calcul de la semaine pour remplacer par un calcul pour le mois.
    Ca peut se régler facilement, même par des formules. Si malgré tout tu préfères du VBA, dis-le.

    R:Tout dépend les besoins des utilisateurs il n'y a pas de feuille prioritaire, je viens de télécharger ton fichier peux-tu me dire comment tu as fait?
    Tu vas peut-être avoir du mal à comprendre. J'ai ajouté un userform (menus Insertion, Userform). On le voit dans la fenêtre VBE ici :

    Nom : Capture.JPG
Affichages : 134
Taille : 14,1 Ko
    Quand tu fais un double-clic dessus, il s'affiche dans la partie droite :
    Nom : Capture.JPG
Affichages : 143
Taille : 16,6 Ko
    Il est entièrement occupé par un contrôle de type "ListBox" que je remplis avec les activités (voir plus bas).
    Voici le code commenté de la macro s'exécutant à l'ouverture. Elle se trouve dans le module "ThisWorkbook".

    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
    Private Sub Workbook_Open()
        Dim Col As Variant, Lig As Variant, C As Range, ResAdr As String
        'Positionnement sur la feuille Planning
        With Sheets("Planning")
            'Recherche de la colonne correspondant à la date du jour
            'Date est une variable contenant cette date.
            Col = Application.Match(Date * 1, .[9:9], 0)
            'si on la trouve (il n'y a pas de raison, mais bon...)
            'on va sepositionner sur cette colonne en ligne 2
            If IsNumeric(Col) Then Application.Goto .Cells(2, Col), Scroll:=True
        End With
        'Positionnement sur la feuille Saisie
        With Sheets("Saisie")
            'Recherche de la ligne correspondant à la date du jour
            'Match est l'équivaalent de la fonction EQUIV
            Lig = Application.Match(Date * 1, .[D:D], 0)
            'On vide la listbox. A l'ouverture, elle est toujours vide, mais bon...
            UserForm1.ListBox1.Clear
            'Définition de la plage des activités
            With .Range("D2", .Cells(2, .Columns.Count).End(xlToLeft))
                'recherche des libellés dans la plage des activités.
                Set C = .Find("*", , , , xlByColumns, xlNext)
                If Not C Is Nothing Then
                    'si on en trouve un on mets l'adresse enréserve
                    ResAdr = C.Address
                    'et on boucle
                    Do
                        'ajout du libellé à la listbox
                        UserForm1.ListBox1.AddItem C.Value
                        'recherche du libellé suivant
                        Set C = .FindNext(C)
                    'quand on retombe sur l'adresse du premier libellé, on sort de le boucle
                    Loop Until C.Address = ResAdr
                End If
            End With
            'on affiche le userform
            UserForm1.Show
            'ici exécution du code contenu dans le userform (ci-dessous).
            'la variable "Activité" contient le choix effectué
            If Activité <> "" Then
                'Recherche de la colonne correspondante
                Col = Application.Match(Activité, .[2:2], 0)
            Else
                Exit Sub
            End If
            'sélectioin de la cellule correspondante à la date et à l'activité
            If IsNumeric(Col) Then Application.Goto .Cells(Lig, Col), Scroll:=True
        End With
    End Sub
    Code du userform :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'la macro se déclenche quand l'utilisateur clique sur une activité
    Private Sub ListBox1_Click()
        'Activité est une variable publique définie dans le module1
        'Recopie du chooix dans Activité
        Activité = Me.ListBox1.Value
        'Fermeture du userform
        Unload Me
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  12. #32
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Merci pour les explications pour l'userforms.


    Ca peut se régler facilement, même par des formules. Si malgré tout tu préfères du VBA, dis-le.

    Pour la feuille suivi "mensuel" si il suffit de modifier les formules dans la macro ok sinon va pour les formules sous Excel.

    Cordialement,

    Ce qu'il me reste à faire:

    1-Pour les feuilles "Instances" je souhaite mettre en place à coté des tableau un calculateur pour faire une moyenne de productivité pour le pôle productivité régularisation PCK et le pôle productivité PDK :
    exemple aujourd'hui nous sommes en semaine 13: ce calculateur doit pouvoir donner la possibilité de calculer la moyenne de la productivité des semaines précedentes en totalisant les traitées et les 1/2 journées affectées et afficher le résultat tout me laissant le choix du nombre de semaines précédantes sur lequel je souhaite effectuer le calcul dans l'exemple présent de jusqu'a 12 semaines et plus au fur et à mesure dans l'avancmeent dans l'année.
    Exemple.xlsx

    2-Je souhaite remplir automatiquement la feuille "suivi mensuel" sur le même principe que la feuille "suivi hebdo" à partir de la feuille "saisie". en vba
    3- -La feuille "activité doit pemettre de totaliser pour chaque employés les différentes activité qu'ils ont chaque semaines à partir de la feuille "Plannning" dans le but d'effectuer une meilleure planification des tâches. par macro ou par Excel.

    Cordialement,

  13. #33
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonjour,

    Merci d'avoir attiré mon attention sur tes dernières réponses, je suis un peu débordé en ce moment.

    2-Je souhaite remplir automatiquement la feuille "suivi mensuel" sur le même principe que la feuille "suivi hebdo" à partir de la feuille "saisie". en vba
    Pour le suivi mensuel, quand doit-il être déclenché ? Automatiquement ou avec un bouton ? pour le mois précédent ?

    3- -La feuille "activité doit pemettre de totaliser pour chaque employés les différentes activité qu'ils ont chaque semaines à partir de la feuille "Plannning" dans le but d'effectuer une meilleure planification des tâches. par macro ou par Excel.
    La feuille Planning est remplie à la main ?

    ce calculateur doit pouvoir donner la possibilité de calculer la moyenne de la productivité des semaines précedentes en totalisant les traitées et les 1/2 journées affectées
    Désolé mais je comprends mieux avec un exemple concret. Peux-tu me donner des valeurs à mettre dans la feuille Suivi hebdo et le résultat à obtenir ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  14. #34
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Bonsoir Daniel,

    Pour la feuille suivi Mensuel se déclenchera avec un bouton pour le mois précédent sauf au mois de janvier.

    Oui la feuille Planning est complétée manuellement.


    Pour le calculateur de la feuille "instance PCK" doit totalisé les "traités" de la colonne H et les "1/2 journées" de la colonne I de la feuille "suivi hebdo"
    Pour le calculateur de la feuille "instances PDK il doit totalisé les traités" de la colonne AV et les 1/2 jouirnées de la colonne AW de la feuille "suivi hebdo"
    Ce fichier est le bon : exemple calculateur.xlsx

    J'ai essayer de documenter au mieux le fichier.

    Cordialement,
    Fichiers attachés Fichiers attachés

  15. #35
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonsoir,

    J'ai mis au point les calculettes. Vérifie :

    http://cjoint.com/?EDcv6WoAb5l

    Voici le code :

    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
    Sub CalculettePCK()
        Dim S1 As Long, S2 As Long, D As Long, Rep As Variant
        Dim L_S1 As Long, L_S2 As Long, Tot As Double
        With Sheets("Suivi hebdo")
            Sheets("Structure Instances PCK").[M13:N13].ClearContents
            D = Int(Date)
            S1 = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
            S1 = ((D - S1 - 3 + (Weekday(S) + 1) Mod 7)) \ 7 + 1
            S1 = S1 - 1
            Rep = InputBox("Entrez un numéro de semaine antérieur à " & S1)
            If Rep <> "" And IsNumeric(Rep) Then
                S2 = S1 - CInt(Rep) + 1
                L_S1 = Application.Match(S1, .[A:A], 0)
                L_S2 = Application.Match(S2, .[A:A], 0)
                Tot = Application.Sum(.Range(.Cells(L_S1, 8), .Cells(L_S2, 8)))
                Sheets("Structure Instances PCK").[M13] = Tot
                Tot = Application.Sum(.Range(.Cells(L_S1, 9), .Cells(L_S2, 9)))
                Sheets("Structure Instances PCK").[N13] = Tot
            Else
                MsgBox "Saisie incorrecte"
                Exit Sub
            End If
        End With
    End Sub
    Sub CalculettePDK()
        Dim S1 As Long, S2 As Long, D As Long, Rep As Variant
        Dim L_S1 As Long, L_S2 As Long, Tot As Double
        With Sheets("Suivi hebdo")
            Sheets("Structure Instances PDK").[M13:N13].ClearContents
            D = Int(Date)
            S1 = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
            S1 = ((D - S1 - 3 + (Weekday(S) + 1) Mod 7)) \ 7 + 1
            S1 = S1 - 1
            Rep = InputBox("Entrez un numéro de semaine antérieur à " & S1)
            If Rep <> "" And IsNumeric(Rep) Then
                S2 = S1 - CInt(Rep) + 1
                L_S1 = Application.Match(S1, .[A:A], 0)
                L_S2 = Application.Match(S2, .[A:A], 0)
                Tot = Application.Sum(.Range(.Cells(L_S1, "AV"), .Cells(L_S2, "AV")))
                Sheets("Structure Instances PDK").[M13] = Tot
                Tot = Application.Sum(.Range(.Cells(L_S1, "AW"), .Cells(L_S2, "AW")))
                Sheets("Structure Instances PDK").[N13] = Tot
            Else
                MsgBox "Saisie incorrecte"
                Exit Sub
            End If
        End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  16. #36
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Bonjour Daniel,

    Merci pour le programme, j'ai testé et il y à juste un truc il demande un nombre de semaine antérieure à la semaine 12 alors qu'il devrait dire antérieur à la semaine 14 (semaine actuelle), sinon c'est parfait.


    Pour le suivi mensuel, quand doit-il être déclenché ? Automatiquement ou avec un bouton ? pour le mois précédent ?
    Oui la feuille suivi Mensuel se déclenchera avec un bouton pour le mois précédent sauf au mois de janvier qui ne pourra completer le mois de décembre.


    La feuille Planning est remplie à la main ?
    Oui la feuille Planning est complétée manuellement.

    Cordialement,

    J'ai remplacé par un calcul du numéro de semaine mais il m'affiche semaine 13 alors que nous somme en semaine 14, je comprends pas.

    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
    Sub CalculettePCK()
        Dim S1 As Long, S2 As Long, D As Long, Rep As Variant
        Dim L_S1 As Long, L_S2 As Long, Tot As Double
        With Sheets("Suivi hebdo")
            Sheets("Instances PCK").[M10:N10].ClearContents
            DateAnnee = DateValue("1 janvier " & (Year(Date)))
            PremiereDate = DateAnnee
            S1 = Abs(Date - PremiereDate) / 7
            'D = Int(Date)
            'S1 = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
            'S1 = ((D - S1 - 3 + (Weekday(S) + 1) Mod 7)) \ 7 + 1
            'S1 = S1 - 1
            Rep = InputBox("Entrez un numéro antérieur à la semaine " & S1)
            If Rep <> "" And IsNumeric(Rep) Then
                S2 = S1 - CInt(Rep) + 1
                L_S1 = Application.Match(S1, .[A:A], 0)
                L_S2 = Application.Match(S2, .[A:A], 0)
                Tot = Application.Sum(.Range(.Cells(L_S1, 8), .Cells(L_S2, 8)))
                Sheets("Instances PCK").[M10] = Tot
                Tot = Application.Sum(.Range(.Cells(L_S1, 9), .Cells(L_S2, 9)))
                Sheets("Instances PCK").[N10] = Tot
            Else
                MsgBox "Saisie incorrecte"
                Exit Sub
            End If
        End With
    End Sub
    Pour le suivi mensuel, quand doit-il être déclenché ? Automatiquement ou avec un bouton ? pour le mois précédent ?
    Oui la feuille suivi Mensuel se déclenchera avec un bouton pour le mois précédent sauf au mois de janvier qui ne pourra completer le mois de décembre.


    La feuille Planning est remplie à la main ?
    Oui la feuille Planning est complétée manuellement.

    Cordialement,

  17. #37
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    J'ai corrigé l'erreur :

    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
    Sub CalculettePCK()
        Dim S1 As Long, S2 As Long, D As Long, Rep As Variant
        Dim L_S1 As Long, L_S2 As Long, Tot As Double
        With Sheets("Suivi hebdo")
            Sheets("Structure Instances PCK").[M13:N13].ClearContents
            D = Int(Date)
            S1 = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
            S1 = ((D - S1 - 3 + (Weekday(S1) + 1) Mod 7)) \ 7 + 1
            S1 = S1 - 1
            Rep = InputBox("Entrez un numéro de semaine antérieur à " & S1 + 1)
            If Rep <> "" And IsNumeric(Rep) Then
                S2 = S1 - CInt(Rep) + 1
                L_S1 = Application.Match(S1, .[A:A], 0)
                L_S2 = Application.Match(S2, .[A:A], 0)
                Tot = Application.Sum(.Range(.Cells(L_S1, 8), .Cells(L_S2, 8)))
                Sheets("Structure Instances PCK").[M13] = Tot
                Tot = Application.Sum(.Range(.Cells(L_S1, 9), .Cells(L_S2, 9)))
                Sheets("Structure Instances PCK").[N13] = Tot
            Else
                MsgBox "Saisie incorrecte"
                Exit Sub
            End If
        End With
    End Sub
    Sub CalculettePDK()
        Dim S1 As Long, S2 As Long, D As Long, Rep As Variant
        Dim L_S1 As Long, L_S2 As Long, Tot As Double
        With Sheets("Suivi hebdo")
            Sheets("Structure Instances PDK").[M13:N13].ClearContents
            D = Int(Date)
            S1 = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
            S1 = ((D - S1 - 3 + (Weekday(S1) + 1) Mod 7)) \ 7 + 1
            S1 = S1 - 1
            Rep = InputBox("Entrez un numéro de semaine antérieur à " & S1 + 1)
            If Rep <> "" And IsNumeric(Rep) Then
                S2 = S1 - CInt(Rep) + 1
                L_S1 = Application.Match(S1, .[A:A], 0)
                L_S2 = Application.Match(S2, .[A:A], 0)
                Tot = Application.Sum(.Range(.Cells(L_S1, "AV"), .Cells(L_S2, "AV")))
                Sheets("Structure Instances PDK").[M13] = Tot
                Tot = Application.Sum(.Range(.Cells(L_S1, "AW"), .Cells(L_S2, "AW")))
                Sheets("Structure Instances PDK").[N13] = Tot
            Else
                MsgBox "Saisie incorrecte"
                Exit Sub
            End If
        End With
    End Sub
    J'ai attaché cette macro sur le bouton "Remplissage mensuel" sur la feuille "Suivi mensuel". Je n'ai traité que les réguls PCK. Je te laisse continuer. Si tu as un problème, dis-le moi.

    http://cjoint.com/?EDdm7Rd8ZG2

    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
    Sub RemplissageMensuel()
        Dim Mois As Integer, LigMois1 As Integer, LigMois2 As Integer, C As Range
        Dim Plage As Range, Ligne As Integer
        Mois = Month(Date) - 1
        If Mois < 2 Then Exit Sub
        With Sheets("Saisie")
            For Each C In .Range("D5", .Cells(.Rows.Count, 4).End(xlUp))
    '            If C.Row = 64 Then Stop
                If Month(C.Value) = Mois And Day(C.Value) = 1 Then LigMois1 = C.Row
                If Month(C.Value) <> Mois And LigMois1 <> 0 Then
                    LigMois2 = C.Row - 1
                    Exit For
                End If
            Next C
            'remplissage
            Set Plage = .Range(.Cells(LigMois1, 4), .Cells(LigMois2, 4))
        End With
        With Sheets("Suivi Mensuel")
            Ligne = Mois + 3
            'Résiliations PCK
            .Cells(Ligne, 2).Value = Application.Sum(Plage.Offset(, 5))
            .Cells(Ligne, 3).Value = Application.Sum(Plage.Offset(, 6))
            .Cells(Ligne, 4).Value = Sheets("Saisie").Cells(LigMois2, 11)
        End With
    End Sub
    Qu'est-ce qu'il reste à faire ? Je croyais qu'il y avait un problème de liaisons avec d'autres classeurs mais je n'en retrouve pas.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  18. #38
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Merci Daniel,

    Je vais continuer le remplissage de la macro pour le suivi mensuel.

    J'ai résolu mes problèmes de liaisons en renommant les plages donc plus de souci de mise à jour

    il me reste juste à compléter la feuille activité des employés par rapport au planing qui est complété à la main. Si on peut le faire avec Excel et non une macro ça serai bien.

    Cordialement,

  19. #39
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    il me reste juste à compléter la feuille activité des employés par rapport au planing qui est complété à la main. Si on peut le faire avec Excel et non une macro ça serai bien.
    Oui, mais finalement, non à cause des cellules fusionnées en lignes 7,8 et 9. J'ai besoin de savoir aussi si on fait un compte de demi journées : si, pour employé 1 le 02/01 j'ai "Accueil" le matin et l'après-midi, je compte "2" ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  20. #40
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 56
    Points : 6
    Points
    6
    Par défaut
    Oui on prend en compte les demi journées, pour l'exemple de l'employé 1 on compte 2, sinon si il fait "Accueil" le matin et une autre activité l'après-midi cela fait + 1 pour l'accueil et +1 pour l'autre activité.

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/03/2015, 12h04
  2. [XL-2010] Macro pour filtrer un TCD à partir d'une cellule
    Par Chrislezoud dans le forum Excel
    Réponses: 5
    Dernier message: 22/03/2013, 10h38
  3. [XL-2010] Macro pour renommer des fichiers à partir d'une liste de nom de fichiers
    Par thomahh dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/01/2013, 17h03
  4. macro pour créer plusieurs tcd à partir d'access
    Par 78580400 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/05/2011, 10h13
  5. Macro pour envoyer un mail à partir d'un formulaire
    Par aurore1008 dans le forum IHM
    Réponses: 2
    Dernier message: 17/06/2008, 16h16

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