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.

ArrowMain

Nous voulons créer une liste de validation pour le nom du produit, en ignorant les cellules vides.

ArrowRawData

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]