Pramettres en VB macro excel

bonjour -  
 bonjour -
Bonjour,

comment on fait pour passer un paramettre a un sub ou a une fonction ?

sub toto()
...
truc(TT,YY)
....
end sub

fonction truc(gfdgfd,gfgd)
....
end fonction ???

merci

12 réponses

  1. nebulus Messages postés 47 Statut Membre 4
     
    Salut,

    Un petit exemple inutile mais juste pour illustrer ;-))
    Sub ma_sub_1()
       Call ma_sub_2("world")
    End Sub
    
    Sub ma_sub_2(mon_param)
      MsgBox ("hello " & mon_param)
      MsgBox (ma_func1(5, 9))
    End Sub
    
    Function ma_func1(param1, param2)
      ma_func1 = param1 + param2
    End Function
    


    @+
    Nebulus
    En route pour de nouvelles aventures !
    0
  2. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    salut, petit exemple...

    Private Sub GetTotal()
       Dim curTotal As Currency
       Dim sngDisc As Single
    
      ................................
    
       Call SalesTax(curTotal, sngDisc)
    End sub
    
    Public sub salesTax(curTotal As Currency, sngRateDisc As single)
        Dim intMsg As Integer
     .....................................
    
       intMsg = MsgBox("Taxation Totale : " & curTotal)
    
    
    End sub
    
    
       


    voilà, ça veut pas dire grand chose, mais c'est la technique...

    Le nom des variables passées ne doit pas correspondre forcément au nom des arguments reçus, par contre le type des données doit être identique.

    Il existe deux méthode de passage d'arguments, par référence et par valeur. Par référence étant la méthode par défaut, ce qui signifie que la procédure appelée peut modifier les arguments de la procédure appelante. L'autre méthode étant le passage par valeur, la procédure appelée ne peut pas modifier les arguments. La signature de la méthode est différente...

    Public sub salesTax(ByVal curTotal As Currency, ByVal sngRateDisc As single)


    voilà 8)

    ChoubaPostor 10000 :
    Le soulèvement des modos.
    0
    1. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
       
      oups, sorry, j'ai été un peu lent sur le coup

      ChoubaPostor 10000 :
      Le soulèvement des modos.
      0
  3. bonjour
     
    bon ben ca marche pas terrible j'ai oublié un truc ?

    Sub toto()
    nom = "BX"
    coment = "HS"
    datage (nom_serveur)
    End Sub

    Function datage(veur As String)
    For x = 2 To 100
    If Cells(1, x).Value <> "" Then
    If Cells(1, x).Value = veur Then
    Cells(Day(Date) + 1, x).Value = Date
    Cells(Day(Date) + 1, x).Select
    If commentaire <> "" Then
    Selection.Interior.ColorIndex = 37
    End If
    End If
    End If
    Next x
    End Function

    ca ca marche

    Sub toto()
    nom_serveur = "BX"
    coment = "HS"
    datage (nom,coment)
    End Sub

    Function datage(veur As String, commentaire As String)
    For x = 2 To 100
    If Cells(1, x).Value <> "" Then
    If Cells(1, x).Value = veur Then
    Cells(Day(Date) + 1, x).Value = Date
    Cells(Day(Date) + 1, x).Select
    If commentaire <> "" Then
    Selection.Interior.ColorIndex = 37
    End If
    End If
    End If
    Next x
    End Function

    comment on fait pour passer 2 paramettres a une fonction ?
    0
    1. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
       
      ça ? ça marche?

      datage (nom_serveur, coment)


      ChoubaPostor 10000 :
      Le soulèvement des modos.
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. bonjour
     
    oups erreur de nom de variables,
    mais la ca marche pas si je mets un deuxieme paramettre
    la ligne
    datage(nom_serveur,coment) repond "syntaxe erreur"

    alors qu'elle marche avec un seul des paramettres pourquoi ?
    0
  6. bonjour
     
    autant dire que
    datage (nom_serveur, coment) -> syntaxe erreur
    avec la ligne :
    Function datage(veur As String, commentaire As String)

    alors que datage (nom_serveur) marche avec la ligne
    Function datage(veur As String)

    donc je comprend pas pourquoi
    0
  7. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    il est fort possible que le problème se trouve au coeur même de ta mfonction datage, dans ton premier essai où "commentaire" est testé, je ne vois pas à quoi celà fait référence. alors que dans le deuxième essai, commentaire est passé en argument, et là ça foire.. Je pense donc que le problème vient de là..

    ChoubaPostor 10000 :
    Le soulèvement des modos.
    0
  8. bonjour
     
    non c'est pas le probleme commentaire fixé a la main (donc 1 seul parametre) ca marche

    si je passe le paramettre ca marche pas

    c'est donc bien la syntaxe

    nomdefonction(arg,arg) qui n'est pas bonne...
    0
  9. nebulus Messages postés 47 Statut Membre 4
     
    En déclarant la fonction comme ceci :
    Function datage(veur, commentaire)
    (donc sans les "as string") ça passe non ?

    @+
    Nebulus
    En route pour de nouvelles aventures !
    0
  10. bonjour
     
    non plus
    c'est pareil des que je tape
    datage(XXXXXXX,YYYYYYY) ca repond syntaxe erreur
    meme sans mettre de variable dedant mais directement des valeurs c'est pareil :

    une function ne doit pas pouvoir se lancer comme une fonction
    x=datage(tttt,fffff)
    passe en syntaxe
    mais biensur ne peut pas s'executer correctement

    donc la syntaxe c'est autre chose .....
    0
  11. bonjour
     
    j'ai trouvé c'est comme ca

    Function datage(serveur, commentaire)
    For x = 2 To 100
    If Cells(1, x).Value <> "" Then
    If Cells(1, x).Value = serveur Then
    Cells(Day(Date) + 1, x).Value = Date
    Cells(Day(Date) + 1, x).Select
    If commentaire <> "" Then
    Selection.Interior.ColorIndex = 37
    End If
    End If
    End If
    Next x
    End Function

    Sub toto()
    nom_serveur = "DI"
    coment = "TEST"
    Call datage(nom_serveur, coment)
    End Sub

    en fait c'est parceque cette merde d'excel ne sait pas appeler une fonction comme un mot clé...

    apres la 11eme version ....

    bref encore à cause de la logique M$ ...
    Je veux rebosser sur des projets unix .....ouinnnnn....j'aurrai jamais du accepter de donner un coup de main sur ce tableau excel
    0