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é Office
Dynamisez vos compétences Excel avec Kutools pour Excel et découvrez une efficacité inégalée. Kutools pour Excel propose plus de300 fonctionnalités avancées pour booster votre productivité et gagner du temps. Cliquez ici pour obtenir la fonctionnalité la plus essentielle pour vous...
Office Tab apporte une interface à onglets à Office, et facilite grandement 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, au lieu d’ouvrir de nouvelles fenêtres.
- Augmentez votre productivité de50% et réduisez des centaines de clics de souris chaque jour!