Macro liste de données --> planning

Bonjour

Je dispose d'un fichier de 150 lignes dans lequel il y a une liste de travail à faire et en face de chaque travail j'y incorpore un agent destiné à faire ce travail.

Dans le fichier joint j'ai simulé l'équivalent de ce que je cherche à savoir :

Dans l'onglet production il y a toute la liste des travaux à réaliser avec le numéro de agents effectuant ce travail. quelque uns des travaux n'ont pas de nom mais c'est normal.

La macro que je recherche est que d'après la liste des agents située dans l'onglet données, la macro range dans l'onglet planning tous les travaux au statut en cours de l'agent 1, puis tous les travaux au statut en cours de l'agent 2,..... (exemple dans l'onglet planning) Il se peut qu'un agent n'est pas de travaux comme l'agent 10 par exemple.

merci par avance des réflexions que vous pourriez mener sur ce projet.

Bonjour grorkal

D'après la lecture de ton fichier je suppose que la tâche "terminée" ne doit pas apparaître dans ton planning ?

Quelque part tu veux parcourir ton "onglet production" pour l'ensemble des agents présents dans "l'onglet données" afin de savoir qui "fait quoi en ce moment" et qui "devra faire quoi" ?

Est-ce bien cela ?

Merci déjà, de l'attention que vous avez porté à mon problème.

C'est exactement cela, nous nous sommes bien compris.

Bonne soirée

Bonsoir,

A voir si cela convient :

Sub ListerPlanning()
    Dim Pln(), t%, a%, n%, i%, p%, agt$
    n = [Travaux].Rows.Count
    For a = 1 To [ListAgents].Rows.Count
        agt = [ListAgents].Cells(a, 1)
        ReDim Pln(1, n): t = -1
        With [Travaux]
            For i = 1 To n
                If .Cells(i, 4) = agt And .Cells(i, 2) = "En cours" Then
                    t = t + 1
                    Pln(0, t) = .Cells(i, 1)
                    Pln(1, t) = .Cells(i, 3)
                End If
            Next i
        End With
        With Worksheets("Planning")
            p = p + 2: .Cells(p, 1) = agt
            If t = -1 Then GoTo notvx
            ReDim Preserve Pln(1, t)
            p = p + 1
            .Cells(p, 1).Resize(t + 1, 2).Value = WorksheetFunction.Transpose(Pln)
            p = p + t
        End With
notvx:
    Next a
    agt = "Travaux à faire"
    ReDim Pln(1, n): t = -1
    With [Travaux]
        For i = 1 To n
            If .Cells(i, 4) = "" And .Cells(i, 2) = "A faire" Then
                t = t + 1
                Pln(0, t) = .Cells(i, 1)
                Pln(1, t) = .Cells(i, 3)
            End If
        Next i
    End With
    With Worksheets("Planning")
        If t = -1 Then
            .Activate: Exit Sub
        End If
        ReDim Preserve Pln(1, t): p = p + 2
        .Cells(p, 1) = agt: p = p + 1
        .Cells(p, 1).Resize(t + 1, 2).Value = WorksheetFunction.Transpose(Pln)
        .Activate
    End With
End Sub

Mes excuses Andrea...

Bonjour,

Merci MFerrand, c'est ce que j'attendais néanmoins je n'arrive pas l'adapter à mon fichier général que j'ai joint au message.

Les agents se situe dans l'onglet Production dans la colonne AA

Par contre je ne souhaiterais pas que les "travaux à faire" s'affichent dans le planning car dans le fichier général j'ai plus de 150 lignes restantes à faire

Merci par avance

Bonsoir,

Petite rectif pour Travaux (formule nom de plage).

Colonnes différentes : la 4 passe en 27, la 3 passe en 7.

Surtout, VBA fait les comparaisons en mode binaire par défaut (contrairement à Excel qui les fait en mode texte), d'où : En Cours ets différent de En cours (et on n'avait donc aucun résultat).

On contourne cet écueil en basculant en majuscules pour la comparaison (avec UCase).

Cordialement.

C'est parfait, une dernière petite doléance, je viens de m'apercevoir que les A LANCER, il serait aussi interressant de les intégrer dans l planning

J'ai donc fait ceci, mais cela affiche les demandes concernées par A LANCER apparaissent sur tous les agents au lieu de l'agent concerné.

f .Cells(i, 27) = agt And UCase(.Cells(i, 2)) = "EN COURS" Or UCase(.Cells(i, 2)) = "A LANCER" Then

I

Auriez vous une solution.

Merci beaucoup pour tout ce que vous avez déjà fait.

J'avais pas vu ce coup là !

Rien à changer à la macro ! sauf remplacer A FAIRE (c'était à faire dans le modèle) par A LANCER.

C'est vers la fin, hors boucle...

Bonjour,

Je viens de changer A FAIRE par A LANCER mais rien ne se passe.

Si vous voyez d'où cela pourrait provenir

Merci par avance.

Il ne doit pas y avoir de nom en colonne AA si "A lancer" !...

Cordialement.

tout est résolu merci MFerrand.

Bonne journée

Rechercher des sujets similaires à "macro liste donnees planning"