Lister agents en écart

Bonjour,

Petite contrainte rencontrée actuellement. Je souhaite éditer une liste d'agents en écart sur leur objectif.

Sous la case "ECART", je souhaite lister tous les agents qui sont en dessous de 75% d'atteinte d'objectif sur le mois en cours en passant uniquement par VBA et sans avoir de calcul intermédiaire sur la feuille de calcul.

Cela est-il possible?

Cordialement

49test.xlsm (12.85 Ko)

Bonjour

une macro vite faite !

Sub C75()
i = 4
pag = 3
ag = ""
While Range("C" & i) <> ""
If ag = "" Then
  ag = Range("C" & i)
  obj = Range("D" & i)
  rea = Range("e" & i)
ElseIf ag <> Range("C" & i) Then
 If rea / obj < 0.75 Then pag = pag + 1: Range("G" & pag) = ag
 ag = Range("C" & i)
 obj = Range("D" & i)
 rea = Range("e" & i)
Else
 obj = obj + Range("D" & i)
 rea = rea + Range("e" & i)
End If
 i = i + 1
Wend
If rea / obj < 0.75 Then pag = pag + 1: Range("G" & pag) = ag
End Sub

Bonjour h2so4

C'est parfait merci beaucoup!

Cordialement

Re bonjour,

Je suis peut être allé trop vite. Cette macro ne prend pas en compte les résultats du mois en cours mais toutes les données toutes périodes confondues. Peut être une piste?

Cordialement

bonjour,

macro adaptée. j'ai fait l'hypothèse que les données sont triées par agent puis par date.

Sub C75()
    i = 4
    pag = 3
    ag = ""
    While Range("C" & i) <> ""
        If Month(Range("B" & i)) = Month(Now()) Then
            If ag = "" Then
                ag = Range("C" & i)
                obj = Range("D" & i)
                rea = Range("e" & i)
            ElseIf ag <> Range("C" & i) Then
                If rea / obj < 0.75 Then pag = pag + 1: Range("h" & pag) = ag: Range("i" & pag) = rea / obj
                ag = Range("C" & i)
                obj = Range("D" & i)
                rea = Range("e" & i)
            Else
                obj = obj + Range("D" & i)
                rea = rea + Range("e" & i)
            End If
        End If
        i = i + 1
    Wend
    If rea / obj < 0.75 Then pag = pag + 1: Range("H" & pag) = ag: Range("i" & pag) = rea / obj
End Sub

D'accord,

Je vous ce gue vous voulez dire cependant les données ne sont pas triées par agents. Elles sont triées par date mais pas par agent a savoir:

01/01/12 AGENT1

01/01/12 AGENT2

02/01/12 AGENT1

02/01/12 AGENT2

C'est vrai que le code change du coup... Désolé!

Relien33 a écrit :

D'accord,

Je vous ce gue vous voulez dire cependant les données ne sont pas triées par agents. Elles sont triées par date mais pas par agent a savoir:

01/01/12 AGENT1

01/01/12 AGENT2

02/01/12 AGENT1

02/01/12 AGENT2

C'est vrai que le code change du coup... Désolé!

et cela pose-t-il un problème de les trier par agent puis par date ?

h2so4

Oui plutôt dans la mesure ou ça me ferait changer d'autres codes vba... Je suis peut être un peu trop pointilleux?

Bonjour,

voici un code adapté, j'ai fait l'hypothèse qu'il y avait au plus 1000 agents.

Sub C75()
    Dim agent(1000), obj(1000), rea(1000)

    nag = 0
    i = 4
    pag = 3
    While Range("C" & i) <> ""
        If Month(Range("B" & i)) = Month(Now()) Then
            trouvé = False
            For j = 1 To nag
                If Range("C" & i) = agent(j) Then x = j: trouvé = True: Exit For
            Next j
            If Not trouvé Then
                nag = nag + 1
                x = nag
                agent(x) = Range("C" & i)
            End If
            obj(x) = obj(x) + Range("D" & i)
            rea(x) = rea(x) + Range("e" & i)
        End If
        i = i + 1
    Wend
    For j = 1 To nag
        If rea(j) / obj(j) < 0.75 Then pag = pag + 1: Range("H" & pag) = agent(j): Range("I" & pag) = rea(j) / obj(j)
    Next j
End Sub

h2so4

Merci beaucoup pour votre aide et votre patience. C'est parfait.

A bientôt

Rechercher des sujets similaires à "lister agents ecart"