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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

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

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