[Excel - 2016] Rafraichir un comboBox après insertion de données

Fermé
DESTIN8TE Messages postés 35 Date d'inscription lundi 14 janvier 2019 Statut Membre Dernière intervention 15 février 2019 - Modifié le 15 févr. 2019 à 14:10
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 15 févr. 2019 à 16:47
Bonjour,

Tout simplement, j'ai un formulaire avec 4 onglets (Insertion, Modification, ...).

Mon problème vient de Modification qui où j'ai un comboBox qui récupère déjà les lignes inscrites dans mon tableau, s'il n'y en a pas, forcément le comboBox n'a aucune donnée (juste pour info.).

Si j'inscrit une nouvelle donnée avec l'onglet Insertion et que je laisse toujours le formulaire ouvert, dans Modification, le comboBox ne récupère pas la dernière ligne inscrite.

Donc je voudrais au contraire sans avoir à réouvrir le formulaire ou même ajouter un bouton de rafraichissement que le comboBox se refresh automatiquement après insertion de la ligne. Le bouton serait vraiment en dernier recours.

Voici le code pour récupérer les lignes :
Private Sub UserForm_Initialize()
..........
    MultiPgPOSTIT.Value = 0
 
    'Code pour Pg2Mod
    Dim Ligne As Integer
    Ligne = 9
    Do While Sheets("DATA").Cells(Ligne, 3).Value <> ""
        Me.Pg2cmbBoxSelectRow.AddItem Sheets("DATA").Cells(Ligne, 3).Value
        Ligne = Ligne + 1
    Loop
..........

PS: Je sais que là le comboBox "Pg2cmbBoxSelectRow" ne se refresh pas automatiquement puisqu'il est dans l'Initialize.


Info : J'ai essayé de mettre ce code dans le code du bouton d'insertion dans l'onglet Insertion, ça marche mais j'ai des doublons alors si je peux retirer ces doublons, normalement ça serait bon aussi.

Merci et n'hésite pas à demander plus de détails.
A voir également:

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
15 févr. 2019 à 14:31
Bonjour,

voir ici: remplir un Combobox sans doublon

https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-F

0
DESTIN8TE Messages postés 35 Date d'inscription lundi 14 janvier 2019 Statut Membre Dernière intervention 15 février 2019
15 févr. 2019 à 14:51
Je l'ai déjà lu ça mais je ne vois pas comment l'adapter à mon code.
0
DESTIN8TE Messages postés 35 Date d'inscription lundi 14 janvier 2019 Statut Membre Dernière intervention 15 février 2019
15 févr. 2019 à 15:17
J'ai essayé ça :
Private Sub UserForm_Initialize()
Dim I As Integer
For I = 9 To Range("C65536").End(xlUp).Row
    Me.Pg2cmbBoxSelectRow = Range("C" & I)
    If Me.Pg2cmbBoxSelectRow.ListIndex = -1 Then Me.Pg2cmbBoxSelectRow.AddItem Sheets("DATA").Range("C" & I).Value
Next I

Ce qui revient à ce que j'ai fait.
Mais je n'ai toujours pas la nouvelle ligne inscrite.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
15 févr. 2019 à 16:47
C'est normal tu mets ce code à l'ouverture de l'UserForm. Cela ne marche qu'une fois.
Mets le dans un Button comme ceci:

Option Explicit
Private Sub CommandButton1_Click()
Dim I As Integer
For I = 9 To Range("C65536").End(xlUp).Row
    Me.Pg2cmbBoxSelectRow = Range("C" & I)
    If Me.Pg2cmbBoxSelectRow.ListIndex = -1 Then Me.Pg2cmbBoxSelectRow.AddItem Sheets("DATA").Range("C" & I).Value
Next I
End Sub


Il faut mettre la propriété de l'UserForm ShowModal à False pour pouvoir travailler sur la feuille

@+ Le Pivert
0