Toutes mes excuses pour mon faible niveau de compréhension d'Excel, peut-être que ce que je cherche à faire n'est pas possible.
J'ai une liste de 120 entrées que je souhaite utiliser comme validation des données. Mais au lieu que les gens aient à faire défiler les 120 options, ce serait bien s'ils pouvaient commencer à taper et voir les options qui pourraient correspondre à ce qu'ils sont prêts à écrire. Un peu comme dans la saisie semi-automatique, j'ai trouvé cette astuce .
Je voudrais avoir plus d'options au début de la frappe.
Par exemple, cela ferait partie de la liste:
Awareness
Education
Budget
Budget Planning
Enterprise Budget
Lorsque je tape "B", je voudrais que les trois dernières options apparaissent et que je clique sur l'une d'entre elles. Je ne sais pas s'il existe un moyen d'inclure vlookup ici ...
Idéalement, la chose parfaite serait d'avoir plusieurs "balises" dans une cellule, mais je crains que ce soit absolument impossible avec Excel.
Merci beaucoup pour toute contribution et désolé si je ne me suis pas expliqué correctement.
Si vous ne voulez pas descendre le chemin VBA, il y a cette astuce d'une question précédente.
Excel 2010: comment utiliser la saisie semi-automatique dans la liste de validation
Cela ajoute un volume ennuyeux en haut de vos feuilles et une maintenance potentielle (si vous avez besoin de plus d'options, en ajoutant des noms de personnes à partir d'une liste de personnel, de nouveaux projets, etc.) mais fonctionne tout de même.
Il y a une solution de contournement compliquée à http://www.ozgrid.com/Excel/autocomplete-validation.htm qui fonctionne essentiellement comme ceci:
Tools - Options > Edit
;ExtendOffice.com propose une solution VBA qui a fonctionné pour moi dans Excel 2016. Voici ma description des étapes. J'ai inclus des détails supplémentaires pour le rendre plus facile. J'ai également légèrement modifié le code VBA. Si cela ne fonctionne pas pour vous, réessayez les étapes ou consultez les instructions sur la page ExtendOffice.
Ajoutez la validation des données à une cellule (ou plage de cellules). Autoriser = Liste. Source = [la plage avec les valeurs souhaitées pour la saisie semi-automatique/déroulante]. Cliquez sur OK. Vous devriez maintenant avoir un menu déroulant mais avec une faible fonctionnalité de saisie automatique.
Avec une cellule contenant votre validation de données nouvellement ajoutée, insérez une zone de liste déroulante ActiveX (PAS une zone de liste déroulante de contrôle de formulaire). Cela se fait à partir du ruban Developer. Si vous ne disposez pas du ruban développeur, vous devrez l'ajouter à partir du menu des options Excel.
Dans l'onglet Développeur de la section Contrôles, cliquez sur "Mode Création". Sélectionnez la zone de liste déroulante que vous venez d'insérer. Ensuite, dans la même section de ruban, cliquez sur "Propriétés". Dans la fenêtre Propriétés, modifiez le nom de la zone de liste modifiable en "TempComboBox".
Appuyez sur ALT + F11 pour accéder à Visual Basic Editor. Sur le côté gauche, double-cliquez sur la feuille de calcul avec votre validation de données pour ouvrir le code de cette feuille. Copiez et collez le code suivant sur la feuille. REMARQUE: j'ai légèrement modifié le code pour qu'il fonctionne même avec Option Explicit
activé en haut de la feuille.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal target As Range)
'Update by Extendoffice: 2018/9/21
' Update by Chris Brackett 2018-11-30
Dim xWs As Worksheet
Set xWs = Application.ActiveSheet
On Error Resume Next
Dim xCombox As OLEObject
Set xCombox = xWs.OLEObjects("TempCombo")
' Added this to auto select all text when activating the combox box.
xCombox.SetFocus
With xCombox
.ListFillRange = vbNullString
.LinkedCell = vbNullString
.Visible = False
End With
Dim xStr As String
Dim xArr
If target.Validation.Type = xlValidateList Then
' The target cell contains Data Validation.
target.Validation.InCellDropdown = False
' Cancel the "SelectionChange" event.
Dim Cancel As Boolean
Cancel = True
xStr = target.Validation.Formula1
xStr = Right(xStr, Len(xStr) - 1)
If xStr = vbNullString Then Exit Sub
With xCombox
.Visible = True
.Left = target.Left
.Top = target.Top
.Width = target.Width + 5
.Height = target.Height + 5
.ListFillRange = xStr
If .ListFillRange = vbNullString Then
xArr = Split(xStr, ",")
Me.TempCombo.List = xArr
End If
.LinkedCell = target.Address
End With
xCombox.Activate
Me.TempCombo.DropDown
End If
End Sub
Private Sub TempCombo_KeyDown( _
ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
Select Case KeyCode
Case 9 ' Tab key
Application.ActiveCell.Offset(0, 1).Activate
Case 13 ' Pause key
Application.ActiveCell.Offset(1, 0).Activate
End Select
End Sub
Assurez-vous que la "bibliothèque d'objets Microsoft Forms 2.0" est référencée. Dans Visual Basic Editor, accédez à Outils> Références, cochez la case en regard de cette bibliothèque (si ce n'est déjà fait) et cliquez sur OK. Pour vérifier que cela a fonctionné, accédez à Debug> Compile VBA Project.
Enfin, enregistrez votre projet et cliquez dans une cellule avec la validation de données que vous avez ajoutée. Vous devriez voir une zone de liste déroulante avec une liste déroulante de suggestions qui se met à jour avec chaque lettre que vous tapez.
Voici une solution pour créer une liste déroulante de saisie semi-automatique avec VBA:
Tout d'abord, vous devez insérer une zone de liste modifiable dans la feuille de calcul et modifier ses propriétés, puis exécuter le code VBA pour activer la saisie semi-automatique.
Accédez à la feuille de calcul qui contient la liste déroulante que vous souhaitez qu'elle soit complétée automatiquement.
Avant d'insérer la zone de liste déroulante, vous devez activer l'onglet Développeur dans le ruban.
a). Dans Excel 2010 et 2013, cliquez sur Fichier> Options. Et dans la boîte de dialogue Options, cliquez sur Personnaliser le ruban dans le volet droit, cochez la case Développeur, puis cliquez sur le bouton OK.
b). Dans Outlook 2007, cliquez sur le bouton Office> Options Excel. Dans la boîte de dialogue Options Excel, cliquez sur Populaire dans la barre de droite, puis cochez l'onglet Afficher développeur dans la zone du ruban et enfin cliquez sur le bouton OK.
Cliquez ensuite sur Développeur> Insérer> Zone de liste déroulante sous Contrôles ActiveX.
Dessinez la zone de liste modifiable dans la feuille de calcul actuellement ouverte et faites un clic droit dessus. Sélectionnez Propriétés dans le menu contextuel.
Désactivez le mode Conception en cliquant sur Développeur> Mode Conception.
Cliquez avec le bouton droit sur l'onglet de la feuille de calcul actuellement ouverte et cliquez sur Afficher le code.
Assurez-vous que l'éditeur de code de feuille de calcul actuel est ouvert, puis copiez-collez le code VBA ci-dessous dedans.
Code emprunté à extendoffice.com
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Update by Extendoffice: 2018/9/21
Dim xCombox As OLEObject
Dim xStr As String
Dim xWs As Worksheet
Dim xArr
Set xWs = Application.ActiveSheet
On Error Resume Next
Set xCombox = xWs.OLEObjects("TempCombo")
With xCombox
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
End With
If Target.Validation.Type = 3 Then
Target.Validation.InCellDropdown = False
Cancel = True
xStr = Target.Validation.Formula1
xStr = Right(xStr, Len(xStr) - 1)
If xStr = "" Then Exit Sub
With xCombox
.Visible = True
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 5
.Height = Target.Height + 5
.ListFillRange = xStr
If .ListFillRange = "" Then
xArr = Split(xStr, ",")
Me.TempCombo.List = xArr
End If
.LinkedCell = Target.Address
End With
xCombox.Activate
Me.TempCombo.DropDown
End If
End Sub
Private Sub TempCombo_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 9
Application.ActiveCell.Offset(0, 1).Activate
Case 13
Application.ActiveCell.Offset(1, 0).Activate
End Select
End Sub
Cliquez sur Fichier> Fermer et revenir à Microsoft Excel pour fermer la fenêtre Microsoft Visual Basic pour Application.
Maintenant, cliquez simplement sur la cellule avec la liste déroulante, vous pouvez voir que la liste déroulante est affichée sous forme de zone de liste déroulante, puis tapez la première lettre dans la zone, le mot correspondant sera complété automatiquement.
Remarque: ce code VBA n'est pas appliqué aux cellules fusionnées.
Source: Comment effectuer la saisie semi-automatique lors de la saisie dans la liste déroulante Excel?
Aucune des solutions mentionnées ci-dessus n'a fonctionné. Celui qui semblait fonctionner ne fournissait la fonctionnalité que pour une seule cellule
Récemment, j'ai dû entrer beaucoup de noms et sans suggestions, c'était une énorme douleur. J'ai eu la chance d'avoir ce complément de saisie semi-automatique Excel pour activer la saisie semi-automatique. L'inconvénient est que vous devez activer la macro (mais vous pouvez toujours la désactiver plus tard)