Comment modifier une variable passée en paramètre d'une fonction ?

Résolu
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 - 1 déc. 2010 à 22:21
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 - 2 déc. 2010 à 00:40
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

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
1 déc. 2010 à 23:47
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]
3
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
1 déc. 2010 à 22:25
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
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
1 déc. 2010 à 22:28
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

0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
2 déc. 2010 à 00:40
Le ByRef suffit t'a raison; pfffff
Mille excuse !
0
Rejoignez-nous