Réinitialiser un contrôle ActiveX dans une feuille

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

RENAUDER

Nous a quitté
Repose en paix
Bonjour,
J'ai un contrôle ActiveX de type Combobox dans une feuille nommée Accueil.
Le ListFillrange est défini avec pour valeur une plage nommée Familles et cette plage se trouve dans la feuille Paramètres.

Cette plage nommée est elle même définie avec la formule:
=DECALER(Paramètres!$H$1;;;NBVAL(Paramètres!$H:$H))

Lorsque je fais un ajout d'un item (en VBA) dans la plage (colonne H), je trie cette plage et si cet ajout se trouve à la fin de la plage il n'est pas visible dans la ComboBox.

Nota: Après cet ajout je reviens manuellement sur la feuille Accueil et
je n'ai pas pas trouver de procédures événementielles qui pourrait me résoudre cela.

Je dois fermer et ré-ouvrir le classeur pour voir cet item dans la ComboBox.

Je n'ai pas utilisé le contrôle ComboBox standard car je ne peux pas jouer sur ses propriétés du fait qu'il n'y en a pas.
 
Dernière édition:
Re : Réinitialiser un contrôle ActiveX dans une feuille

bonsoir Eric,

Et avec ceci, dans le module de code de la feuille qui contient la combobox.

Code:
Private Sub ComboBox1_GotFocus()
     With ComboBox1
        If .ListCount <> Range("JoursSemaine").Rows.Count Then
        .ListFillRange = Range("JoursSemaine").Address
        End If
     End With
End Sub

A+
 
Re : Réinitialiser un contrôle ActiveX dans une feuille

Re Eric,

Pour être plus précis:

Avec la plage dynamique en feuil2 et la combo en feuil1

Code:
Private Sub ComboBox1_GotFocus()
     With Feuil1.ComboBox1
        If ListCount <> Feuil2.Range("JoursSemaine").Rows.Count Then
        .ListFillRange = Feuil2.Name & "!" & Feuil2.Range("JoursSemaine").Address
        End If
     End With
End Sub

Mais quelque chose comme ça pourrait être fait aussi bien dans l'évènement Sub Worksheet_Change(ByVal Target As Range) de Feuil2


A+
 
Dernière modification par un modérateur:
Re : Réinitialiser un contrôle ActiveX dans une feuille

Bonsoir,

Bien joué Hasco, ça fonctionne et encore merci.
Je publie le code pour ceux que ça intéressent.
Code:
Private Sub cboFamille_GotFocus()
    With Sheets("Accueil").cboFamille
        If ListCount <> Sheets("Paramètres").Range("Familles").Rows.Count Then
            .ListFillRange = Sheets("Paramètres").Name & "!" & Sheets("Paramètres").Range("Familles").Address
        End If
    End With
End Sub
 
Re : Réinitialiser un contrôle ActiveX dans une feuille

Re Eric,

je ne sais pas si tu as vu mon deuxième message, mais il me semble que ce serait 'moins couteux' en exécution de le faire sur
Sub Worksheet_Change(ByVal Target As Range) de ta feuille "Paramètres" ou évènement 'Calculate' de la feuille paramètres

A+++
 
Re : Réinitialiser un contrôle ActiveX dans une feuille

Bonjour Hasco
Il est vrai que ça a l'avantage de ne pas exécuter de code lors des clics sur la ComboBox et de ne seulement s'exécuter lors d'ajout d'item pour réactualiser la ComboBox.
Encore merci.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
168
D
  • Question Question
Réponses
5
Affichages
249
Didierpasdoué
D
Retour