Note: The other languages of the website are Google-translated. Back to English

Comment afficher le premier élément de la liste déroulante au lieu de blanc?

doc liste déroulante par défaut en haut 1

La liste déroulante dans une feuille de calcul peut nous aider à faciliter la saisie des données, il suffit de sélectionner les éléments sans les taper un par un. Mais parfois, lorsque vous cliquez sur la liste déroulante, elle passe d'abord aux éléments vides au lieu du premier élément de données comme illustré ci-dessous, cela peut être dû à la suppression des données source à la fin de la liste. Il peut être gênant de devoir faire défiler vers le haut d'une longue liste pour chaque cellule de validation de données vides. Cet article, je vais parler de la façon de toujours afficher le premier élément dans la liste déroulante.

Afficher le premier élément dans la liste déroulante au lieu de vide avec la fonction de validation des données

Afficher automatiquement le premier élément de la liste déroulante au lieu de vide avec le code VBA


flèche bleue bulle droite Afficher le premier élément dans la liste déroulante au lieu de vide avec la fonction de validation des données

En fait, pour réaliser ce travail, il vous suffit d'appliquer une formule spécifique lorsque vous créez une liste déroulante, procédez comme suit:

1. Sélectionnez les cellules dans lesquelles vous souhaitez insérer la liste déroulante, puis cliquez sur Données > Validation des données > Validation des données, voir capture d'écran:

doc liste déroulante par défaut en haut 2

2. Dans le sauté Validation des données boîte de dialogue, sous la Paramètres onglet, choisissez Liste du Autoriser section, puis entrez cette formule: = OFFSET (Feuille3! $ A $ 1,0,0, COUNTA (Feuille3! $ A: $ A) -1,1) into the Source zone de texte, voir capture d'écran:

Notes: Dans cette formule, Sheet3 la feuille de calcul contient-elle la liste des données source, et A1 est la première valeur de cellule de la liste.

doc liste déroulante par défaut en haut 3

3. Puis clique OK bouton, maintenant, lorsque vous cliquez sur les cellules de la liste déroulante, le premier élément de données toujours affiché en haut s'il y a des valeurs de cellule supprimées à la fin des données source, voir capture d'écran:

doc liste déroulante par défaut en haut 4


flèche bleue bulle droite Afficher automatiquement le premier élément de la liste déroulante au lieu de vide avec le code VBA

Ici, je peux également introduire un code VBA qui peut vous aider à afficher automatiquement le premier élément de la liste déroulante lorsque vous cliquez sur les cellules de validation des données.

1. Après avoir inséré la liste déroulante, sélectionnez l'onglet de la feuille de calcul qui contient la liste déroulante, et faites un clic droit pour choisir Voir le code dans le menu contextuel pour accéder à Microsoft Visual Basic pour applications , puis copiez et collez le code suivant dans le module:

Code VBA: affiche automatiquement le premier élément de données dans la liste déroulante:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updateby Extendoffice 20160725
    Dim xFormula As String
    On Error GoTo Out:
    xFormula = Target.Cells(1).Validation.Formula1
    If Left(xFormula, 1) = "=" Then
        Target.Cells(1) = Range(Mid(xFormula, 1)).Cells(1).Value
    End If
Out:
End Sub

doc liste déroulante par défaut en haut 5

2. Puis enregistrez et fermez la fenêtre de code, et maintenant, lorsque vous cliquez sur la cellule de la liste déroulante, le premier élément de données sera affiché à la fois.


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2021 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Fonctionnalités complètes Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition 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é de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (9)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Après avoir fait défiler vers le bas, sélectionnez les cellules, les données numériques ne sont pas en série, seules les premières données de cellule viennent, sélectionnez 1,2 cellules différentes et faites défiler vers le bas, la valeur ne vient pas 1,2,3,4,5 ....... seule la première valeur de cellule vient 1,1,1,1,....
Ce commentaire a été minimisé par le modérateur sur le site
sélectionnez la cellule dans laquelle vous avez mis l'élément de liste
la plage pour l'élément de liste est "Opleiding"
dans ton code VBA :

selection.Value = Range("opleiding").Cells(2, 1)

le résultat est que l'élément sélectionné du listItem est le deuxième élément de la plage "Opleiding"
Ce commentaire a été minimisé par le modérateur sur le site
Comment puis-je définir une liste de validation des données de sorte que si la valeur déroulante de la cellule est supprimée, la cellule affichera automatiquement une valeur par défaut (c'est-à-dire "-Sélectionner-") ?

Par exemple, j'ai une feuille de calcul avec plusieurs listes déroulantes que je veux afficher une valeur par défaut de "-Sélectionner-" une fois la feuille ouverte. Un utilisateur sélectionnera des valeurs dans les listes qui auront un impact sur le résultat des calculs dans l'ensemble de la feuille de calcul. Un utilisateur peut accidentellement "supprimer" le contenu de la cellule. Si cela se produit, plutôt que la cellule devienne vide, je veux que la cellule affiche une valeur par défaut de "-Sélectionner-". Ce scénario se produit à plusieurs endroits aléatoires dans la feuille de calcul, et pas seulement à un endroit localisé.

J'ai pu trouver le code VBA suivant jusqu'à présent, mais j'ai seulement compris comment appliquer le concept sur une plage, plutôt que sur des cellules contenant une liste déroulante. Le problème avec ce que j'ai codé jusqu'à présent est que chaque cellule vide de la plage se termine par "-Select-".

Option explicite

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim cellule comme plage
' Si Target.Cells.Count > 1 alors quitter le sous-marin
Si ce n'est pas l'intersection (cible, plage ("f2: p17")) n'est rien alors
Pour chaque cellulo dans la plage ("f2:p17")
Application.EnableEvents = False
Si IsEmpty(cel.Value) Alors cel.Value = "-Select-"
Cellule suivante
Si fin
Application.EnableEvents = True
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour!

Comment puis-je définir une liste de validation des données de sorte que si la valeur déroulante de la cellule est supprimée, la cellule affichera automatiquement une valeur par défaut (c'est-à-dire "-Sélectionner-") ?

Par exemple, j'ai une feuille de calcul avec plusieurs listes déroulantes que je veux afficher une valeur par défaut de "-Sélectionner-" une fois la feuille ouverte. Un utilisateur sélectionnera des valeurs dans les listes qui auront un impact sur le résultat des calculs dans l'ensemble de la feuille de calcul. Un utilisateur peut accidentellement "supprimer" le contenu des cellules des listes. Si cela se produit, plutôt que la cellule devienne vide, je veux que la cellule affiche une valeur par défaut de "-Sélectionner-". Ce scénario se produit à plusieurs endroits aléatoires dans la feuille de calcul, et pas seulement à un endroit localisé.

J'ai pu trouver le code VBA suivant jusqu'à présent, mais il applique uniquement le concept sur une plage, plutôt que sur des cellules individuelles contenant des listes déroulantes. Le problème avec ce que j'ai codé jusqu'à présent est que chaque cellule vide de la plage se termine par "-Select-". Certaines des listes sont dans des plages, mais certaines sont également dispersées sur la feuille. Le problème que j'ai avec mon code actuel est que chaque cellule vide de la plage se termine par "-Select-". J'essaie de faire en sorte que cela s'applique à l'ensemble de la feuille de calcul UNIQUEMENT aux cellules qui sont des listes déroulantes.

Ce que j'essaie d'accomplir est-il même possible ?

Un exemple de fichier peut être trouvé ici :
https://drive.google.com/file/d/1VoO8VgFs3IJ0ALwqfk0i8gt69UE4vEKW/view?usp=sharing

Exemple de code:

Option explicite

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim cel comme plage
' Si Target.Cells.Count > 1 Then Exit Sub ' la désactivation permet de sélectionner et de supprimer plusieurs cellules en même temps
Si ce n'est pas l'intersection (cible, plage ("f2: p17")) n'est rien alors
Pour chaque cellulo dans la plage ("f2:p17")
Application.EnableEvents = False
Si IsEmpty(cel.Value) Alors cel.Value = "-Select-"
Cellule suivante
Si fin
Application.EnableEvents = True
End Sub


Merci d'avance!
Ce commentaire a été minimisé par le modérateur sur le site
Ne fonctionne pas pour moi. Je reçois sans cesse un message d'erreur indiquant : « Il y a un problème avec cette formule. Vous n'essayez pas de saisir une formule ? Lorsque le premier caractère est un signe égal (+) ou moins (-), Exel pense qu'il s'agit d'une formule... Pour contourner ce problème, tapez d'abord une apostrophe (')..."
Ce commentaire a été minimisé par le modérateur sur le site
Encore une fois, vous sauvez la journée ! Merci!
Ce commentaire a été minimisé par le modérateur sur le site
Mieux mais pas tout à fait. L'utilisation de la méthode =OFFSET(Sheet3!$A$1,0,0,COUNTA(Sheet3!$A:$A)-1,1) élimine les blancs mais vous place toujours au bas de la très longue liste. Je veux qu'il commence en haut de la liste.
Ce commentaire a été minimisé par le modérateur sur le site
Pour le code VDA, comment puis-je n'avoir qu'une certaine plage de cellules pour afficher le premier élément de la liste déroulante ? Merci en avance.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, Akrupa, Pour résoudre votre problème, peut-être que le code VBA suivant peut vous aider :

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
'Mettre à jour par Extendoffice 20211206
Dim xFormula As String
Dim xRg As Range
Dim xStr As String
Dim xIndex As Integer
xIndex = 2 'Indique ici le numéro de cellule des données d'origine, par exemple, les données d'origine sont A1:A10, pour afficher la valeur de la cellule A2, veuillez écrire 2 ici.
En cas d'erreur GoTo Out :
xFormule = Target.Cells(1).Validation.Formula1
Si Gauche(xFormule, 1) = "=" Alors
Si Target.Value <> "" alors quitter le sous-marin
xStr = Mid(xFormule, 2)
Définir xRg = Application.Range(xStr)
Target.Cells(1) = xRg.Cells(xIndex).Value
Si fin
Out:
End Sub
S'il vous plaît essayez, j'espère que cela peut vous aider!
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés

Nous suivre

Copyright © 2009 - www.extendoffice.com. | Tous les droits sont réservés. Alimenté par ExtendOffice. | | Plan du site
Microsoft et le logo Office sont des marques commerciales ou des marques déposées de Microsoft Corporation aux États-Unis et / ou dans d'autres pays.
Protégé par Sectigo SSL