Public Function findtag(ByRef texte As String, ByRef layer As Integer, ByVal tagfin As String) As String Dim temp As String, L1 ' sert à prendre les les "lignes" de la variable une par une jusquà ce qu'elle rencontre ' le tag de fin, ici fin de layer While temp <> tagfin position = InStr(1, texte, ">") L1 = Left$(texte, position + 1) b = InStr(L1, "<") temp = Mid(L1, b, 8) layer = layer + L1 texte = Mid(texte, position + 3) Wend End Function
Public Sub Form_Load Dim strRetour As String Dim Var1 As Long Dim Texte As String ' Ou tu pourrait les mettres dans un module pour garder leur valeurs globalement. Dim Layer As Integer ' Les deux variables pourraient être du même type et cela ne changerait rien. Texte = "blablabla" Layer = 24 Var1 = 32814 strRetour = MaFct(Texte, Layer, Var1) If (LenB(strRetour) > 0) Then MsgBox "Erreur!" Exit Sub 'Else End If Debug.Print Texte ' machiavel est méchant Debug.Print Layer ' 47 Debug.Print Var1 ' 32814 pourquoi? simplement pcq la variable as été reçue par valeur dans la fonction plutôt que par référence, et par ce fait sont contenu n'as pas été changé ici. 'Ici Debug.Print est juste un exemple, tu peux utiliser tes variables comme tu le veux. End Sub Public Function MaFct(ByRef InTexte As String, ByRef InLayer As Integer, ByVal Bidule As Long) As String '... du traitement InTexte = "machiavel est méchant" '... autre chose InLayer = 47 Bidule = 64 '... MaFct = VBNullString End Function