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 :

Utiliser arguments/attributs des fonctions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut Utiliser arguments/attributs des fonctions
    Bonjour à tous!
    Comment peut-on se servir des arguments des fonctions? Cette facon ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub fonctionA()
    Dim NomE as variant
    Dim AbsRet as variant
    NomE = sheets("feuil1").range("B4").value
    AbsRet = sheets("feuil1").range("B5").value
    fonctionB("NomE,AbsRet")
    EndSub
     
    Sub fonctionB(NomE, AbsRet)
    MsgBox (NomE & AbsRet)
    End Sub

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    bonjour

    1) quand tu parle de fonction tu ne devrait pas avoir Sub mais Function

    2) en appelant ta routine tu utilisait fonctionB("NomE, AbsRet") ce qui ne fait qu'un argument


    essaye ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub fonctionA()
      Dim NomE As Variant
      Dim AbsRet As Variant
      NomE = Sheets("feuil1").Range("B4").Value
      AbsRet = Sheets("feuil1").Range("B5").Value
      Call fonctionB("NomE", "AbsRet")
    End Sub
     
    Sub fonctionB(NomE, AbsRet)
      MsgBox (NomE & AbsRet)
    End Sub
    bonne journée

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 45
    Par défaut
    Bonjour,


    D'après ce que je vois ce que tu as défini n'est pas un fonction mais une procédure pour l'appeler utilise l'instrction call devant fonctionB("NomE,AbsRet"). Su tu veux définir une fonction il utiliser le mot clé function à la place de sub et le fonction doit retourner une valeur.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    bonjour Hagendorf

    pour information une fonction n'a pas pour obligation de renvoyer une valeur.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut
    Non, je veux bien que ca lance une procédure et pas que ca me retourne une valeur.
    En fait, plus concrètement, le code est le suivant:
    Une partie de code dans le code de la feuille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim FinLign As Integer
    FinLign = Sheets("Accueil").Range("B11").Value
    Dim NomE As Variant
    Dim AbsRet As Variant
    For i = 9 To FinLign
      If Target.Address = Range("J" & i).Address Then
        NomE = Sheets("Accueil").Range("H" & i).Value
        AbsRet = Sheets("Accueil").Range("F" & i).Value
        Call EnvoyerCourrier("NomE", "AbsRet")
      End If
    Next
    End Sub
    et une autre dans un module:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub EnvoyerCourrier(NomE, AbsRet)
    MsgBox (NomE & AbsRet)
    End Sub
    l'application est censée m'afficher un msg lorsque je clique sur certaines lignes de la colonne J...mais cela ne marche pas! Je me dis que ca doit etre un pb de transmission d'argument entre les 2 procédures, ou un probleme de définition de variable entre les 2 procédures, ou alors que ce soit du au fait que les 2 procédures ne sont pas dans la meme page code! Qu'en pensez-vous?

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Target.address renvoie un adress du type $J$20 que tu compare a une adresse du type J20 c'est pour cela qu'il ne le reconnais pas

    essaye plutôt ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim FinLign As Integer
      Dim NomE As Variant
      Dim AbsRet As Variant
      FinLign = Sheets("Accueil").Range("B11").Value
      If Not (Intersect(Target, Range("J9:J" & Finlign)) Is Nothing) Then
        NomE = Sheets("Accueil").Range("H" & Target.Row).Value
        AbsRet = Sheets("Accueil").Range("F" & Target.Row).Value
        Call EnvoyerCourrier("NomE", "AbsRet")
      End If
    End Sub
    je n'est pas eu le temps de tester mais ça devrait fonctionner

Discussions similaires

  1. [Débutant] Utiliser des listes en argument d'une fonction
    Par erkenbrand dans le forum Windows Forms
    Réponses: 10
    Dernier message: 29/05/2008, 12h56
  2. [Xml/XSl] utiliser des fonction vb
    Par ekmule dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/01/2006, 17h28
  3. [hibernate] utilisation des fonctions d'aggregation
    Par osopardo dans le forum Hibernate
    Réponses: 2
    Dernier message: 29/08/2005, 09h41
  4. utilisation des fonctions d'une dll
    Par jackk dans le forum C++
    Réponses: 14
    Dernier message: 15/06/2005, 16h50
  5. Utiliser des fonctions Pascal
    Par Neilos dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/03/2004, 15h43

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