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)

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
J'ai essayé de multiples manières sans arriver à mes fins ..

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