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 :

VBA et modules


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut VBA et modules
    Bonsoir , dans excel je fais Outils > Macro > VBE .

    Ensuite je fais Insertion > Module .

    J'ai tapé un code dans la fenêtre et voici exactement ce qu'il en est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Option Explicit
    Function addition(ByVal a As Integer, ByVal b As Integer) As Integer
    'Renvoie: la somme de a et de b
    addition = a + b
    End Function
    C'est une fonction qui calcule donc la valeur de a+b et voici mes questions :

    1.Pour tester cette fonction , je dois enregistrer le module oui ou non ? Si oui comment l'enregistrer .

    2.Le Option explicit ne va t'il pas embrouiller le code car c'est un truc par défaut ?

    3.A en regarder le code , une fonction en visual basic se définit par "function "nom_de_fonction"(Byval..As...) , alors je suppose que le As sert à définir le type de la donnée mais le ByVal il sert à quoi ?

    4.le 'Renvoie , c'est un commentaire ? Un commentaire en vb commence tjs donc par ' ?

    5.Une fonction en vb ne fait que renvoyer une valeur on est d'accord ?

    merci de vos éclaircissements .

  2. #2
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    Citation Envoyé par Maxence45 Voir le message
    Bonsoir , dans excel je fais Outils > Macro > VBE .

    Ensuite je fais Insertion > Module .

    J'ai tapé un code dans la fenêtre et voici exactement ce qu'il en est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Option Explicit
    Function addition(ByVal a As Integer, ByVal b As Integer) As Integer
    'Renvoie: la somme de a et de b
    addition = a + b
    End Function
    C'est une fonction qui calcule donc la valeur de a+b et voici mes questions :

    1.Pour tester cette fonction , je dois enregistrer le module oui ou non ? Si oui comment l'enregistrer .

    2.Le Option explicit ne va t'il pas embrouiller le code car c'est un truc par défaut ?

    3.A en regarder le code , une fonction en visual basic se définit par "function "nom_de_fonction"(Byval..As...) , alors je suppose que le As sert à définir le type de la donnée mais le ByVal il sert à quoi ?

    4.le 'Renvoie , c'est un commentaire ? Un commentaire en vb commence tjs donc par ' ?

    5.Une fonction en vb ne fait que renvoyer une valeur on est d'accord ?

    merci de vos éclaircissements .
    Bonsoir,
    réponses:
    1) pour tester la fonction il faudra l'appeler par exemple dans le cadre dans sub

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Public a, b As Integer
    Function addition(ByVal a As Integer, ByVal b As Integer) As Integer
    'Renvoie: la somme de a et de b
    addition = a + b
    End Function
     
    Sub resultat()
    Dim calcul As Integer
    calcul = addition(1, 2)
    MsgBox (calcul)
    End Sub
    ainsi dans cette macro j'ai appelé la fonction "addition" en donnat à a et b respectivement les valeurs 1 et 2 ce qui me donne un résultat de 3 dans un Msgbox.

    donc tu dois créer une macro pour pouvoir enregistrer ton module.

    2)option explicit:
    est une Instruction utilisée au niveau module pour imposer la déclaration explicite de toutes les variables de ce module.
    donc c'est un moyen de contrôler ton programme, Si tu tentes d'utiliser un nom de variable non déclarée, une erreur se produit à la compilation.

    tu peux là supprimer si tu veux.

    3)Byval:
    signifie que l'argument est passé par valeur.

    Par valeur est un Moyen permettant de passer à une procédure la valeur d'un argument plutôt que son adresse. La procédure peut de ce fait accéder à une copie de la variable. La valeur réelle de cette dernière n'est donc pas modifiée par la procédure à laquelle elle est passée.

    4) oui pour écrire un commentaire t'es obligé de le faire précéder par un ' sinon il sera interpréter comme du code et par conséquent erreur de compil...

    5) pas nécessairement, une fonction peut aussi renvoyer un tableau

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    je débute en VBA donc le "sub" dont tu parles c'est trop avancé pour moi , c'est mon 1er code , mais on me demande de tester la fonction avec des paramètres quelconques , donc dans une cellule j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =Classeur1!Module1.addition(5;6)
    et çà me met erreur de compilation : type défini par l'utilisateur non défini .

  4. #4
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    excuses moi mais c la première fois que je découvre ça

    pourquoi tu mets dans la cellule =classeur1!module1.addition...

    c quoi ton but

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    Moi dans mon livre de cours ils me demandent de tester la fonction en choisissant des paramètres quelqueconques et il n'est nullement préciser d'enregistrer le module , on m'a juste dit de vérifier la présence de la fonction dans la catégorie personnalisées des fonctions excel , donc je l'ai fait et j'ai bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Classeur1!Module1.addition()
    et à la question d'après ils me disent de tester la fonction avec un tableau , par exemple en colonne 1 et 2 j'ai :

    a et b , en colonne 3 j'ai =a+b et en colonne 4 j'ai =addition(a;b) , et c'est censé me donner le résultat dans les cellules .

  6. #6
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    ok, maintenat je vois,

    chez moi ça marche bien

    j'ai mis ton code dans un module;

    et puis dans la cellule A1:
    =addition(1;2)
    j'ai bien 3

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    je suis ravie que celà marche chez toi mais tu pourrais pas me dire comment faire pour que çà marche chez moi lol

  8. #8
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    bon,
    tu ouvres un nouveau classeur

    tu insères un module :
    tu écris ton code

    une fois fait

    tu vas dans la feuille excel, tu choisis par exemple A1
    =addition(1;2)
    ça donne 3 : impressionant non

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    mais non je t'ai dit que j'avais une rerreur de compilation .

    voici exactement moi les manip que je fais depuis le départ , donc je lance excel , je fais macro , vbe , insert , module , je tape mon code , et ensuite je fais comme t'as dit , je vais dans une cellule , je tape =addition(1;2) et j'ai donc ce message d'erreur :

    type défini par l'utilisateur non défini .

  10. #10
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    voilà mon fichier
    regardes si ça marche chez toi

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    je m'excuse mais je prends pas les autres fichiers des internautes ( et merci de ne pas mal le prendre !) , j'aimerais juste savoir ce qui ne va pas chez moi , j'ai donné précisément mes manips...

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    je précise que quand je mets ma formule dans une cellule j'ai ce message d'erreur #NOM?

  13. #13
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    Citation Envoyé par Maxence45 Voir le message
    je précise que quand je mets ma formule dans une cellule j'ai ce message d'erreur #NOM?
    tu t'es trompé de nom de formule je crois. regardes c juste une faute de frappe peut être.

    mais tu m'étonnes

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    j'ai bien vérifié , et j'ai bien tapé la meme fonction dans la cellule et le module vbe...

  15. #15
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    on va vérifier quelque chose:
    tu vas dans le menu Visual Basic dans outils\References et tu me dis ce qui est coché
    même si j'en doute fort que ça vient de là

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    alors voila ce qui est coché :

    visual basic for applications

    microsoft excel 9 objet library

    OLE AUTOMATION

    microsoft officie 9 object library

    Je précise aussi que quand je vais dans le menu de excel , que je fais instertion , fonctions , personnalisées et que je vois =Classeur1!Module1.addition() , çà me note en dessous :

    Impossible de traiter votre question . Soit microsoft excel ne trouve pas de fonction équivalente , soit l'aide n'est pas installée .

  17. #17
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    jai la même chose mais ça marche

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    :'( , je précise une autre chose c'est que je n'ai pas enregistré le module , vbe est tjs ouvert avec le code dedans...

  19. #19
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    ce n'est pas un pbm,
    tu enregistres ton fichier et la fonction est enregistrée dans le module pas de soucis
    par contre je vois pas la solution à ton problème

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    bon pas grave je te remercie pour ton aide , on va voir si quelqu'un d'autre a une idée...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA]Import modules de classe dans Access 2003
    Par pht33 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/04/2007, 15h45
  2. [VBA|EXcel]Moduler les colonnes d'un tableau
    Par quario dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/03/2007, 17h09
  3. Réponses: 2
    Dernier message: 31/05/2006, 15h13
  4. [VBA]Ajout module impossible
    Par ip203 dans le forum Access
    Réponses: 1
    Dernier message: 19/05/2006, 10h19
  5. Réponses: 9
    Dernier message: 08/03/2006, 16h04

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