Bonjour à tous,
J'ai une UserForm ("retour_fiche") qui contient les éléments suivant :
- une combobox (cmb_nom) dans laquelle apparaît tous les noms des personnes qui n'ont pas eut un retour de fiche (dossier clôturé) par rapport à une feuille excel ("retour_des_fiches").
- une listbox (Lst_retour_choix) dans laquelle apparaît, en fonction de la "cmb_nom", toutes les fiches ouvertes pour le nom sélectionné.
- une txtbox (txt_retour_date) dans laquelle je dois saisir la date du retour de la fiche de suivi.
- un commandbutton (cmd_retour_enregistrement) qui me permet d'enregistrer la date de retour de la fiche dans une cellule bien précise.
J'aimerais pouvoir faire la chose suivante :
. Je sélectionne un élément dans ma "lst_retour_choix".
. ensuite je saisie une date dans ma "txt_retour_date".
. Et pour finir quand je clique sur "cmd_retour_enregistrer", j'enregistre la date que je viens de saisir (dans ma feuille excel "retour_des_fiches") dans la cellule qui correspond à l'élément que je viens de sélectionné dans ma listbox !!!
(la colonne dans laquelle je veux enregistrer la date est la colonne "F", la ligne serait en fonction de ma sélection dans la listbox).
Je vous mets le code que j'ai déjà mis et qui fonctionne très bien.
Il ne me manque plus que le code pour enregistrer la date que je ne trouve pas !!!!
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
36
37
38
39
40
41
42
43 Private O As Object 'déclare la variable O (Onglet) Private PL As Range 'déclare la variable PL (PLage) Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm Dim DL As Integer 'déclare la variable DL (Dernière Ligne) Dim D As Object 'déclare la variable D (Dictionnaire) Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire) Dim CEL As Range 'déclare la variable CEL (CELlule) Set O = Sheets("retour_des_fiches") 'définit l'onglet O DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée Dl de la colonne 1 (=A) de l'onglet O Set PL = O.Range("A2:A" & DL) 'définit la plage PL Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL If CEL.Offset(0, 3).Value = "" Then D(CEL.Value) = "" 'alimente le dictionnaire D Next CEL 'prochaine cellule de la boucle TMP = D.keys 'récupère dans le tableau TMP la liste du dictionnaire D sans doublon Me.Cmb_Retour_NOM.List = TMP 'alimente la combobox "cmb_nom" Me.Lst_Retour_choix.ColumnCount = 2 'définit le nombre de colonnes de la listbox "lst_competence" End Sub Private Sub cmb_retour_nom_Change() 'au changement dans la combobox cmb_nom Dim PLV As Range 'déclare la variale PLV (PLage Visible) Dim CEL As Range 'déclare la variable CEL (CELlule) Me.Lst_Retour_choix.Clear 'vide la listbox "lst_competence" 'filtre la colonne 4 (=D) de l'onglet O avec les valeurs vide comme critère O.Range("A1").AutoFilter Field:=4, Criteria1:="" 'filtre la colonne 1 (=A) de l'onglet O avec la valeur de la combobox "cmb_nom" comme critère O.Range("A1").AutoFilter Field:=1, Criteria1:=Me.Cmb_Retour_NOM.Value Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit la plage PLV (cellules visibles (non filtrées) de la plage PL) For Each CEL In PLV 'boucles sur toutes les cellules CEL de la plage PLV With Me.Lst_Retour_choix 'prend en compte la listbox "lst_competence" .AddItem CEL.Offset(0, 1).Value 'ajoute la valeur de la cellule CEL décalée d'une colonne à droite (=colonne B) 'ajoute la valeur de la cellule CEL décalée dd deux colonnes à droite (=colonne C) .Column(1, .ListCount - 1) = CEL.Offset(0, 2).Value End With 'fin de la prise en compte de la listbox "lst_competence" Next CEL 'prochaine cellule de la boucle O.Range("A1").AutoFilter 'supprime le filtre automatique End Sub
Merci pour votre aide
Partager