selection dans Listbox me donne la celule dans ma feuille excel.
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:
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