Bonjour le forum,
Voici le contexte de ma problématique:
- J'ai un formulaire dans lequel se trouve unListView.
- Ce ListView contient la liste des agents du service.
- L'utilisateur coche les CheckBoxs des agents qu'il souhaite évaluer.
Jusqu'ici aucun problème. Cependant, maintenant j'aimerais que:
- Lorsqu'il clique sur le bouton "Evaluer ces agents", le ListView se vide et se re-rempli avec uniquement les agents qu'il a coché.
- De là, une boucle se fait sur chacun des agents cochés afin de créer les fiches d'évaluations.
- Chaque fois qu'un fiche d'évaluation est crée, la fonction appelée pour crée cette fiche, renvoi "Vrai"
J'aimerais utiliser cette info (La fiche à bien été crée) pour cocher et mettre en vert, en temps réel donc, la ligne correspondant à mon agent dans le listView ...
Donc si je vous ai perdu, je résume:
J'essaie de créer une macro qui, visuellement, informe l'utilisateur de l'avancement de la création des fiches d'évaluations... Comme une "To do list', si il y a 5 fiches à créer, chaque fois qu'une est faite, la ligne associée est validée.
Le truc, c'est que ça fonctionne, mais pas en temps réel ... Quand le code tourne, le ListView est vide. Et quand la macro est finie, le ListView affiche toutes les lignes (les bonnes), cochée et misent en vert.
Donc comment faire pour que, dès que j'appuie sur le bouton, le ListView se re-remplisse avec ce qui a été coché et que au fur et à mesur de l'avancement, les lignes se cochent et se mettent en vert ?
Mon code: 1) Vide l'ancien ListView. 2) Le réalimente avec ce qui avait été séléectionné
Mon code: Boucle sur les lignes du ListView et appel la fonction de création de fiche de suivi "CreerToutesLesFichesDeSuivi" à chaque itération.
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
35 '#################### Vide les différents éléments du formulaire. ListViewAgents.ListItems.Clear 'Vide le ListView de son contenu '########## Réalimente le formulaire avec uniquement les agents que l'on souhaite évaluer ##### With ListViewAgents With .ColumnHeaders 'Supprime les anciens entêtes .Clear 'Ajoute 1 colonne en spécifiant le nom de l'entête 'et la largeur des colonnes .Add , , "Agents", (ListViewAgents.Width) End With OffSet = Tbl.ListColumns("A évaluer").Range.Column - Tbl.ListColumns("Nom").Range.Column For Each Cell In Tbl.ListColumns("Nom").DataBodyRange Ligne = Cell.Row - Tbl.DataBodyRange.Row + 1 What = Cell.Text NomComplet = Tbl.ListColumns("Prénom").DataBodyRange.Cells(Ligne, 1) _ & " " & Cell.Text Set Cell = Tbl.ListColumns("Nom").DataBodyRange.Cells(Ligne, 1).OffSet(0, OffSet) If Cell Then .ListItems.Add , What, NomComplet .ListItems(What).Checked = False End If Next Cell .View = lvwReport End With
Donc une dernière fois, tous fonctionne, mais pas en temps réel... Quand le code tourne, le ListView est vide. Et quand c'est fini, le ListView est plein avec exactement ce que je souhaite.
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 For Each Cell In Tbl.ListColumns("A évaluer").DataBodyRange If Cell Then Ligne = Cell.Row - Tbl.DataBodyRange.Row + 1 '##### ATTENTION: Ces deux variables sont publiques, leur utilisation porte sur tout Nom = Tbl.ListColumns("Nom").DataBodyRange.Cells(Ligne, 1) Prenom = Tbl.ListColumns("Prénom").DataBodyRange.Cells(Ligne, 1) 'Permet de mettre en forme With ListViewAgents If CreerToutesLesFichesDeSuivi Then 'Appel de la fonction de création de fiche d'évaluation '#### Mise en forme pour informer visuellement l'utilisateur de l'avancement des créations #### .ListItems(Nom).Checked = True .ListItems(Nom).ForeColor = RGB(64, 160, 32) End If End With End If Next Cell
Merci d'avance pour l'aide![]()
Partager