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][Excel] appel de fonction


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Points : 451
    Points
    451
    Par défaut [VBA][Excel] appel de fonction
    Bonjour à tous
    une petite question de débutant
    lorsque on écris une fonction on est obliger de mettre une fonction qui renvoi quelque chose ?
    en d'autre terme j'aimerais faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fonction(parmetre1,parametre2)
    Puis ma fonction écrite ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Function fonction(parametre1,parametre2)
    parametre1=1
    parametre2=2
    or quand j'ecris ca il me met Attendu = lors de l'appel de la fonction; suis je obligé de faire ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    test=fonction(parametre1,parametre2)

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Points : 451
    Points
    451
    Par défaut
    mais cela va me faire utiliser des variables pour rien
    finalement je vais peut etre faire ce traitement en faisant appel à une fonction

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Si tu n'as pas besoin que la fonction te renvoie quelque chose, remplace-la par une Sub

    A+

  4. #4
    Membre du Club
    Homme Profil pro
    Supply Chain Manager
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Supply Chain Manager

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Points : 40
    Points
    40
    Par défaut
    VB ou VBA?

    Peut-être es-tu en train de confondre procédure et fonction. La fonction retourne toujours quelque chose (d'où la syntaxe test=function), contrairement à la procédure qui elle ne retourne rien.

    Clair?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par ouskel'n'or
    Si tu n'as pas besoin que la fonction te renvoie quelque chose, remplace-la par une Sub
    le probleme c'est que si je fais ca je vais devoir "appeler" la macro (=Outils/Macro/Macro) or j'aimerai limiter le nombre d'appel aux macros


    Citation Envoyé par Raklham
    VB ou VBA?
    Vba. J'ai fais du C et on a l'habitude de faire pour chaque traitement une fonction mais en C il y a la possibilité pour une fonction d'etre vois (=qui ne retourne rien) alors je voulais savoir si c'étais possible en VBA mais à priori non
    En fait que veut tu dire par porcédure?

  6. #6
    Expert éminent sénior


    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
    Points : 20 040
    Points
    20 040
    Par défaut Re: appel de fonction
    Citation Envoyé par Nom
    Bonjour à tous
    une petite question de débutant
    lorsque on écris une fonction on est obliger de mettre une fonction qui renvoi quelque chose ?
    en d'autre terme j'aimerais faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fonction(parmetre1,parametre2)
    Puis ma fonction écrite ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Function fonction(parametre1,parametre2)
    parametre1=1
    parametre2=2
    or quand j'ecris ca il me met Attendu = lors de l'appel de la fonction; suis je obligé de faire ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    test=fonction(parametre1,parametre2)
    par défaut en VBA les paramétres sont donnée "ByRef" et tu peu donc agir sur les variables...


    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
    16
    17
    18
    19
    20
    Function Swap(ByRef a As Integer, ByRef b As Integer) As Boolean
     Dim x As Integer
     
     x = a
     a = b
     b = x
     
     Swap = True
    End Function
     
    Sub Test()
      Dim m_A As Integer
      Dim m_B As Integer
      m_A = 1
      m_B = 2
      Debug.Print " Avant appel , A = " & m_A & " .... B = " & m_B
      Debug.Print "Appel de Swap = " & Swap(m_A, m_B)
      Debug.Print " aprés appel , A = " & m_A & " .... B = " & m_B
     
    End Sub
    tu n'est pas obligé d'utiliser la valeu de retour d'une fonction et tu peu donc écrire ..
    ou créer un procédure qui elle ne renvoi rien..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Swap(ByRef a As Integer, ByRef b As Integer)
     Dim x As Integer
     x = a
     a = b
     b = x
    End Sub
    avec le même code d'appel :


  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Points : 451
    Points
    451
    Par défaut
    encore une petite question qui n'a pas grand chose à voir mais ca vaut pas la peinr de faire un nouveau sujet pour ca

    pour définir une zone en vba j'utilise ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    'definition de la zone "zone"
        ActiveWorkbook.Names.Add Name:="zone", RefersToR1C1:= _
            "=Feuil1!R4C2:R8C2"
    et j'aimerai faire plutôt ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    i=8
    'definition de la zone correspondant à la semaine1
        ActiveWorkbook.Names.Add Name:="semaine1", RefersToR1C1:= _
            "=Feuil1!R4C2:RiC2"
    mais cela n'a pas l'air de prendre en compte le i

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    "=Feuil1!R4C2:RiC2"
    mais cela n'a pas l'air de prendre en compte le i
    En effet. Je n'ai pas essayé mais essaie de mettre ta référence de plage dans une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Adresse = "=Feuil1!R4C2:R" + cstr(i) + "C2"
    ActiveWorkbook.Names.Add Name:="semaine1", RefersToR1C1:=Adresse
    A+

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Points : 451
    Points
    451
    Par défaut
    Exact ca marche
    merci

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

Discussions similaires

  1. [VBA-Excel] appelle fonction ayant plusieurs paramètres
    Par thierryyyyyyy dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 26/02/2007, 17h01
  2. [VBA-Excel] Appel de diapo powerpoint + Message Macro
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/11/2006, 12h06
  3. [VBA] Excel : Appel de fonction au clique sur un boutton
    Par nanu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/09/2006, 19h30
  4. [VBA-E] Appel de fonction/procédure depuis une variable
    Par truman dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/05/2006, 16h20
  5. VBA Excel : Appel d'un userform à l'aide d'une variable
    Par pierrot657 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/06/2005, 23h08

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