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.

16test.xlsm (184.64 Ko)

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 Sub

Très bien !!

Je te remercie Infiniment @Theze. ça fonctionne parfaitement.

Rechercher des sujets similaires à "reactualiser automatiquement listbox"