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

  1. #1
    Membre régulier
    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
    Points : 83
    Points
    83
    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 chevronné 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 : 62
    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
    Points : 1 900
    Points
    1 900
    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 régulier
    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
    Points : 83
    Points
    83
    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 chevronné 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 : 62
    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
    Points : 1 900
    Points
    1 900
    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 régulier
    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
    Points : 83
    Points
    83
    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 éminent 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 : 71
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    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

  7. #7
    Membre régulier
    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
    Points : 83
    Points
    83
    Par défaut
    merci à tous mais je voudrais sans gestion d'erreur si c'est possible ce dont je commence à douter sérieusement ...

  8. #8
    Membre chevronné 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 : 62
    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
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    j'ai cherché pas mal de temps, je ne pense pas que sans la gestion d'erreur ce la soit possible, à moins d'utiliser la premiere solution

    il n'y a pas de methode count ou hasvalidation ou encore une autre permettant de savoir s'il y a une liste de validation sur cette cellule

  9. #9
    Membre régulier
    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
    Points : 83
    Points
    83
    Par défaut
    ok merci à ceux qui ont cherché,
    j'pense que jv'ais prendre la solution fournie par
    pgz
    merci à tous

+ 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