XL 2013 Validation des données avec un vecteur

louloubru

XLDnaute Junior
Bonjour,
je souhaite valider des données à l'aide de plage nommées.
J'ai donc le code suivant par exemple :
VB:
   With Sheets(Noms_feuilles(i)).Cells(2, colcat).EntireColumn.Validation 'Morceau au sein d'une boucle, Noms_feuilles contient le nom de mes feuilles donc je procède à la validation sur toutes les feuilles
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Catégories" 'Nom de ma plage qui sert de validation'
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
Jusqu'ici toue va bien. Sauf que la plage de validation en doit pas être la même sur toutes les feuilles. La plage porte le même nom que la feuille donc j''utilise le vecteur Noms_feuilles de nouveau.
C'est là que ça coince ... l'utilisation d'un vecteur ne semble pas compatible avec une plage de validation, le code suivant ne fonctionne pas :

Code:
    With Sheets(Noms_feuilles(i)).Cells(2, colorg).EntireColumn.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Noms_feuilles(i)" 'Erreur ici'
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
Pour la ligne déclenchant l'erreur, j'ai également essayé Formula1:="Noms_feuilles(i)" --> m'écris Noms_feuilles(i) comme validation et Formula1:="="Noms_feuilles(i)"" --> erreur
Je ne sais pas comment faire : cela signifie que je ne peux pas faire de boucles sur les zones de validation ? Ça va être laborieux ...

En vous remerciant par avance,

Louise
 

Dranreb

XLDnaute Barbatruc
Bonjour.
À priori :
VB:
 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=""" & Noms_feuilles(i) & """"
Ou peut être plutôt :
VB:
 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=" & Noms_feuilles(i)
Joignez toujours un classeur pour qu'on puisse tester nos propositions.
 

louloubru

XLDnaute Junior
Bonjour,
merci beaucoup la deuxième solution fonctionne ! (J'ai commencé par celle là car elle me paraissait plus intuitive.

Un grand merci,

Bonne après-midi
 

Discussions similaires


Haut Bas