VBA: créer des liste de validation

[Résolu/Fermé]
Signaler
-
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
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

Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 642
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
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 !!
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 642
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).
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 642
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
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 !
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 642
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
Merci beaucoup pour la technique, ça fonctionne parfaitement

MErci !!!
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 642
De rien Ludivine.
A+