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 :

Restreindre valeurs des paramètres appelés par une fonction


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Restreindre valeurs des paramètres appelés par une fonction
    Bonjour à tous,

    Petit problème qui se pose à moi malqré quelques heures de recherche sur internet:
    Afin d'éviter les erreurs de saisie, est il possible de restreindre les valeurs des paramètres appelés par une fonction? Autrement dit, en considérant une fonction:

    function fonction1 (paramètre1 as string, paramètre2 as string) as boolean

    est il possible d'afficher un menu déroulant lorsque vient la saisie du paramètre1? Ce menu déroulant comprendrait une liste de noms définie au préalable et idéalement créée à partir de cellules sous excel.

    Je suis tombé sur l'instruction "enum" qui rempli parfaitement ce rôle... mais uniquement pour les valeurs de type "long" malheureusement...

    Si quelqu'un a une solution voire un début de piste, je serais volontiers preneur!

    Bonne journée!

    edit: ce message est il dans la bonne section? Il me semble que non... Dans ce cas est il possible de le déplacer dans la section "Macros et VBA Excel" ???

  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

    regarde les listes de validation. elle permettent de définir un certain nombre de critères numérique ou/et alphabéthique et d'en faire faire une liste affectée à une cellule

  3. #3
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,
    Afin d'éviter les erreurs de saisie, est il possible de restreindre les valeurs des paramètres appelés par une fonction? Autrement dit, en considérant une fonction:
    Je ne suis pas d'accord sur cette formulation. Il appartient au programmeur de s'assurer que les paramètres passés au code sont valides, tout comme leur nombre, leur type,....

    Sinon où va t'on.

    Donc, comme le dit Wilfried42, regarde du côté de la liste de validation si tu veux limiter la valeur d'un champ à certaines valeurs.

    Pour conclure, je voudrais ajouter personnellement qu'un code n'est vraiment blindé (pour paraphraser JPCheck) que s'il prévoit l'imprévisible, donc par exemple que dans ta cellulle tu auras une valeur qui n'est pas dans ta liste.

    C'est le même principe qu'un backup. Tant qu'on en a pas eu besoin, on ne croit pas trop à son utilité.

    C'est ça qui, entre autres, fait le succès et la longévité d'un code.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Disons que je programme un code qui pourra à terme être modifié par une tierce personne. C'est pour ca que je voulais faciliter et sécuriser la saisie. Je peux effectivement intégrer un test qui renvoie un message d'erreur dans le cas ou le paramètre saisi n'appartient pas à une liste mais c'est quand même moins pratique (d'autant plus que la fonction en question est amenée à être appelée probablement plus d'une centaine de fois....).

    Et puis avec l'instruction "Enum" cela ne semble possible pour le type "long" donc je suppose que cela est possible avec le type "string" ???

    J'ai bien pris en compte la réponse de wilfried_42 et je l'en remercie d'ailleurs mais malheureusement je ne vois pas comment rapprocher les listes de validations qui sont valables dans les cellules, aux paramètres des fonctions sous VBA...

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Re,

    est il possible d'afficher un menu déroulant lorsque vient la saisie du paramètre1? Ce menu déroulant comprendrait une liste de noms définie au préalable et idéalement créée à partir de cellules sous excel.
    j'ai un peu du mal à te suivre.
    Normalement sous excel, la plupart du temps, les données viennent des cellules (importés peut-être, mais égal).

    Donc les paramètres que tu passes à ta fonction viennent donc en principe aussi de cellules, ou de résultats de calculs sur des cellules.

    Donc si via la technique de Wilfried, tu sécurises le contenu de tes cellules servant de base aux params de ta fonction, tu as ta solution non ?

    Autrement dit si dans ton aquarium tu n'as que des poissons d'eau froide, à quoi bon prévoir un régulateur pour l'eau chaude ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    En fait non c'est un peu plus compliqué que ça. Pour simplifier voici ce que fait ma fonction en gros:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fonction1(paramètre1 as String) as Double
    Dans une feuille excel la colonne A contient des valeurs de type "String"et la colonne B des valeurs de type "Double"

    Fonction1 va rechercher des valeurs = paramètre1 dans la colonne A et renvoie les valeurs correspondantes de la colonne B.

    Bine entendu ma fonction est un peu plus complexe (j'aurais utilisé la fonction Excel RECHERCHE sinon...).

    Mais le fait est que je veux que celui qui viendrai à modifier le code (ou moi-même puisque je dois faire appel souvent à cette fonction) ne puisse pas se tromper en saisissant le paramètre1 et qu'une liste déroulante avec des valeurs prédéterminées apparaisse par exemple pour faciliter la saisie.

    Le problème semble assez simple mais il je n'ai pas trouvé de solution (et pourtant j'ai pas mal cherché sur internet!)

    En revanche à titre d'information ceci est facilement réalisable lorsque le paramètre est de type "Long" avec l'instruction "Enum"

  7. #7
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    regarder du côté de Mz-Tools peut-être, très riche et capacités de customization sans parler du reste...

    http://excel.developpez.com/outils/?page=vbe#mztools

    cordialement,

    Didier

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci de l'info. J'essayerai cet add-on chez moi. Malheureusement au bureau je ne peux pas l'installer (et je programme pour le boulot).....

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/04/2013, 17h15
  2. remplir des combo box par une fonction ?
    Par angelevil dans le forum VB.NET
    Réponses: 5
    Dernier message: 06/10/2010, 23h12
  3. perte de valeur dans l'appelle d'une fonction
    Par sgmsg dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/01/2009, 15h20
  4. script appellé par une fonction aveugle aux workspace
    Par Zhitoune dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 16/12/2008, 17h07
  5. Réponses: 6
    Dernier message: 09/01/2007, 01h15

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