VBA: créer des liste de validation

Résolu
Ludivine -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. Ludivine
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  3. Ludivine
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    2. Ludivine
       
      Merci beaucoup pour la technique, ça fonctionne parfaitement

      MErci !!!
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      De rien Ludivine.
      A+
      0