Compter les valeurs d'une colonne selon la selection multiple dans une listbox d [Résolu]

Signaler
Messages postés
3
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
17 mars 2008
-
Messages postés
3
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
17 mars 2008
-
Bonjour à tous,

je suis nouveau sur le forum et en programmation VBA.

Je suis en train de créer un fichier excel pour la gestion des membres
de mon association. Tout le traitement se fait avec des USF. Je
rencontre deux problèmes qui me bloquent dans mon avancée et je n'ai
pas trouvé la solution dans mes recherches sur le net ou le forum.


Ma BDD se trouve sur une feuille et indique : nom-prénom-...-services (en colonne E)

ma USF me permet de faire une multiselection par service pour traiter les informations.


1/Je souhaite afficher dans un label le nombre de services sélectionnés
et le nom de personnes concerné par ce ou ces services. Je bloque sur
ce bout de code:

Label2.Caption = "Il y a " & nbselect & " services sélectionnés
soit " & Application.CountIf(Sheets("BD COS 2007").Range("E" &
n), "??????") & " agents concernés"

Les ?????? étant ce que je n'arrive pas à définir.


2/ je souhaite copier dans une nouvelle feuille avec mise en forme les
informations que je sélectionne dans la listebox. Mon bout de code
fonctionne mais je n'affiche que les informations liées au dernier
service sélectionné dans la liste multiple.

En fait, traduit en français, je souhaite dire que si je sélectionne
tels ou tels services de la listbox, j'afficherai dans le label le
nombre de lignes renvoyant les valeurs sélectionnées. Cette information
s'affichera par le clic sur un bouton (qui pour info rempli en même
temps ma deuxième feuille).

Quelqu'un pourrait-il m'indiquer ce qui me manque pour réaliser ces 2 opérations?


D'avance merci pour votre aide.

4 réponses

Messages postés
3
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
17 mars 2008

merci pour ta réponse MPI, je vais essayer de cette façon.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Si tu sélectionnes plusieurs services, tu ne peux pas utiliser une formule du genre SOMME.SI ou NB.SI qui n'acceptent qu'un seul critère. Tu pourrais le faire, je pense, avec SOMMEPROD (SumProduct en anglais).

Mais pour ce faire, il faudra que tu transformes cette fonction selon le nombre "aléatoire" de critères, et que tu aies un champ qui contienne des 1 pour l'addition (pour SommeProd). Ou que tu utilises NB.SI plusieurs fois selon le nombre de sélections dans la liste.

Le mieux, je pense, c'est de faire une simple boucle et de comptabiliser au fur et à mesure en utilisant des IF.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
3
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
17 mars 2008

Bonsoir MPI,

si je comprends bien, je dois, si j'ai 32 items dans ma listbox appliquer "if" si la sélection est "true",  "then"  la  ligne  à compter à chaque fois ?
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
En fait, tu pourrais te créer une petite Function booléenne qui vérifie si la cellule E de ta boucle est égale à une des valeurs sélectionnées dans ta liste. Si oui, tu incrémentes une variable compteur de 1.

Cette Function peut soit boucler la liste et vérifier tous les éléments sélectionnés ou bien utiliser un tableau qui contiendrait tous ces éléments dès le départ... Pour 32 éléments, je ne pense pas que le tableau soit primordial, mais s'il y en avait beaucoup plus, ça pourrait sauver un peu de temps.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI