[Excel - 2016] Rafraichir un comboBox après insertion de données
DESTIN8TE
Messages postés
40
Statut
Membre
-
cs_Le Pivert Messages postés 8437 Statut Contributeur -
cs_Le Pivert Messages postés 8437 Statut Contributeur -
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 :
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.
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.
1 réponse
-
Bonjour,
voir ici: remplir un Combobox sans doublon
https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-F
-
-
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. -
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
-