liste de validation ignorer les cellules vides à l’aide VBA dans Microsoft Excel
Dans cet article, nous utiliserons l’événement de changement de sélection de la feuille de calcul pour créer une liste de validation, en ignorant les valeurs vides.
Les données brutes se composent du nom du produit, ainsi que de quelques cellules vides dans la colonne A.
Nous voulons créer une liste de validation pour le nom du produit, en ignorant les cellules vides.
Explication logique
Dans cet article, nous avons utilisé l’événement de changement de sélection de la feuille de calcul pour créer la validation dans la cellule I12. Tout d’abord, nous allons créer une chaîne qui comprendra tous les noms de produits, séparés par des virgules, en ignorant les cellules vides. Ensuite, nous ajouterons cette chaîne pour la validation de la cellule.
Explication du code
IntLastRow = .Cells (Rows.Count, 1) .End (xlUp) .Row Le code ci-dessus est utilisé pour obtenir le numéro de ligne de la dernière cellule.
If Not IsEmpty (.Cells (IntRow, 1)) Then ‘Concatening de valeurs non vides dans la première colonne Txt = Txt & .Cells (IntRow, 1) & « , »
End If Le code ci-dessus est utilisé pour créer une chaîne de noms de produits, en ignorant les cellules vides.
Avec Range (« I12 »). Validation ‘Suppression de toute validation précédente de la cellule .Delete’ Ajout de la validation .Add _ Type: = xlValidateList, _ AlertStyle: = xlValidAlertStop, _ Operator: = xlBetween, _ Formula1: = Txt End With Le code ci-dessus est utilisé pour attribuer la validation à la cellule I12.
Veuillez suivre ci-dessous pour le code
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Declaring variables Dim IntRow As Integer, IntLastRow As Integer Dim Txt As String With Worksheets("Main") 'Finding the row number of last cell IntLastRow = .Cells(Rows.Count, 1).End(xlUp).Row 'Looping from 10th row to Last row For IntRow = 10 To IntLastRow 'Creating text for validation list If Not IsEmpty(.Cells(IntRow, 1)) Then 'Concatening non blank values in the first column Txt = Txt & .Cells(IntRow, 1) & "," End If Next IntRow End With Txt = Left(Txt, Len(Txt) - 1) 'Adding validation to cell I12 With Range("I12").Validation 'Deleting any previous validation from the cell .Delete 'Adding the validation .Add _ Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:=Txt End With End Sub
Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.
Nous aimerions avoir de vos nouvelles, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]