Variable de sortie d'une macro

Bonjour,

Je suis en train de réaliser morpion en code VBA (oui je sais, mais on s'amuse comme on peut).

Afin d'éviter les répétitions de code, j'ai réalisé une sous macro me permettant de tester si il y a une série de trois symboles gagnantes, seulement voilà, si la réponse est oui je voudrais pouvoir aller directement à la fin du programme principale, or comme la fonction GoTo n'est pas applicable d'une Sub à une autre, je voulais savoir si il était possible que ma sous macro de test me renvoi une variable booléenne qui me permette alors de décider d'arréter ou non la procédure. Un peu à la façon d'une variable de sortie sous MatLab pour ceux qui connaissent.

Cordialement,

Bob

Bonjour,

Plusieurs façons de le faire :

1) Variable globale déclarée au début de la macro donc manipulable par les programmes et les sous-programmes

2) Faire une fonction à la place de sous-procédure et récupérer une variable booléenne en retour de fonction

3) Passer par un paramètre dans une procédure avec un mot clé ByRef

Si tu nous joignais une ébauche de fichier, on pourra mieux te conseiller.

bonjour oui cela est possible

voici une solution parmi plusieurs appel d'une fonction et non plus une sub....

exemple

Function test(i As Byte) As Boolean
If i < 3 Then
test = True
Else
test = False
End If
End Function

Sub toto()
Dim num As Byte
Dim retour As Boolean
For num = 1 To 15

    retour = test(num)
    If retour Then
        MsgBox ("num = " & num & " numéro inférieur a 3 continu")
    Else
        MsgBox ("num= " & num & " sup ou egal a 3 on quitte")
        Exit Sub
    End If
Next
End Sub

fred

Edit : Bonjour Raja !!

cela correspond donc à la proposition N°2 de Raja

Bonjour,

Hi... Collision...

A+

Bonjour à tous les deux,

Je n'ai pas posté le fichier car la macro est assez longue mais ça ressemble à ça :

Dim .... '(toutes les variables nécessaire au déroulement des boucles et conditions)'

Public Fin as Boolean

Sub Morpion

'Code permettant la saisie des cases, aussi bien par l'utilisateur que par le programme'

Call TestFin

If fin = 1 Then
GoTo Sortie
End If

'Autre morceau de code'

Sortie:

End Sub

Sub TestFin

Fin = 0

If 'Une ligne ou un colonne ou une diagonale ne contient que des croix' Then

Fin = 1

End If

End Sub

Seulement avec ce code le programme ne s'arrête pas lorsque l'on complète une série (ligne, colonne ...).

J'essaie la solution utilisant Function et je vous tiens au courant,

Merci de la réponse rapide en tout cas.

Ca marche avec Function, j'ai pas mal galéré come je testait ma Booléenne sur 0 et 1 au lieu de True et False mais sinon ça marche. Merci du coup de main, j'avoue que je me servais jamais de function ^^

Si ça vous intéresse je vous mettrai le programme une fois terminé, pour l'instant il l'IA est réduite à un choix aléatoire pour la pose de ses coups.

Merci, et bonne soirée

Rechercher des sujets similaires à "variable sortie macro"