Code pour les boutons "Suivant" et "Précédent"

cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004 - 1 nov. 2004 à 14:20
cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004 - 2 nov. 2004 à 15:31
Bonjour à tous.

J'ai une Form avec 2 boutons et 13 frames nomées Etape1 à Etape13.

j'ai trouvé 2 façon de faire pour que lorsque l'on clic sur le bouton suivant, on passe d'une frame à l'autre.

Si vous trouvez un méthode plus simple, plus rapide je suis preneur.

merci

1er méthode (avec des if):

Private Sub Suivant_Click()

If Etape1.Visible = True Then

Precedent.Enabled = True
Etape1.Visible = False
Etape2.Visible = True

ElseIf Etape2.Visible = True Then

Etape2.Visible = False
Etape3.Visible = True

ElseIf Etape3.Visible = True Then

Etape3.Visible = False
Etape4.Visible = True

ElseIf Etape3.Visible = True Then

Etape3.Visible = False
Etape4.Visible = True

ElseIf Etape4.Visible = True Then

Etape4.Visible = False
Etape5.Visible = True

ElseIf Etape5.Visible = True Then

Etape5.Visible = False
Etape6.Visible = True

ElseIf Etape6.Visible = True Then

Etape6.Visible = False
Etape7.Visible = True

ElseIf Etape7.Visible = True Then

Etape7.Visible = False
Etape8.Visible = True

ElseIf Etape8.Visible = True Then

Etape8.Visible = False
Etape9.Visible = True

ElseIf Etape9.Visible = True Then

Etape9.Visible = False
Etape10.Visible = True

ElseIf Etape10.Visible = True Then

Etape10.Visible = False
Etape11.Visible = True

ElseIf Etape11.Visible = True Then

Etape11.Visible = False
Etape12.Visible = True

ElseIf Etape12.Visible = True Then

Etape12.Visible = False
Etape13.Visible = True
Suivant.Enabled = False

End If

End sub


2eme méthode (avec salect case):

Public intCompteur as integer

Private Sub Form_Load()

intCompteur = 1
Precedent.Enabled = False

Etape1.Visible = True
Etape2.Visible = False
Etape3.Visible = False
Etape4.Visible = False
Etape5.Visible = False
Etape6.Visible = False
Etape7.Visible = False
Etape8.Visible = False
Etape9.Visible = False
Etape10.Visible = False
Etape11.Visible = False
Etape12.Visible = False
Etape13.Visible = False

End Sub

Private Sub Suivant_Click()

Select Case intCompteur

Case 1
    Precedent.Enabled = True
    Etape1.Visible = False
    Etape2.Visible = True
    intCompteur = intCompteur + 1
Case 2
    Etape2.Visible = False
    Etape3.Visible = True
    intCompteur = intCompteur + 1
Case 3
    Etape3.Visible = False
    Etape4.Visible = True
    intCompteur = intCompteur + 1
Case 4
    Etape4.Visible = False
    Etape5.Visible = True
    intCompteur = intCompteur + 1
Case 5
    Etape5.Visible = False
    Etape6.Visible = True
    intCompteur = intCompteur + 1
Case 6
    Etape6.Visible = False
    Etape7.Visible = True
    intCompteur = intCompteur + 1
Case 7
    Etape7.Visible = False
    Etape8.Visible = True
    intCompteur = intCompteur + 1
Case 8
    Etape8.Visible = False
    Etape9.Visible = True
    intCompteur = intCompteur + 1
Case 9
    Etape9.Visible = False
    Etape10.Visible = True
    intCompteur = intCompteur + 1
Case 10
    Etape10.Visible = False
    Etape11.Visible = True
    intCompteur = intCompteur + 1
Case 11
    Etape11.Visible = False
    Etape12.Visible = True
    intCompteur = intCompteur + 1
Case 12
    Etape12.Visible = False
    Etape13.Visible = True
    Suivant.Enabled = False
    intCompteur = intCompteur + 1
End Select

End Sub


pour le bouton precedent c'est +/- la même chose

Lemagicien

9 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
2 nov. 2004 à 12:55
Comme je le disais créée un groupe de controle avec tes frame Etape !!
Le code du bouton "suivant " sera alors simplement ceci

Etape(intcompteur).visible = False
intCompteur = intCompteur+1
If intCompteur <= IndexDernierFrame Then
  Etape(intCompteur).visible = True
Else
  ' Faire ce qu tu veux lors du click sur "Suivant"
  ' sur la derniere étape
Endif

LE code pour le bouton "Précédent" sera quasi identique :
Remplacer l'incrémentation par une décrémentation et dans le test ,s'assurer que intCompteur est bien >= à l'indice du 1er frame
Je compte 7 lignes de code par bouton ! Une bonne économie non ?

Christophe R.
1
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
1 nov. 2004 à 14:43
Utilise un SSTAB ce serai à mon avis beaucoup plus fonctionnel
Pascal Laurençon
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
1 nov. 2004 à 19:25
Utilise l'instruction Iif si tu veut raccourcir ton code.
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004
1 nov. 2004 à 22:24
pluplu pourais tu me dire ce qu'est SSTAB?

merci
Lemagicien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
2 nov. 2004 à 06:48
Le contrôle SSTab permet d'avoir des onglets sur une feuille pour avoir un aspect plus intuitif de multi page.

Mais cela ne te dispensera pas tout tes tests !
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
2 nov. 2004 à 08:00
Moi je commencerais par fair eun groupe de Frame nommée Etape(1) Etape(2) etc ...
Ensuite j'utiliserais une variable qui serait incrémenter par le bouton suivant et décrémenter par le bouton Précédent, avec une petite fonction qui affiche la frame Etape(i) correspondante !! une quinsaine de ligne de code en tout !!

L'avantage, c'est que tu es 2 ou 1 000 étapes, il n'y aura pas une ligne de code supplémentaire

Christophe R.
0
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
2 nov. 2004 à 12:04
Je ne connais pas l'application que tu fais, et je ne sais pas dire si s'est mieux de mettre un contrôle à onglet pour faire ce que tu veux, mais le contrôle SSTAB te permet d'exploiter pas mal d'événements qui te font economiser du code.
Pascal Laurençon
0
cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004
2 nov. 2004 à 12:37
crenaud76 ta methode je l'utilise justement dans la 2eme methode (voir plus haut).

Mais le SSTAB ne convient pas pour mon application car je dois m'assurer que l'utilisateur a bien entré toutes les données dans la frame et qu'elles sont convorme avant de passer a l etape suivante.

Il n'existe pas de moyen d incrémenté un controle?
Ou peut etre de créer une procédure générale qui réduirait mon code?

une idée:

Peut etre faire une fonction qui retourne le nom (ou le numero) de la frame qui a sa prorieté Visible = true, vu qu il n'y a qu une seule frame qui est true a la fois.

Mais cela ne reduira pas de bcp le nombre de ligne.

Lemagicien
0
cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004
2 nov. 2004 à 15:31
Merci bcp je v tester ca
Lemagicien
0
Rejoignez-nous