VBA: créer des liste de validation

Résolu/Fermé
Ludivine - 6 déc. 2011 à 14:11
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 7 déc. 2011 à 09:26
Bonjour à tous !

Alors voila, j'aimerai créer une macro qui me permette ,dans un fichier, lorsque je lance la macro, d'appliquer des listes de validation sur l'onglet (sheet) actif.

Telles que :

Colonne D il puisse y avoir une de ces réponses : Customer reached on first try;Customer reached on second try;Customer reached on third ty;Cust not contacted;cust refused quote;Cust not reachable;Cust called for NTF DLV Loop

Colonne E il puisse y avoir une de ces réponses: Yes;No;Not Tested

Colonne F il puisse y avoir une de ces réponses: New Issue;Same Issue;Partial Fix;Unit Damaged;Unit & Box damaged;OS Problem; Accessories Missing

Colonne H il puisse y avoir une de ces réponses: Rerepair Off-site;Escalation;On-site repair;Explanation / Education;Buyback; Technical Support;Compensation

Colonne K et L et M il puisse y avoir une de ces réponses :Yes;No


Car voila, je dois créer ces listes à la main pour le moment, tous les jours dans un nouvel onglet donc une macro que je pourrais faire évoluer idéalement, serait un grand grand gain de temps !!

D'avance merci beaucoup à tous !!!

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
6 déc. 2011 à 14:28
Bonjour,
Via l'enregistreur de macros (Outils/Macros/Nouvelle macro) :
Sub TestValidations()
With Columns("D:D").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Customer reached on first try,Customer reached on second try,Customer reached on third ty,Cust not contacted,cust refused quote,Cust not reachable,Cust called for NTF DLV Loop"
End With
With Columns("E:E").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Yes,No,Not Tested"
End With
With Columns("F:F").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="New Issue,Same Issue,Partial Fix,Unit Damaged,Unit & Box damaged,OS Problem,Accessories Missing"
End With
With Columns("H:H").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Rerepair Off-site,Escalation,On-site repair,Explanation / Education,Buyback, Technical Support,Compensation"
End With
With Columns("K:M").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Yes,No"
End With
End Sub
0
Merci beaucoup pour ta réponse FRanck !!

Alors ça fonctionne très bien mais uniquement dans l'onglet dans lequel j'étais qd j'ai créé la macro, pas dans les autres onglets créés avant ou après !!!

Moi j'aimerais que quelques soit l'onglet dans lequel je sois dans le classeur (fichier) la macro soit appliquée sur l'onglet en cours d'utilisation.

C'est possible tu penses ?

Merci beaucoup encore !!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
6 déc. 2011 à 14:47
Moi j'aimerais que quelques soit l'onglet dans lequel je sois dans le classeur (fichier) la macro soit appliquée sur l'onglet en cours d'utilisation
Ce code fonctionne avec n'importe qu'elle feuille, suffit de le lancer dans la feuille que tu veux...
Tu te places dans la feuille de ton choix et lance la macro (ALT+F8 choix : TestValidation et clic sur exécuter).
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
6 déc. 2011 à 14:49
En cadeau, pour supprimer, après utilisation, toutes les listes de validation :
Sub SupprValidation()
With Columns("D:F").Validation
    .Delete
End With
With Columns("H:H").Validation
    .Delete
End With
With Columns("K:M").Validation
    .Delete
End With
End Sub
0
Alors c'est peut être mes yeux ?!!

voici mon fichier !
http://cjoint.com/?ALgo25my9wJ

J'ai créé la macro quand j'étais dans l'onglet "50" ensuite j'ai créé une nouvelle feuille (Feuil1).
Si je suis dans la feuille 1 et que je lance la macro, ça n'applique pas les listes de validation !



MErci pour vos lumières !
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
6 déc. 2011 à 16:30
pas tes yeux. Il ne faut pas mettre ce code dans un module de feuille, mais dans un module standard. Sous VBE : insertion/Module. Comme cela, ça fonctionne quelque soit la feuille d'ou tu la lances...
Regarde cet exemple :
https://www.cjoint.com/?ALgqC2tBaeo
0
Merci beaucoup pour la technique, ça fonctionne parfaitement

MErci !!!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
7 déc. 2011 à 09:26
De rien Ludivine.
A+
0