Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compter les cellules d'une même couleur avec SUMPRODUCT en VBA

18 réponses
Avatar
Apitos
Bonjour =E0 tous,

En colonne A, j'aimerais compter les cellules d'une m=EAme couleur (ici jau=
ne=3D6), dans des sous-ensembles pr=E9d=E9finies en utilisant la fonction S=
OMMEPROD en VBA, pour =E9viter les boucles imbriqu=E9es :

'----
Cells(i,2).Formula =3D "=3DSUMPRODUCT((" & Plage & ">=3D" & Tmp(0) & ")*(" =
& Plage & "<=3D" & Tmp(1) & ")*(" & Plage.Interior.ColorIndex & "=3D6)*1)"
'------

http://cjoint.com/?BJem6GDUSC1

Plage : A2:A2000
tmp(0) : valeur Min du sous-ensemble
tmp(1) : valeur Max du sous-ensemble

Merci d'avance.

8 réponses

1 2
Avatar
Apitos
Salut,


- C'est quoi, ce verbiage? Tmp = Extrema(c) et .Value = .Value



Cette fonction "Extrema", n'est pas la mienne, elle à pour tache d’extr aire la limite inferieur xx et supérieur yy de chaque ensemble [xx-yy].
.Value=.Value c'est pour ne garder que la valeur de la cellule et faire "cacher" la formule SOMMEPROD.

De ce que je comprends, la première partie consiste à mettre un 1 dan s la

colonne AX si la cellule correspondante en colonne A est peinte en jaune.



Les 1 sont la pour marquer les cellules en jaune dans la colonne A.

En deuxième partie, il y a un sommeprod …



Cette SOMMEPROD calcul le nombre de chiffre de xx à yy, présents dans l a colonne A de chaque fourchette de chiffre exprimé par un ensemble [xx-y y]

Ensuite, tu effaces tout.



La colonne AX sert juste pour le calcul, en fin de compte on l'efface.

Excuses-moi, mais le fichier "qui est suffisamment compréhensible"..... ne

l'est pas pour moi.



De quel point de vue ?

Cependant, si le hasard faisait que ma vision des choses soit saine, je

crois que tu irais encore dix fois plus vite en séparant ta colonne

contenant les données-bornes sur lesquelles on se réfère pour le So mmeprod.



Pas bien compris ?

Ensuite, tu expliques le critère utilisé pour barbouiller les cellule s en

colonneA



Les chiffres en colonne A sont issue d’une lecture d’un fichier texte, et je marque en jaune toute valeur d’une cellule répondant à un crit ère défini qui peut se retrouver dans les lignes du texte.

Apres ces explications, je crois que le sujet est bien clair ?
Avatar
Jacquouille
Le but n'est pas la destination, mais le voyage.
Si cet itinéraire te convient, garde-le et que la promenade te soit
agréable.
Perso, je crois que j'aurais une autre approche, mais c'est TON dossier.
Cependant, si tu t'ennuies un jour, repense à mon précédent post et essaie
de séparer la colonne contenant tes extrêmes, puis appliques un sommeprod.

Bonne fin de WE

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Apitos" a écrit dans le message de groupe de discussion :


Salut,


- C'est quoi, ce verbiage? Tmp = Extrema(c) et .Value = .Value



Cette fonction "Extrema", n'est pas la mienne, elle à pour tache d’extraire
la limite inferieur xx et supérieur yy de chaque ensemble [xx-yy].
.Value=.Value c'est pour ne garder que la valeur de la cellule et faire
"cacher" la formule SOMMEPROD.

De ce que je comprends, la première partie consiste à mettre un 1 dans la

colonne AX si la cellule correspondante en colonne A est peinte en jaune.



Les 1 sont la pour marquer les cellules en jaune dans la colonne A.

En deuxième partie, il y a un sommeprod …



Cette SOMMEPROD calcul le nombre de chiffre de xx à yy, présents dans la
colonne A de chaque fourchette de chiffre exprimé par un ensemble [xx-yy]

Ensuite, tu effaces tout.



La colonne AX sert juste pour le calcul, en fin de compte on l'efface.

Excuses-moi, mais le fichier "qui est suffisamment compréhensible".....ne

l'est pas pour moi.



De quel point de vue ?

Cependant, si le hasard faisait que ma vision des choses soit saine, je

crois que tu irais encore dix fois plus vite en séparant ta colonne

contenant les données-bornes sur lesquelles on se réfère pour le
Sommeprod.



Pas bien compris ?

Ensuite, tu expliques le critère utilisé pour barbouiller les cellules en

colonneA



Les chiffres en colonne A sont issue d’une lecture d’un fichier texte, et je
marque en jaune toute valeur d’une cellule répondant à un critère défini
qui peut se retrouver dans les lignes du texte.

Apres ces explications, je crois que le sujet est bien clair ?
Avatar
Apitos
Re,

C'est ça me fait gagner encore plus de temps, j'adapterais ta solution av ec joie.

Je cherche toujours la meilleure.

Une question :

Comme j'ai la grande boucle pour calculer le nombre d'éléments de chaqu e ensemble dans la colonne A, j'aimerais éviter d'introduire une petite b oucle de comptage de couleur, en répétition dans cette même grande bo ucle.

C'est ça le principe.

Tu peux toujours me donner un exemple pour voir !

Merci.
Avatar
Jacquouille
Re
Comment obtiens-tu les nombres en colonne A ?
Colonne D, tu ne sais pas faire = (max-min)+1 ' max et min étant dans
colonne c ?

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Apitos" a écrit dans le message de groupe de discussion :


Re,

C'est ça me fait gagner encore plus de temps, j'adapterais ta solution avec
joie.

Je cherche toujours la meilleure.

Une question :

Comme j'ai la grande boucle pour calculer le nombre d'éléments de chaque
ensemble dans la colonne A, j'aimerais éviter d'introduire une petite boucle
de comptage de couleur, en répétition dans cette même grande boucle.

C'est ça le principe.

Tu peux toujours me donner un exemple pour voir !

Merci.
Avatar
Jacquouille
Tant que tu y es, explique aussi la col c et la D.
déjà demandé précédemment.



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacquouille" a écrit dans le message de groupe de discussion :
50719103$0$3111$

Re
Comment obtiens-tu les nombres en colonne A ?
Colonne D, tu ne sais pas faire = (max-min)+1 ' max et min étant dans
colonne c ?

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Apitos" a écrit dans le message de groupe de discussion :


Re,

C'est ça me fait gagner encore plus de temps, j'adapterais ta solution avec
joie.

Je cherche toujours la meilleure.

Une question :

Comme j'ai la grande boucle pour calculer le nombre d'éléments de chaque
ensemble dans la colonne A, j'aimerais éviter d'introduire une petite boucle
de comptage de couleur, en répétition dans cette même grande boucle.

C'est ça le principe.

Tu peux toujours me donner un exemple pour voir !

Merci.
Avatar
Apitos
Re,

La colonne C est obtenue en balayant les ensembles en colonne L.

On prend un par un, et on applique un SOMMEPROD pour avoir le nombre d'occu rrences des chiffre de cet ensemble. On le mettra dans la colonne D.

En même temps on applique un SOMMPROD pour le même ensemble pour trouve r les cellules en jaune des chiffres contenu dans cet ensemble. Le résult at est mis dans la colonne E.

Voila !

;)
Avatar
Jacquouille
Bonjour

Je ne comprends rien du tout !

<La colonne C est obtenue en balayant les ensembles en colonne L.
--Pour moi, dans ton fichier exemple, la colonne L = un copier coller de la
colonne C . Donc il y a là déjà un obstacle à ma compréhension.

Ensuite
En même temps on applique un SOMMPROD pour le même ensemble pour trouver
les cellules en jaune des chiffres contenu dans cet ensemble. Le résultat
est mis dans la colonne E.


Les cellules de la colonne A sont coloriées en fonction de quoi?

Dans la colonne E, il y a des chiffres en dur, qui ne sont pas issus d'un
SOMMEPROD!

Au risque de me répéter, je ne comprends pas du tout ton approche.
Je vais donc devoir te laisser et quitter ce fil.

Bonne chance.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
Avatar
Apitos
Bonjour Jacquouille

Merci donc du temps passé pour répondre à ma question.
1 2