J'utilise le code VBA suivant pour permettre la saisie semi-automatique lors de la saisie dans la liste déroulante à l'aide d'une zone de liste déroulante.
Ce code désactive les fonctions "Annuler" et "Rétablir" sur les feuilles auxquelles le code VBA est appliqué. Le code VBA peut-il être modifié pour permettre ces fonctions ?
Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)
'Mettre à jour par Extendoffice: 2018 / 9 / 21
Dim xCombox comme OLEObject
Dim xStr comme chaîne
Feuille de travail Dim xWs As
Faible xArr
Définir xWs = Application.ActiveSheet
On Error Resume Next
Définir xCombox = xWs.OLEObjects("TempCombo")
Avec xCombox
.ListFillRange = ""
.CelluleLiée = ""
.Visible = Faux
Terminer par
Si Target.Validation.Type = 3 Alors
Target.Validation.InCellDropdown=Faux
Annuler = Vrai
xStr = Cible.Validation.Formule1
xStr = Droite(xStr, Len(xStr) - 1)
Si xStr = "" alors quitter le sous-marin
Avec xCombox
.Visible = Vrai
.Gauche = Cible.Gauche
.Haut = Cible.Haut
.Largeur = Cible.Largeur + 5
.Height = Cible.Height + 5
.ListFillRange = xStr
Si .ListFillRange = "" Alors
xArr = Diviser(xStr, ",")
Me.TempCombo.List = xArr
Si fin
.LinkedCell = Cible.Adresse
Terminer par
xCombox.Activer
Moi.TempCombo.DropDown
Si fin
End Sub
Private Sub TempCombo_KeyDown (ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Sélectionnez le code clé du cas
Cas 9
Application.ActiveCell.Offset(0, 1).Activer
Cas 13
Application.ActiveCell.Offset(1, 0).Activer
End Select
End Sub