XL 2013 Création d'une liste de validation sou VBA

Chrystel01

XLDnaute Occasionnel
Bonjour,

J'ai un programme VBA qui créé notamment une liste de validation avec les possibilité 1,2,3 sur la colonne AB.
Mais je ne comprends pas car cette liste de validation se créé sur un ensemble de colonnes (colonnes Z à AG)

Ci-dessous le code VBA et je vous joints le fichier avec un extrait de la macro (qui exécute d'autres actions par ailleurs) pour que cela soit plus clair.

Range("AB2:AB1000").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="1,2,3"
End With

Pourriez-vous m'aider SVP à résoudre ce problème ?
Par ailleurs, si je veux créer cette même liste sur 4 colonnes Z, AA, AB, AE? est il possible SVP de simplifier le code VBA, sans répéter la même opération ?

Je vous remercie par avance pour votre aide

Chrystel
 

Pièces jointes

  • test validation.xlsm
    306.1 KB · Affichages: 30

Chrystel01

XLDnaute Occasionnel
Bonjour,

C'est une matrice que j'ai récupéré de mon prédécesseur.
Et pourquoi la liste de validation ne se crée pas dans tout les colonnes ?

Cela signifie que je ne peux pas créer de liste de validation sur les seules colonnes souhaitées en VBA ? Car cela fonctionne bien quand on le fait directement, sans programmation ?

Merci de votre aide
 

eriiic

XLDnaute Barbatruc
Bonjour à tous ,

regarde l'effet de ton Range("AB2:AB1000").Select
Tu inclues la cellule AB9 fusionnée avec Z9:AG9, toutes ces colonnes se retrouvent donc sélectionnées et concernées par ton ajout.
Restreint ta sélection à la colonne réelle du tableau en utilisant son nom :
VB:
    With Range("TAB_RECAP_01[A26]").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="1,2,3"
    End With
inutile d'aller au-delà du tableau jusqu'en ligne 1000. La validation s'étendra à chaque ajout de ligne.
eric
 

patricktoulon

XLDnaute Barbatruc
bon tiens voila par leur nom
VB:
Sub test()
    With Range("TAB_RECAP_01[A26],TAB_RECAP_01[A24],TAB_RECAP_01[B25],TAB_RECAP_01[B29]").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:="1,2,3"
    End With
End Sub
tu aura ta LDV uniquement sur les colonne "Z,AA,AB,AE" mais uniquement dans le tableau structuré
 

Discussions similaires