Bonjour à tous,
Mon fichier contient plusieurs onglets :
- Le Premier DPN est l'onglet où je souhaite faire apparaître les résultats (y est déjà présent le code de l'agent/ son métier)
- Le deuxieme SG contient différents agents (code/nom/métier/Ainsi que toutes les stats qu'ils ont réalisé)
- Le troisième NP contient les normes que les agents doivent réaliser
J'effectue mon traitement si le nom de l'indicateur situé sur l'onglet DPN de D7 à CZ7 est retrouvé dans la plage B2 à AJ de l'onglet NP.
Si il est retrouvé, j'effectue le traitement dans l'onglet DPN a savoir faire une différence de ce que chaque agent a réalisé (onglet SG) vs la norme (onglet NP) pour de nombreux indicateurs. Cette différence est effectué via les différentes recherches (R et R2)
J'ai essayé de multiples manières sans arriver à mes fins ..
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 If DPN.Range("A8") = "" Then Exit Sub 'si la cellule A8 de l'onglet DPN est vide, sort de la procédure 'Set NomIndicateur = NP.Range("B1").End(xlToRight) 'définit la plage du nom des indicateurs 'M = 4 'Indicateur = DPN.Cells(7, M) Dim Q As Integer Dim P As Integer For Q = 7 To Sheets("Détails Personnes Normes").Range("D7").End(xlToRight) 'Boucle sur le nom des indicateurs (onglet DPN) For P = 1 To NP.Range("B1" & P).End(xlToRight) 'Boucle sur le nom des indicateurs (onglet NP) If InStr(DPN.Range("D" & Q), NP.Range("A" & P)) <> 0 Then 'Si même nom pour les indicateurs effectue le traitement Set PL = DPN.Range("A8:A" & DPN.Range("A600").End(xlUp).Row) 'définit la plage de recherche du code agent Set PL2 = DPN.Range("C2:C" & DPN.Range("C600").End(xlUp).Row) 'définit la plage de recherche du métier For Each CELL In PL For Each CELL2 In PL2 Set R = SG.Columns(1).Find(CELL.Value, , xlValues, xlWhole) 'recherche dans SG colonne 1 le code agent Set R2 = NP.Columns(1).Find(CELL2.Value, , xlValues, xlWhole) 'recherche onglet NP la norme métier For I = 7 To 9 'Boucle sur tous les indicateurs de l'onglet SG If Not R Is Nothing Then Realise = R.Offset(0, I).Value 'recherche la valeur réalisée du premier indicateur (commence colonne 7) For J = 2 To 4 'Boucle sur tous les indicateurs de l'onglet NP If Not R2 Is Nothing Then Norme = R2.Offset(0, J).Value 'recherche la norme à atteindre pour le premier indicateur For K = 3 To 5 'Boucle pour reporter les résultats CELL.Offset(0, K).Value = Realise - Norme 'précise dans la cellule la différence entre la norme et le resultat Set R2 = Nothing 'vide la variable R Set R = Nothing 'vide la variable R Next K Next J Next I Next CELL2 'prochaine cellule Next CELL 'prochaine cellule End If Next P Next Q
Je précise que j'ai une erreur incompatibilité de type à la ligne 12 !
Merci par avance à celui qui pourra m'aidé ! Je m'y perd avec toutes ces boucles ...
Cordialement
Partager