Comment enregistrer ou conserver les sélections des listes ActiveX dans Excel ?
Supposons que vous ayez créé des listes déroulantes et sélectionné des éléments dans ces listes, mais toutes les sélections sont perdues lorsque vous fermez et rouvrez le classeur. Souhaitez-vous conserver les sélections effectuées dans les listes à chaque fois que vous fermez et rouvrez le classeur ? La méthode décrite dans cet article peut vous aider.
Enregistrer ou conserver les sélections des listes ActiveX avec du code VBA dans Excel
Enregistrer ou conserver les sélections des listes ActiveX avec du code VBA dans Excel
Le code VBA ci-dessous peut vous aider à enregistrer ou conserver les sélections des listes ActiveX dans Excel. Veuillez procéder comme suit.
1. Dans le classeur contenant les listes ActiveX dont vous souhaitez conserver les sélections, appuyez simultanément sur les touches Alt + F11 pour ouvrir la fenêtre Microsoft Visual Basic for Applications.
2. Dans la fenêtre Microsoft Visual Basic for Applications, double-cliquez sur ThisWorkbook dans le volet de gauche pour ouvrir la fenêtre de code ThisWorkbook Code. Ensuite, copiez le code VBA suivant dans la fenêtre de code.
Code VBA : Enregistrer les sélections des listes ActiveX dans Excel
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim I As Long
Dim J As Long
Dim K As Long
Dim KK As Long
Dim xSheet As Worksheet
Dim xListBox As Object
On Error GoTo Label
Application.DisplayAlerts = False
Application.ScreenUpdating = False
K = 0
KK = 0
If Not Sheets("ListBox Data") Is Nothing Then
Sheets("ListBox Data").Delete
End If
Label:
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "ListBox Data"
Set xSheet = Sheets("ListBox Data")
For I = 1 To Sheets.Count
For Each xListBox In Sheets(I).OLEObjects
If xListBox.Name Like "ListBox*" Then
With xListBox.Object
For J = 0 To .ListCount - 1
If .Selected(J) Then
xSheet.Range("A1").Offset(K, KK).Value = "True"
Else
xSheet.Range("A1").Offset(K, KK).Value = "False"
End If
K = K + 1
Next
End With
K = 0
KK = KK + 1
End If
Next
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Private Sub Workbook_Open()
Dim I As Long
Dim J As Long
Dim KK As Long
Dim xRg As Range
Dim xCell As Range
Dim xListBox As Object
Application.DisplayAlerts = False
Application.ScreenUpdating = False
KK = 0
For I = 1 To Sheets.Count - 1
For Each xListBox In Sheets(I).OLEObjects
If xListBox.Name Like "ListBox*" Then
With xListBox.Object
Set xRg = Intersect(Sheets("ListBox Data").Range("A1").Offset(0, KK).EntireColumn, Sheets("ListBox Data").UsedRange)
For J = 1 To .ListCount
Set xCell = xRg(J)
If xCell.Value = "True" Then
.Selected(J - 1) = True
End If
Next
KK = KK + 1
End With
End If
Next
Next
Sheets("ListBox Data").Delete
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
3. Appuyez sur les touches Alt + Q pour fermer la fenêtre Microsoft Visual Basic for Applications.
4. Maintenant, vous devez enregistrer le classeur en tant que classeur Excel avec macros activées. Cliquez sur Fichier > Enregistrer sous > Parcourir.
5. Dans la boîte de dialogue Enregistrer sous, sélectionnez un dossier pour enregistrer le classeur, renommez-le si nécessaire, choisissez Classeur Excel avec macros activées dans la liste déroulante Spécifier le format d'enregistrement, puis cliquez sur le bouton Enregistrer. Voir capture d'écran :
Veuillez enregistrer le classeur chaque fois que vous mettez à jour les listes. Toutes les sélections précédentes seront conservées dans les listes après avoir rouvert le classeur.
Remarque : Lors de l'enregistrement du classeur, une feuille de calcul nommée « ListBox Data » sera automatiquement créée à la fin de toutes les feuilles de calcul de votre classeur. Ignorez cette feuille car elle disparaîtra automatiquement lorsque le classeur sera fermé.
Meilleurs outils de productivité pour Office
Améliorez vos compétences Excel avec Kutools pour Excel, et découvrez une efficacité incomparable. Kutools pour Excel propose plus de300 fonctionnalités avancées pour booster votre productivité et gagner du temps. Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...
Office Tab apporte l’interface par onglets à Office, simplifiant considérablement votre travail.
- Activez la modification et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
- Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
- Augmente votre productivité de50 % et réduit des centaines de clics de souris chaque jour !
Tous les modules complémentaires Kutools. Une seule installation
La suite Kutools for Office regroupe les modules complémentaires pour Excel, Word, Outlook & PowerPoint ainsi qu’Office Tab Pro, idéal pour les équipes travaillant sur plusieurs applications Office.





- Suite tout-en-un — modules complémentaires Excel, Word, Outlook & PowerPoint + Office Tab Pro
- Un installateur, une licence — installation en quelques minutes (compatible MSI)
- Une synergie optimale — productivité accélérée sur l’ensemble des applications Office
- Essai complet30 jours — sans inscription, ni carte bancaire
- Meilleure valeur — économisez par rapport à l’achat d’add-ins individuels