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. #1
    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 Macro pour alimenter un tableau à partir d'un planning et d'un tableau contenant un calendrier perpetuel
    Bonjour à tous,

    Je dois réaliser plusieurs macros.
    Voici la première que je souhaite faire.
    Je dois effectuer une macro pour alimenter une feuille Excel "Suivi hebdo" à partir de deux autres feuilles "Saisie" vision journalière de l'activité et de la feuille "Planning". J'arrive à me débrouiller pour alimenté un tableau à partir d'un autre mais ici la difficulté réside dans le fait que la Feuille "Saisie et Planing" contiennent un calendrier qui se met à jour en changeant l'année.
    Ce ne sais pas comment faire pour réaliser une macro capable de récupérer les données en fonction du numéro de semaine.
    Pas facile à expliquer...
    Présentation.xlsm

    Merci d'avance pour votre aide.

    Cordialement,
    Fichiers attachés Fichiers attachés

  2. #2
    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,

    Déjà, tu joins deux classeurs; est-ce qu'ils sont identiques ? Ce serait bien aussi que tu donnes un exemple parce que je ne vois pas comment utiliser la feuille "Planning".
    Cordialement.

    Daniel

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

  3. #3
    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
    Pour chaque semaine (du lundi au vendredi) je souhaite que la macro fasse addition dans la partie Flux de chaque activitées : des entrées, des traités et qu'elle recopie le solde de fin de semaine (vendredi) de la feuille "Saisie" pour compléter la feuille "Suivi hebdo" au fil des semaines.

    Pour la partie planning se souhaite extraire pour chaque semaine les totaux des cellules calculées (en bleu) Régul, Prod et Back ligne 15 à 17 et valoriser les cellules en colonne I pour le Pôle Régul, en Colonne R pour le pôle Prod et en colonne AW pour le pôle Back.

    En résumé cette macro permet d'obtenir donc une vision hebdomadaire et de connaitre la productivité de l'équipe sur ces 3 pôles en obtenant la moyenne de dossier traités par demie-journée.

    J'espère avoir été plus claire dans mes explications...

    Pour le classeur il faut prendre le format XLSM, je pensais avoir suprimé l'autre au format XLSX.

    Cordialement,

  4. #4
    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 traité "Résiliation PCK", est-ce que tu comprends la macro ci-dessous et est-ce que tu peux la continuer, au moins pour ce qui concerne le transfert de la feuille Saisie vers la feuille Saisie hebdo ? Juste un truc dont je ne suis pas sûr, j'ai pris le maximum du solde comme étant le solde du dernier jour de la semaine; est-ce toujours vrai ? S'il y a quelque chose que tu ne comprends pas, n'hésite pas à le dire.

    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
    Sub test()
        Dim Plage As Range, L1 As Integer, L2 As Integer, Ligne As Long
        With Sheets("Saisie")
            'N° de ligne de la feuille Saisie hebdo
            Ligne = 3
            'calcul des pplages hebdo sur la feuille Saisie
            For i = 1 To 53
                Ligne = Ligne + 1
                'L1 est la première ligne de la semaine et L2 la dernière
                If i = 1 Then
                    L1 = 5
                    L2 = 7 - Weekday(.Cells(L1, 3), 2) + L1
                ElseIf i = 53 Then
                    L1 = L2 + 1
                    L2 = Application.Match("Global", .[B:B], 0) - 1
                Else
                    L1 = L2 + 1
                    L2 = L1 + 6
                End If
                'définition de la plage hebdo
                Set Plage = .Range("B" & L1 & ":B" & L2)
            With Sheets("Suivi hebdo")
                'recopies
                .Cells(Ligne, 2) = Application.Sum(Plage.Offset(, 7))
                .Cells(Ligne, 3) = Application.Sum(Plage.Offset(, 8))
                .Cells(Ligne, 4) = Application.Max(Plage.Offset(, 9))
            End With
            Next i
        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. #5
    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,

    j'arrive à comprendre la macro, il y a juste "with" et "application.match" que je ne connais pas.
    Pour le solde il faut vraiment prendre celui de vendredi qui ne correspond pas forcement au maximum du solde.

    -Est-il possible d'inclure dans la boucle toutes les activités avec un For Each ce qui permettra de valoriser chaque semaine d'un coup?

    -Est-il également possible que la macro soit "intélligente" , c'est à dire qu'elle ne recommence pas depuis le départ mais qu'elle puisse valoriser le tableau "suivi hebdo au fur et à mesure de l'avancement dans le temps.
    exemple :Le lundi de la semaine 3 je fais tourner la macro et elle ne valorise que S-1 est ainsi de suite chaque semaine?

    Cordialement,

  6. #6
    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,

    "With" est une instruction qui permet de ne pas reprendre ce qui est précisé après. Tout ce qui commence par un point reprend ce qui est précisé dans "with". Par exemple, au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Saisie").Cells(Ligne, 2) = Application.Sum(Plage.Offset(, 7))
    Sheets("Saisie").Cells(Ligne, 3) = Application.Sum(Plage.Offset(, 8))
    Ce qui est plus long et ralentit l'exécution du code, il est plus rapide d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Sheets("Suivi hebdo")
        .Cells(Ligne, 2) = Application.Sum(Plage.Offset(, 7))
        .Cells(Ligne, 3) = Application.Sum(Plage.Offset(, 8))
    End With
    Le "." devant "Cells" signifie que la cellule appartient à la feuille "Suivi hebdo"

    "Application.Match" est l'équivalent de la fonction Excel EQUIV.

    -Est-il possible d'inclure dans la boucle toutes les activités avec un For Each ce qui permettra de valoriser chaque semaine d'un coup?
    Pas sûr de bien comprendre de que tu veux. Si tu penses à quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Sheets("Suivi hebdo")
        For Each C In .Range("B" & Ligne & ":BA" & Ligne)
            If C.Column = 2 Then C.Value = Application.Sum(Plage.Offset(, 7))
        Next C
    End With
    tu es quand même obligé de mettre une ligne par colonne et, de plus, tu dois tester la valeur de la colonne pour savoir ce qu'on doit mettre.

    -Est-il également possible que la macro soit "intélligente" , c'est à dire qu'elle ne recommence pas depuis le départ mais qu'elle puisse valoriser le tableau "suivi hebdo au fur et à mesure de l'avancement dans le temps.
    exemple :Le lundi de la semaine 3 je fais tourner la macro et elle ne valorise que S-1 est ainsi de suite chaque semaine?
    Aucun problème, sauf éventuellement en semaine 1. Est-ce que tu peux avoir une semaine 53 en tête de liste ?

    J'attends ta réponse sur les deux derniers points pour continuer.
    Cordialement.

    Daniel

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

  7. #7
    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 tes explications sur ces instructions, pas abordées en cours en même temps impossible de tout voir en une cinquantaine d'heures de cours VBA...

    Oui selon les années il peut y avoir une semaine 52 ou 53 en début d'année pour la feuille "saisie" et la feuille "planning".

    Pour le For Each:
    Par rapport au code que tu m'a envoyer hier pour valoriser la résiliation PCK en instructrion If.
    Vaut-il mieux faire des instructions If à la suite pour chaque activités ou les mettre dans un traitment itératif en boucle For Each.
    Dans le but d'optimiser la macro et peut-être gagner en ligne de code?


    Cordialement,

  8. #8
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vaut-il mieux faire des instructions If à la suite pour chaque activités ou les mettre dans un traitment itératif en boucle For Each.
    Je ne vois pas d'instruction "If" dans mon code. Est-ce que tu peux me détailler quelle "Range(x), sur quelle feuille ? Je m'absente jusqu'en fin d'après-midi. Si tu peux me répondre, je regarderais à mon retour.
    Cordialement.

    Daniel

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

  9. #9
    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,

    Je ne vois ton message que ce matin car réunion hier après-midi.

    Bon en fait je crois que je t'embrouille plus qu'autre chose dans mes explication hazardeuse...
    je pense qu'il vaut mieux rester sur ta premiére solution en incluant les totaux des cellules calculées (en bleu) Régul, Prod et Back ligne 15 à 17 et valoriser les cellules en colonne I pour le Pôle Régul, en Colonne R pour le pôle Prod et en colonne AW pour le pôle Back.

    Suite à ma réunion sur l'avancement de ce projet en fait je n'ai pas besoin de d'inclure dans la macro les cellules contenant le solde. je vais faire un lien simple excel.

    Cordialement,

  10. #10
    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 ne vois ton message que ce matin car réunion hier après-midi.
    Pas de problème, on répond quand on peut.

    Regarde si ça te convient.

    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
    Sub Semaine()
        Dim Plage As Range, L1 As Integer, L2 As Integer, Ligne As Long, S As Variant, D As Date
        Dim Col As Integer, S1 As Double, S2 As Double, S3 As Double
        With Sheets("Saisie")
            'calcul du n° de semaine précédente
            D = Int(Date)
            S = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
            S = ((D - S - 3 + (Weekday(S) + 1) Mod 7)) \ 7 + 1
            If S = 53 And Month(Date) = 1 Then Exit Sub
            S = S - 1
            If S = 0 Then Exit Sub
            'N° de ligne de la feuille Saisie hebdo
            Ligne = Application.Match(S, ['Suivi hebdo'!A:A], 0)
            'calcul de le plage hebdo sur la feuille Saisie
            L1 = Application.Match(S, .[B:B], 0)
            L1 = L1 - Weekday(.Cells(L1, 3), 2) + 1
            If S = 1 Then L1 = 5
            L2 = Application.Match(S, .[B:B], 0)
            L2 = L2 + 7 - Weekday(.Cells(L2, 3), 2)
            If L2 > 370 Then L2 = 370
            i = S
            'définition de la plage hebdo
            Set Plage = .Range("B" & L1 & ":B" & L2)
            With Sheets("Suivi hebdo")
                'recopie des lignes15:17
                With Sheets("Planning")
                    Col = Application.Match(S, .[7:7], 0)
                    Col = Col + (7 - Weekday(.Cells(8, Col))) * 2 + 1
                    If Col > 738 Then Col = 738
                    S1 = .Cells(15, Col)
                    S2 = .Cells(16, Col)
                    S3 = .Cells(17, Col)
                End With
                .Cells(Ligne, 9) = S1
                .Cells(Ligne, "R") = S2
                .Cells(Ligne, "AW") = S3
                'recopies
                .Cells(Ligne, 2) = Application.Sum(Plage.Offset(, 7))
                .Cells(Ligne, 3) = Application.Sum(Plage.Offset(, 8))
                'etc.
            End With
        End With
    End Sub
    Cordialement.

    Daniel

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

  11. #11
    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
    J'ai voulu affecter ta macro à mon bouton de contrôle mais j'ai un souci du coup je n'ai pas pu tester...
    Le bouton est sur le dernier onglet "Mise à jour des données".Présentation.xlsm

    cordialement,

  12. #12
    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
    Comme ton classeur est assez gros, je te donne l'adresse du lien où tu pourras le récupérer :

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

    Daniel

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

  13. #13
    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,

    Peut-tu me dire pas à pas comment faire pour le bouton de macro par rapport à mon fichier de base.
    Car sur le fichier que tu m'as renvoyé tu as fait différement et je bloque.
    Cordialement,

  14. #14
    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,

    Clique sur l'onglet Développeur, sur le bouton "Insérer" et, dans la partie contrôles de formulaire, clique sur le premier contrôle (un rectangle). Positionne le curseur à l'endroit où tu veux mettre le bouton, appuie sur le bouton gauche de la souris et dessine le bouton. Quand tu relâches le bouton, une fenêtre s'ouvre en te proposant de choisir la macro à affecter au bouton. Choisis "Semaine". Surligne le texte du bouton, supprime-le et entre celui que tu veux mettre. Pour que le bouton devienne actif, clique sur une cellule quelconque pour sortir du mode création avant de pouvoir cliquer sur le bouton.
    Cordialement.

    Daniel

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

  15. #15
    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,
    J'ai enfin compris Donc je suis en train de completer le programme VBA.

    Est-il possible de faire exemple .Cells(Ligne, 8) = Application.sum(Plage.Offset(, 8 +16)) pour mon premier Pôle productivité dans la feuille "suivi hebdo" afin d'additionner Le courrier traités des activité (Résiliation PCK et Régul autre PCK) ou simplement additionner les résultats des cellules 3 et 6 de la feuille suivi Hebdo puisque le programme l'a déja récuperer avant.

    Cordialement,

    Bon la macro est complété sauf pour les partie "productivité du pôle" de la feuille "suivi hebdo" relatif à ma question précedente.
    Je me suis apperçu que la macro compte également les samedi et les dimanche, il faudrait qu'elle compte uniquement du lundi au vendredi.

    J'ai refait pour chaque collegue du service un classuer à leur nom identique à la feuille "saisie" soit 22 fichiers au total avec juste la partie "traité" de chaque activité. J'ai fait ensuite à partir de la feuille "saisie" dans chaque colonne "traité" des liaisons externes vers ses classeurs afin que les colonne traité s'alimente automatiquement.
    Le problème à chaque ouverture de mon classeur "Présentation" ou se trouve la feuille "saisie" il me demande de mettre à jour ses liaisons externes je clique sur mettre à jour ensuite deuxiéme message plusieurs liaisons ne peuvent pas être mises à jour avec soit cliquer sur continuer ou modifier alors que les liaisons sont bonnes. Du coup certaines cellules affiche #ref et si je veux corriger je doit revalider les liaisons pour chaque classuer collégue et chaque ouverture du classeur "Présentation".

    Dossier principale "Modèle MV" avec à l'intérieur mon classeur "Présentation" et sous dossier "Suivi des traités" ou se trouve les classeurs de mes collègues.

    Peut-on régler se problème par Excel ou faut-il une macro?

    Cordialement,

  16. #16
    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,

    Tu ne parles que du problème des liaisons externes ? (je commence à saturer, à cette heure). Essaie de les refaire manuellement.Vérifie que, dans les cellules affichant "Ref!", le chemin au classeur externe est correct. Particulièrement, les noms de dossiers et de feuilles contenant des espaces doivent être mis entre apostrophes.

    Cordialement.

    Daniel
    Cordialement.

    Daniel

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

  17. #17
    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 me suis apperçu que la macro compte les samedi et les dimanche, il faudrait qu'elle compte uniquement du lundi au vendredi.

    Cordialement,

  18. #18
    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,

    Teste :

    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
    Sub Semaine()
        Dim Plage As Range, L1 As Integer, L2 As Integer, Ligne As Long, S As Variant, D As Date
        Dim Col As Integer, S1 As Double, S2 As Double, S3 As Double
        With Sheets("Saisie")
            'calcul du n° de semaine précédente
            D = Int(Date)
            S = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
            S = ((D - S - 3 + (Weekday(S) + 1) Mod 7)) \ 7 + 1
            If S = 53 And Month(Date) = 1 Then Exit Sub
            S = S - 1
            If S = 0 Then Exit Sub
            'N° de ligne de la feuille Saisie hebdo
            Ligne = Application.Match(S, ['Suivi hebdo'!A:A], 0)
        'calcul de le plage hebdo sur la feuille Saisie
            L1 = Application.Match(S, .[B:B], 0)
            L1 = L1 - Weekday(.Cells(L1, 3), 2) + 1
            If S = 1 Then L1 = 5
            L2 = Application.Match(S, .[B:B], 0)
            L2 = L2 + 5 - Weekday(.Cells(L2, 3), 2)
            If L2 > 370 Then L2 = 370
            i = S
            'définition de la plage hebdo
            Set Plage = .Range("B" & L1 & ":B" & L2)
            With Sheets("Suivi hebdo")
                'recopie des lignes15:17
                With Sheets("Planning")
                    Col = Application.Match(S, .[7:7], 0)
                    Col = Col + (7 - Weekday(.Cells(8, Col))) * 2 + 1
                    If Col > 738 Then Col = 738
                    S1 = .Cells(15, Col)
                    S2 = .Cells(16, Col)
                    S3 = .Cells(17, Col)
                End With
                .Cells(Ligne, 9) = S1
                .Cells(Ligne, "R") = S2
                .Cells(Ligne, "AW") = S3
                'recopies
                .Cells(Ligne, 2) = Application.Sum(Plage.Offset(, 7))
                .Cells(Ligne, 3) = Application.Sum(Plage.Offset(, 8))
                'etc.
            End With
        End With
    End Sub
    En fait, je n'ai modifié qu'une ligne : j'ai remplacé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L2 = L2 + 7 - Weekday(.Cells(L2, 3), 2)
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L2 = L2 + 5 - Weekday(.Cells(L2, 3), 2)
    Cordialement.

    Daniel

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

  19. #19
    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 cette macro Daniel tout fonctionne.

    Je souhaite faire une nouvelle macro Pour la feuille "Instances PCK", elle affichira uniquement les résultats du numéro de semaine choisit pour les différentes activités à partir de la feuille "suivi hebdo".

    La macro demanderai par une msgbox le numéro de semaine souhaité pour afficher les résultats dans le tableau de la feuille "Instances PCK".
    La collonne "Tend" (tendance) Doit afficher une flèche en haut si la colonne solde affiche un résultat supérieur à au solde de la semaine précédente, flèche droite si solde identique et flèche basse si le solde à diminué.
    Seul défaut en semaine 1 la macro ne pourra pas comparé à la semaine antérieure correspondant à la fin d'année précédente et donc à un autre dossier que l'on complétera manuellement.

    Cette Feuille sert pour La réunion hebdomadaire de léquipe. Je reprendrai ce modèle pour la feuille "Instances PDK".

    Présentation.xlsm

    Cordialement,

  20. #20
    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
    Voici un premier jet. Il y a apparemment plus de rubriques sur la feuille "Suivi hebdo" que sur la feuille "Structure Instances PCK". Rectifie le tir. Les cellules contenant les fleches sont les cellules K9:K11. Déplace jors du champ de vision.

    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
    Sub RemplissagePCK()
        Dim Plage As Range, C As Range, S2 As Variant, S1 As Variant
        Dim Ligne As Integer, Lig As Integer
        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
        With Sheets("Structure Instances PCK")
            For Each C In Plage
                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)
                    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 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