Problème : Gestion des zones de liste VBA

Bonjour, Bonsoir,

Je me permets de vous solliciter afin d’obtenir votre aide dans l’objectif de résoudre un problème que j’ai rencontré aujourd’hui. Après avoir longuement cherché, je n’ai trouvé aucune solution.

Vous trouverez ci-joint un fichier modèle pour une meilleure compréhension.

Mon objectif est d’obtenir le nombre d’effectif en fonction des grades au 31/01/2018 (Onglet « RECHERCHE », cellules B22/B23/B24/B25/B25) à l’aide de l’onglet « BASE 31082018 ».

J’aimerais que cela se fasse en fonction du « POLE1 » (B2) et en fonction des « Zones de liste » contrat/Actif suspendu/Expatrié.

Je sais faire une macro qui va donner le résultat en fonction du pôle. Mais je ne sais pas comment faire pour gérer les « zones de liste » dans une macro. Je ne vois absolument pas comment lui faire comprendre par exemple que si je sélectionne CDI+CDD+ACTIF+OUI il doit m’indiquer le résultat en fonction des grades.

Pourriez-vous svp m’apporter votre précieuse aide ?

Je reste à votre disposition si nécessaire et vous remercie d’avance pour vos retours et le temps que vous m’accordez.

Cordialement,

10test.xlsx (38.63 Ko)

CGS

en fonction des « Zones de liste

si tu parles de ce qu'il y a en cellules (fusionnées) B2:E2

ce n'est pas une zone de liste, mais une liste de validation.

c'est comme pour n'importe quel cellule.

fait le test,

Sub test()
MsgBox Sheets("RECHERCHE").Range("B2").Value
End Sub

Bonsoir,

Justement, comme je l’évoque dans le post, mon problème ne provient pas de la liste de validation, mais bien des zones de liste en dessous.

En effet, j’aurais besoin de sélectionner le pole1 donc AA ou BB ou CC et par la suite jouer avec les zones de liste (en dessous de la liste de validation) afin d’obtenir le nombre d’effectif en fonction du grade.

La base est dans l’onglet « BASE 31082018 ».

Merci beaucoup

Cordialement

re,

à tester,

4cgs-rh-test.xlsm (48.03 Ko)
Private Sub ListBox1_Change()
For i = 0 To ListBox1.ListCount - 1
 If Me.ListBox1.Selected(i) Then m = m & Me.ListBox1.List(i) & vbCrLf
Next
MsgBox m
End Sub

Bonsoir,

Merci pour votre retour.

Votre code VBA permet d’obtenir les valeurs de la « listbox1 » mais comment intégrer dans le code les deux autres « listbox » ?

J’ai reproduit la même macro pour les « listbox2 et 3 ». Mais le problème est que je ne peux pas utiliser les variable m,n,o pour créer une formule qui va compter le nombre de collaborateur en fonction du pole, contrat, actif/suspendu, expatrié.

Je ne sais pas comment reprendre ces variables dans un nouveau module pour les utiliser avec un « count.if ».

Cordialement

CGS-RH

4cgs-rh-test.xlsm (47.89 Ko)

re,

c'est la même chose pour les 2 autres,

Private Sub ListBox2_Change()
For i = 0 To ListBox2.ListCount - 1
 If Me.ListBox2.Selected(i) Then m = m & Me.ListBox2.List(i) & vbCrLf
Next
MsgBox m
End Sub
Private Sub ListBox3_Change()
For i = 0 To ListBox3.ListCount - 1
 If Me.ListBox3.Selected(i) Then m = m & Me.ListBox3.List(i) & vbCrLf
Next
MsgBox m
End Sub

bonjour,

j'ai réussi à refaire la même chose pour les deux autres listbox.

Mais comment utiliser les valeurs obtenu par la sélection des données dans la listbox ?

Quand on sélectionne une valeur dans une listebox celle-ci est stockée dans la variable "m"

m = m & Me.ListBox1.List(i) & vbCrLf

comment utiliser cela pour l'intégrer dans une nouvelle macro qui contiendra une formule qui reprendra la valeur de "m" ?

merci beaucoup pour votre aide

Je sais faire une macro qui va donner le résultat en fonction du pôle.

il n'y a pas de macro dans le fichier transmit, montre moi ta macro.

Rechercher des sujets similaires à "probleme gestion zones liste vba"