Bonjour à tous,
j'ai un listing de données dans une variable appelée zone définie ainsi:
Dans cette variable, je filtre la colonne 4 pour trouver les valeurs des composantes de AA, BB, CC, DD, EE, FF, GG
Code : Sélectionner tout - Visualiser dans une fenêtre à part zone = Workbooks("Copie").Sheets("Feuil1").Range("A1").CurrentRegion
j'ai besoin pour AA de connaitre la valeur min, la valeur max, la moyenne, la quantité inférieure à 1000, la quantité entre 1000 et 2000 la quantité entre 2000 et 3000 et enfin la quantité supérieure à 3000. Même chose pour BB, CC, DD, EE, FF, GG .
Pour cela j’utilise une variable tableau AA(c) et j'alimente mes résultats dans une autre variable tableau (tablo). Les données issue de l'analyse de AA sont stockée dans la ligne 1 et dans les colonnes suivantes de la variable tablo. Puis je traite BB de la m^me façon une variable tableau BB(d) résultats stockés dans tablo, puis CC(e) ect ect. Cela génére beaucoup de variables.
Pour info, les données issues de BB sont stockées dans la ligne 2 et colonne suivantes de la variable tablo et ainsi de suite.
J'effectue une seconde fois ce travail mais pour la colonne 5.
Mon bout de code pour déterminer AA (dans la colonne 4) est le suivant et il fonctionne, il est donc pratiquement identique pour BB (aux variables pres):
Première question dans cette ligne:
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 zone = Workbooks("Copie").Sheets("Feuil1").Range("A1").CurrentRegion 'récupère la ligne de données For i = LBound(zone, 1) To UBound(zone, 1) 'regarde la ligne i et la colonne 4 si la valeur correspond à AA If zone(i, 4) = "AA" Then c = c + 1 ReDim Preserve AA(c) AA(c) = Application.Index(zone, i) tablo(1, 1) = c 'écrit la quantité de AA dans le tableau de synthese 'trouve la valeur min et l'écrit dans le tableau de synthese tablo(1, 2) = Application.Min(Application.Index(AA, , 3)) 'trouve la valeur max et l'écrit dans le tableau de synthese tablo(1, 3) = Application.Max(Application.Index(AA, , 3)) 'quantité inf 1000 et l'écrit dans le tableau de synthese If Application.Min(Application.Index(AA(c), , 3)) < 1000 Then tablo(1, 4) = tablo(1, 4) + 1 End If 'quantité 1000/2000 et l'écrit dans le tableau de synthese If Application.Min(Application.Index(AA(c), , 3)) >= 1000 And Application.Min(Application.Index(AA(c), , 3)) < 2000 Then tablo(1, 5) = tablo(1, 5) + 1 End If 'quantité 2000/3000 et l'écrit dans le tableau de synthese If Application.Min(Application.Index(AA(c), , 3)) >= 2000 And Application.Min(Application.Index(AA(c), , 3)) < 3000 Then tablo(1, 6) = tablo(1, 6) + 1 End If 'quantité sup 3000 et l'écrit dans le tableau de synthese If Application.Min(Application.Index(AA(c), , 3)) >= 3000 Then tablo(1, 7) = tablo(1, 7) + 1 End If 'calculs la moyenne l'écrit dans le tableau de synthese tablo(1, 8) = Application.Average(Application.Index(AA, , 3)) End If
Quelle est la raison pour laquelle il faut que je garde Application.Min si je l'enleve j'ai erreur d’exécution 13 incompatibilité de type?
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Application.Min(Application.Index(AA(c), , 3)) >= 1000 And Application.Min(Application.Index(AA(c), , 3)) < 2000 Then
Seconde question est il possible de faire AA,BB,CC.... colonne 4 et 5 en une fois plutôt que de traiter AA puis BB puis CC puis de nouveau AA colonne 5? Bref traiter AA BB en même temps...
Merci par avance.
Partager