Réactualiser automatiquement une ListBox
Bonjour très chers,
Novice en VBA, je suis confronté à un problème de réactualisation de ma "ListBox_personnel" pour le projet sur lequel je bosse. En effet, A travers un userfom qui alimente la feuille nommé "personnel" dans mon classeur, je saisi les noms des salariés. Une fois le bouton "Ajouter" actionné, cela enregistre les infos du nouveau salarié à la bonne place dans la feuille "Personnel" mais sans apparaitre simultanément dans ma "listBox_personnel". Toutefois quand je ferme et relance le programme, les nouvelles informations saisies apparaissent dans ma ListBox_personnel. J'aimerais que ma ListBox_personnel s'actualise automatiquement à chaque enregistrement sans relancer le programme.
Je joins à ma demande mon fichier excel pour mieux expliciter mon problème.
Je vous remercie par avance de votre aide.
Bonjour,
Il te faut la recharger après l'ajout dans la procédure "Private Sub Bouton_ajouter_personnel_Click()". Remplaces l'existante par celle-ci :
Private Sub Bouton_ajouter_personnel_Click()
Dim acronymes As Range 'Variables RANGE
Dim acronyme As Range 'Variables CELLULE
'Insertion d'une nouvelle ligne vierge au format classique
Worksheets("Personnel").Select
Worksheets("Personnel").Rows("3:3").Insert Shift:=xlDown
Worksheets("Personnel").Rows("4:4").Copy
Worksheets("Personnel").Rows("3:3").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Insertion des formules
Worksheets("Personnel").Range("B3").FormulaLocal = "=SIERREUR(INDEX(Contrats!K:K;EQUIV(1;(Contrats!K:K>=0,5)*(Contrats!J:J=A3);0));0)"
Worksheets("Personnel").Range("B3").FormulaArray = Worksheets("Personnel").Range("B3").Formula
Worksheets("Personnel").Range("L3").FormulaLocal = "=SIERREUR(ENT((AUJOURDHUI()-H3)/365);""NO DATE"")"
'Insertion de données
Worksheets("Personnel").Range("A3").Value = P_acro.Value
Worksheets("Personnel").Range("C3").Value = P_nom_naissance.Value
Worksheets("Personnel").Range("D3").Value = P_nom_marital.Value
Worksheets("Personnel").Range("E3").Value = P_nom_usage.Value
Worksheets("Personnel").Range("F3").Value = P_prenom.Value
If P_Homme.Value = True Then
Worksheets("Personnel").Range("G3").Value = "H"
Else
Worksheets("Personnel").Range("G3").Value = "F"
End If
Worksheets("Personnel").Range("H3").Value = P_date_naissance.Value
Worksheets("Personnel").Range("I3").Value = P_pays_naissance.Value
Worksheets("Personnel").Range("J3").Value = P_ville_naissance.Value
Worksheets("Personnel").Range("K3").Value = P_nationnalite.Value
Worksheets("Personnel").Range("M3").Value = P_situation_familiale.Value
Worksheets("Personnel").Range("N3").Value = P_nb_enfants.Value
Worksheets("Personnel").Range("O3").Value = P_pays.Value
Worksheets("Personnel").Range("P3").Value = P_ville.Value
Worksheets("Personnel").Range("Q3").Value = P_code_postal.Value
Worksheets("Personnel").Range("R3").Value = P_adresse.Value
Worksheets("Personnel").Range("S3").Value = P_adresse_complement.Value
Worksheets("Personnel").Range("U3").Value = P_handicap_percent.Value
Worksheets("Personnel").Range("V3").Value = P_handicap_debut.Value
Worksheets("Personnel").Range("W3").Value = P_handicap_fin.Value
Worksheets("Personnel").Range("X3").Value = P_NIR.Value
Worksheets("Personnel").Range("Y3").Value = P_NIR_clé.Value
'Filtrage pour ordonner par ordre alphabetique (A à Z)
On Error Resume Next
ActiveWorkbook.Worksheets("Personnel").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Personnel").AutoFilter.Sort.SortFields.Add Key:= _
Range("E1:E" & Worksheets("Personnel").Range("A3").End(xlDown).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Personnel").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Set acronymes = Worksheets("Personnel").Range("A3:A" & Worksheets("Personnel").Range("A3").End(xlDown).Row)
ListBox_personnel.Clear
For Each acronyme In acronymes
With ListBox_personnel
.AddItem
.List(i, 0) = Worksheets("Personnel").Range("A" & acronyme.Row).Value
.List(i, 1) = Worksheets("Personnel").Range("E" & acronyme.Row).Value
.List(i, 2) = Worksheets("Personnel").Range("F" & acronyme.Row).Value
End With
i = i + 1
Next acronyme
End SubTrès bien !!
Je te remercie Infiniment @Theze. ça fonctionne parfaitement.