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 :

Liste validation et fonction Decaler en VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut Liste validation et fonction Decaler en VBA
    Bonjour à tous,

    j'essaye (en vain ) de construire une liste de validation avec une plage dynamique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1=DECALER(Parametres!$A$2;;;NBVAL(Parametres!$A:$A)-1)"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = "Information !"
            .InputMessage = ""
            .ErrorMessage = "Vous devez choisir une valeur contenue dans la liste proposée !"
            .ShowInput = True
            .ShowError = True
        End With
    J'obtiens l'erreur : "Erreur définie par l'application ou par l'objet"
    J'ai essayé en remplaçant "DECALER" par OFFSET et/ou Formula1 par FormulaLocal

    Lorsque je remplace par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlBetween, Formula1:="=Parametres!$A$2:$A$48"
    ça fonctionne, mais du coup, la plage n'est plus dynamique..

    Quelqu'un aurait la syntaxe exacte à utiliser ?

    Bon week-end
    Curt

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Salut Curt

    Les listes de validations ne sont pas simple à rendre dynamique. Ceci dit j'ai trouvé une astuce qui permet de les rendre dynamique
    et sans passer par le VBA qui plus est !!!

    Voici ma méthode (elle fonctionne à partir de 2007)
    1°) Dans la feuille 2, la cellule A1 Contient "Titre", A2 contient "Madame", A3 contient "Mademoiselle", A4 contient "Monsieur"
    2°) J'en fait un tableau (Insertion - Tableau) et je coche Mon tableau comporte des entêtes
    3°) Il crée un tableau nommé Tableau2 Dont le nom ne peux pas servir pour les listes de validations
    3°) Donc je nomme cette plage A2:A4 par exemple "TiTle" (Formules - Définir un Nom)
    Là il met comme Référence "=Tableau2[Titre]"
    4°) Sur Feuille 1 en A1 je fait une liste de validation dont la source "=Title"
    5°) Sur la feuille 2 on peut puisque c'est tableau de type Tableau ajouter et supprimer les données autant que nécessaire
    c'est impacté directement dans la liste déroulante immédiatement

    Voili Voilà

    Bon j'aurais pu lancé l'assistant macro et récuperer le Code ... Mais est-ce bien nécessaire ???

    Peut-être que cette astuce aurait sa place quelque part sur le site (FAQ, Tutoriel ...)
    Si quelqu'un veut bien me dire comment faire, je suis preneur

    Tu dis si cela te convient Curt

    A+

    PS : Même si cette astuce ne necessite pas forcement du Code, VBA reste Mon langage préferé, d'ailleurs j'adore coder en VBA ...

  3. #3
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut liste validation
    Bonsoir Igloobel,

    Excellente solution que je place dans mes codes à retenir (même si ce n'est pas un code).

    Cordialement,

  4. #4
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut
    Bonjour Igloobel,

    et merci (cette astuce est déjà là http://blog.developpez.com/fauconnie...validation_qui)

    Par contre, une liste de validation ne peut comprendre qu'une colonne. Or, j'utilise la première colonne dans la liste de validation et les autres colonnes sont utilisées avec RECHERCHEV et.... du coup, la matrice de la fonction ne peut renvoyer les valeurs des colonnes voisines.

    Le problème reste entier : comment concilier la liste de validation et une matrice de RECHERCHEV ?

    La réponse : Il suffit de définir une liste avec une colonne pour la liste de validation et une autre liste avec toutes les colonnes qui servira de matrice.... simple et efficace.

    Curt

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

Discussions similaires

  1. Fonction non valide ( exécution fonction excel vba)
    Par Sawzaaren dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/02/2012, 14h34
  2. [XL-2007] Fonction "DECALER" en VBA
    Par pascal4782 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/05/2011, 13h28
  3. [XL-2007] Traduction VBA de la fonction decaller
    Par bird007 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2010, 17h51
  4. fonction mois.decaler sous VBA
    Par franckh99 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/11/2007, 10h17
  5. Valider l'enregistrement en cours VBA
    Par avril.stephane dans le forum Access
    Réponses: 3
    Dernier message: 24/08/2005, 15h13

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