Comment modifier une variable passée en paramètre d'une fonction ? [Résolu]

Signaler
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
-
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
-
Bonsoir !!!

Dans mon exemple, j'essaie de modifier la variable rtClipBoard
déclaré dans mon Sub par l'intermédiaire de la fonction Analyser.
Ça ne fonctionne pas, comment faire ?
Je pensais que ByRef s'occupait de tout !

Sub Main()
    Dim rtClipBoard As String = "ABCD"
    'DEVRAIT AFFICHER DCBA
    Msgbox(Analyser(rtClipBoard:=rtClipBoard))
End Sub

Function Analyser(ByRef rtClipBoard As String) As Boolean
    rtClipBoard = "DCBA"
End Function

4 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,

et bin çà marche non?
j'ai bien le retour DCBA en tout cas...

ps : la syntaxe rtClipBoard:=rtClipBoard est à utiliser pour les arguments optional, ce qui n'est pas le cas !

ps : en vb.net on ne fait pas msgbox mais messagebox.show

[hr]
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
3
Correction:
Sub Main()
    Dim rtClipBoard As String = "ABCD"    
    If Analyser(rtClipBoard:=rtClipBoard) = True Then
        'DEVRAIT AFFICHER DCBA
        Msgbox(rtClipBoard)
    Else
        'DEVRAIT AFFICHER ABCD
        Msgbox(rtClipBoard)
    End If
End Sub

Function Analyser(ByRef rtClipBoard As String) As Boolean
    If rtClipBoard = "" Then Return False
    rtClipBoard = "DCBA"
    Return True
End Function
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
3
c pas vrai; fatigué !

Sub Main()
    Dim rtClipBoard As String = "ABCD"
   
    If Analyser(rtClipBoard:=rtClipBoard) = True Then
        'DEVRAIT AFFICHER DCBA
        'Si rtClipBoard = "ABCD"
        Msgbox(rtClipBoard)
    Else
        'DEVRAIT AFFICHER ABCD
        'Si rtClipBoard = ""
        Msgbox(rtClipBoard)
    End If
End Sub

Function Analyser(ByRef rtClipBoard As String) As Boolean
    If rtClipBoard = "" Then
        rtClipBoard = "ABCD"
        Return False
    Else
        rtClipBoard = "DCBA"
        Return True
    End If
End Function

Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
3
Le ByRef suffit t'a raison; pfffff
Mille excuse !