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 :

Validation de donnée par formule dynamique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 8
    Par défaut Validation de donnée par formule dynamique
    Bonjour
    je tourne en rond sur un problème tout simple

    j'avais définit dans mon code VBA la validation de certaines cellules avec un formule
    comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
           Worksheets(feuille).Cells(i, colnom).Select
           With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:= _
            "SI($B4=GRP_HUILE;LISTE_GRP_HUILE;SI($B4=GRP_HY;LISTE_GRP_HY;SI($B4=GRP_HE;LISTE_GRP_HE;LISTE_GRP_AUTRE)))"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    ce qui marche très bien.

    Mais je dois revoir ma formule et elle devient dynamique (le référentiel des Noms à utiliser dans la formule étant lui même généré dynamiquement)
    ce qui veut dire que je voudrais tout simplement remplacé dans mon code la formule par une variable

    comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
           Worksheets(feuille).Cells(i, colnom).Select
           With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=Libformule
     
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With

    mon champ (string) Libformule est définit "à part" , pour l'instant j'ai juste remis exactement la même formule comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     libformule = "SI($B4=GRP_HUILE;LISTE_GRP_HUILE;SI($B4=GRP_HY;LISTE_GRP_HY;SI($B4=GRP_HE;LISTE_GRP_HE;LISTE_GRP_AUTRE)))"
    mais ça ne marche pas !!

    Merci d'avance pour votre aide

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    as tu pensé à mettre la ligne obligatoire (surtout pour les débutants) :

    en haut de TOUTES tes pages de codes ?

  3. #3
    Membre régulier
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 8
    Par défaut
    non en effet
    je vais voir si ça règle la chose.
    (mais au fait à quoi ça sert ?)

  4. #4
    Membre régulier
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 8
    Par défaut
    bon j'ai mis "Option Explicit" en début
    et j'ai rejoué mon code

    mon Problème reste le même
    au lieu de voir apparaître la liste voulue
    je vois ça
    Nom : BUG LISTE.jpg
Affichages : 440
Taille : 16,1 Ko

    ce qui m'embête c'est que le signe "=" disparait dans la mémorisation de la formule
    Ecran validation :
    Nom : formule KO.jpg
Affichages : 469
Taille : 44,5 Ko

    si je le remet dans la fenêtre de validation ça marche

    mais si je fais pareille dans le code
    en remettant le signe "="
    LibFormule = "=SI($B4=GRP_HUILE;LISTE_GRP_HUILES;LISTE_GRP_AUTRE)"

    ça plante avec le message sybillin "Erreur 1004"
    Nom : Message 1004.jpg
Affichages : 500
Taille : 19,5 Ko

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par lomaje Voir le message
    non en effet
    je vais voir si ça règle la chose.
    (mais au fait à quoi ça sert ?)
    Bonjour,

    Option Explicit , "oblige" l'utilisateur à déclarer les variables ... et permet de mettre en évidence des erreurs de portées de variables par exemple ... vu que tu ne nous as pas montré comment et ou tu déclare ta variable LibFormule j'ai pensé que Option Explicit pourrai mettre en évidence une éventuelle erreur de portée... mais vu ton nouveau message ce n'est pas le cas....


    Avec ta formule à la mode anglaise .. cela ne passe pas mieux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     (...) Formula1:= _
            "=IF($B4=GRP_HUILE,LISTE_GRP_HUILE,IF($B4=GRP_HY,LISTE_GRP_HY,IF($B4=GRP_HE,LISTE_GRP_HE,LISTE_GRP_AUTRE)))"
    (...)

  6. #6
    Membre régulier
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 8
    Par défaut pas mieux
    je viens d'essayer en anglais cela ne change rien

    bon j'ai résolu mon problème autrement
    en définissant mes LISTEs dynamiques par formule dans de nouvelles cases et en faisant référence
    directement dans mon champ destinataire à la validation comme ceci
    Nom : formule indirect.jpg
Affichages : 483
Taille : 43,8 Ko

    et où je détermine mes Listes dynamiquement dans les cellules des colonnes B et C.

    c'est plus dynamique qu'en passant par une Macro finalement.

    Mais je ne désespère pas de trouver la solution à mon problème d'origine
    je vais tenter un autre truc ..

  7. #7
    Membre régulier
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 8
    Par défaut toujours pas de résultat
    bon, je viens de tester un tas de truc
    entre-autre de changer le type de ma variable Libformule de 'string' en 'autre chose' dans lequel je pourrais mettre ma formule ... mais pas de résultat ...
    SNIF

Discussions similaires

  1. Message de validation des données par JSF
    Par rc.dev2009 dans le forum JSF
    Réponses: 6
    Dernier message: 27/07/2011, 17h55
  2. Tri de données par formules
    Par ericdev67 dans le forum Excel
    Réponses: 4
    Dernier message: 29/01/2011, 21h01
  3. Validation des données par liste
    Par Niagala dans le forum Excel
    Réponses: 4
    Dernier message: 10/11/2007, 10h11
  4. [PDO] afficher mes données par colonnes dynamiquement
    Par mariafan dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/07/2007, 09h52
  5. Réponses: 1
    Dernier message: 14/02/2007, 08h14

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