IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E-00]tester si une cellule est définie comme liste de validation ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Par défaut [E-00]tester si une cellule est définie comme liste de validation ?
    Bonjour à tous,

    voila mon problème (qui me semble quand même pas si compliqué, et pourtant ben faut dire ce qui est, j'y arrive pas )

    je souhaite simplement testé si une cellule est définie en tant que liste de validation, si c'est le cas, le code suivant fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if Target.Validation.Type = xlValidateList then
    ...
    end if
    sinon (la cellule n'est pas définie comme une liste déroulante) , ca pete l'erreur "1004 : Erreur definie par l'application ou par l'objet"

    PS : je pourrais récupérer cette erreur pour traiter mais ça me gène car c'est une erreur assez générique (je le ferai en dernier recours si pas d'autre solution ...)

    merci d'avance

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Bonjour

    essaye ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim cel As Range
        Set cel = Cells.SpecialCells(xlCellTypeAllValidation)
        If Not Intersect(target, cel) Is Nothing Then MsgBox "La cellule " & target.address & "a une liste de validation"

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Par défaut
    super, merci,
    ca marche, nickel sauf (car y a toujours un sauf)
    que du coup, le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells.SpecialCells(xlCellTypeAllValidation)
    fait qu'il boucle sur l'évènement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheet_SelectionChange
    et ca m'arrange pas tellement car ca ralenti pas mal,

    une autre solution ou un paliatif ?

    merci d'avance

  4. #4
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    autre macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        On Error GoTo erreur:
        Target.Validation.Add xlValidateInputOnly
        Target.Validation.Delete
        On Error GoTo 0
        Exit Sub
    erreur:
        MsgBox Target.Address & " Contient une validation"
        On Error GoTo 0
    End Sub

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Par défaut
    merci wilfried_42 pour ton aide et désolé (tu peux me ) de ne pas encore être satisfait mais le problème c'est qu'au lieu de peter l'erreur 1004 quand ce n'est pas une liste (mon code), cette macro pete l'erreur 1004 quand c'est une liste (ton code)
    et c'est ce que je souhaiterai éviter,

    c'est quand même bizarre de ne pas pouvoir savoir par code si une cellule est une liste sans générer une erreur ...

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Je te propose qui te renvoie le type de validation et -1 s'il n'y en a pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function fctValidationType(ByRef myCell As Range) As Long
     
    On Error GoTo ERREUR
    fctValidationType = myCell.Validation.Type
    On Error GoTo 0
     
    Exit Function
     
    ERREUR:
    ERR.Clear
    fctValidationType = -1
     
    End Function
    Il y a sûrement plus simple...

    PGZ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Tester si une cellule est vide dans un classeur excel et faire une boucle
    Par moilou2 dans le forum VBA Access
    Réponses: 11
    Dernier message: 19/08/2009, 09h34
  2. Réponses: 23
    Dernier message: 21/07/2009, 14h19
  3. Réponses: 5
    Dernier message: 28/11/2008, 12h01
  4. [VBA-E]Tester si une cellule est vide dans un cas particulier
    Par tonnick dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/09/2007, 10h12
  5. Tester si une cellule est vide
    Par amka dans le forum Access
    Réponses: 1
    Dernier message: 09/08/2006, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo