compter les valeurs d'une colonne selon la selection multiple dans une listbox de usf

wilpier

XLDnaute Nouveau
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:confused:.

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.

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

D'avance merci pour votre aide.
 

wilpier

XLDnaute Nouveau
Re : compter les valeurs d'une colonne selon la selection multiple dans une listbox d

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).

le bout de code pour la première partie de la question :

element_select = False
nb_elements = ListServices.ListCount

'Vérifie si un élément est sélectionné
For j = 0 To nb_elements - 1
If ListServices.Selected(j) = True Then
element_select = True

End If
Next

' si aucun item n'a été sélectionné
If element_select = False Then
MsgBox "Vous n'avez sélectionné aucun service"
Exit Sub
End If

'Affiche le nombre de sélections dans l'USF
For n = 0 To ListServices.ListCount - 1
If ListServices.Selected(n) Then
nbselect = nbselect + 1
Label2.Caption = "Il y a " & nbselect & " services sélectionnés soit " & ?????? & " agents concernés"
End If
Next n


le bout de code pour la deuxième question :

L = 3
C = 1
Decalage = 7

'Mise en page des étiquettes
Sheets("PubliPostage").Cells.ClearContents
Sheets("PubliPostage").Columns("A:C").ColumnWidth = 55
Sheets("PubliPostage").Rows("1:65536").RowHeight = 14.75

'Mise à jour de "PubliPostage"
x = 0
For i = 2 To Sheets("BD COS 2007").Range("E65536").End(xlUp).Row
If Sheets("BD COS 2007").Range("E" & i) = ListServices.List(ListServices.ListIndex) Then
x = x + 1
Sheets("PubliPostage").Cells(L, C) = Sheets("BD COS 2007").Range("B" & i) & " " & Sheets("BD COS 2007").Range("C" & i) & " " & Sheets("BD COS 2007").Range("D" & i)
If OptionButton1 = True Then
Sheets("PubliPostage").Cells(L + 1, C) = Sheets("BD COS 2007").Range("I" & i)
Sheets("PubliPostage").Cells(L + 2, C) = Sheets("BD COS 2007").Range("J" & i)
Sheets("PubliPostage").Cells(L + 3, C) = Sheets("BD COS 2007").Range("K" & i) & " " & Sheets("BD COS 2007").Range("L" & i)
L = L + Decalage

Else
Sheets("PubliPostage").Cells(L + 1, C) = Sheets("BD COS 2007").Range("E" & i)

L = L + Decalage
End If
End If

Et avec ça je n'ai l'affichage que de la dernière sélection.

Merci.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 018
Messages
2 084 657
Membres
102 628
dernier inscrit
alexduf971