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 :

Transformer un sub() en fonction


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Par défaut Transformer un sub() en fonction
    Bonjour,

    Je souhaiterais transformer un sub() en une fonction afin de l'utiliser pour differents projets.
    Etant debutant en vba, j'arrive pas à creer la fonction, je tombe sur diffrents messages d'erreurs! sachant que mon sub() marche très bien!
    D'après ce que j'ai pu comprendre sur les forums, une procédure 'function' doit toujours envoyer une valeur, et c'est la ou je trouve des difficultés, car dans ma procédure sub() je change le format d'une cellule/plage après une comparaison (mettre en gras, changer le interior.ColorIndex ...), donc pas de valeur a renvoyer!

    Dans mon projet j'ai utilisé des dictionnaires pour eviter de faire des boucles for (j'effectue une recherche par clé ) afin d'optimiser le temps d'execution de ma macro.

    En pj vous trouvez la macro, le code est bien commenté!
    Dans le commentaire je met en evidence les procédures que j'aimerais changer en fonction.

    Si quelqu'un pourrait me donner un exemple sur comment transformer une seule de ces procédures en fonction, afin que je puisse l'appliquer sur le reste des procédures!

    le code se trouve dans la feuille "control board"

    Merci d'avance pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour, bonjour,

    que de confusion ! Pas besoin de transformer une procédure en fonction pour l'appliquer à d'autres projets ‼
    Rien à voir !

    S'il n'y a rien à renvoyer, ce n'est donc pas une fonction mais bien une procédure !

    Rien qu'en consultant l'aide VBA de Sub & Function

    Et pour répondre plus précisément, une présentation claire & exhaustive s'impose, avec le code !

  3. #3
    Membre confirmé
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Par défaut
    Bonjour Marc_L,

    Si tu regarde le nombre de ligne de code dans mon projet principal, tu comprends pourquoi j'aimerais faire ca sous forme d'une fonction.
    Je travaille sur un projet aeronautique, les attributs peuvent etre une centaine, le fichier joint n'est qu'un petit exemple.
    Mon besoin est, vu que la meme procédure se repète pour chaque attribut, et pour d'autre projets aussi, est juste d'optimiser le temps pour coder tout ca, et si d'autres collègues veulent appliquer les memes fonctionalités, qu'il auront pas besoin de re'coder tout ca.

    Maintenant si ce n'est pas possible, on tombe dans l'obligation de coder ca à la main!

    Merci

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Pour être tout à fait clair, cela n'a rien à voir qu'un code soit une fonction ou pas pour l'utiliser dans d'autres projets !

    Toutes mes procédures sont utilisables dans n'importe quel projet si j'en prévois les paramètres,
    c'est donc juste une question de contexte, de logique, de conception …

    S'il n'y a rien à renvoyer, ce n'est donc pas une fonction.
    Suffit de mettre à plat ce qui doit être passé en paramètre …

  5. #5
    Membre confirmé
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Par défaut
    Tu as tout a fait raison! mes competances en programmation sont limités!
    mon besoin est plutot de créer une procédure generale qui prend des paramètres, mais surtout pouvoir utiliser une procédure au sein d'une autre procédure.

    Je pense avoir compris ce que je dois faire, si je bloque je reviens vers vous!

    Merci en tout cas!

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 181
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Oui, mais une fonction peut-être appelée comme une SUB
    Exemple avec MsgBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox "Message", vbCritical + vbOKCancel
    response = MsgBox("Message", vbCritical + vbOKCancel)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Transformer structure (argument de fonction) de C++ vers Python avec swig
    Par developers dans le forum Interfaçage autre langage
    Réponses: 0
    Dernier message: 20/07/2010, 11h44
  2. [DOM] éviter la transformation des & avec la fonction setAttribute
    Par Gregco dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 27/10/2008, 08h36
  3. Réponses: 7
    Dernier message: 18/05/2008, 09h11
  4. Transformer une String en fonction
    Par Jevil dans le forum MATLAB
    Réponses: 12
    Dernier message: 07/02/2008, 23h46
  5. procedure sub ou fonction non definie
    Par monopole dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 15/09/2006, 14h37

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