Vba affichage msgbox

Fermé
Cédric - Modifié par baladur13 le 25/07/2016 à 16:14
 Utilisateur anonyme - 25 juil. 2016 à 23:14
Bonjour,

Voulant faire une suite de msgbox avec des conditions... , quand je veux exécuter ma macro, j'ai des erreurs qui apparaissent mais je suis incapable de voir où j'ai bien pût faire mes fautes :(
peut on m'aider, voici ma macro :
Private Sub Worksheet_Activate()

Cells(1, 3).Select
0
InputBox "Indiquez le N° voulu :", "AIDE", vbOKCancel, vbQuestion
' Stock
If ("1") Then
    GoTo 1
    Else
' Affichage
        If ("2") Then
            GoTo 2
            Else
' Graphiques mensuel
                If ("3") Then
                Else
' Faire commande
                    If ("4") Then
                    GoTo 4
                    Else
' Liste papier
                        If ("5") Then
                        GoTo 5
                        Else
' Problèmes
                            If ("6") Then
                            GoTo 6
                            Else
' bouton annuler
                                If ("vbCancel") Then
                                GoTo 9
                                Else
' <> 1,2,3,4,5,6
                                    GoTo 8
                                End If
                            End If
                        End If
                    End If
                End If
        End If
End If
' Message pour l'explication de l'onglet Stock
1
    MsgBox "Voiture", "Aide Stock", vbOK, vbInformation
    GoTo 7
' Message pour l'explication de l'onglet Affichage
2
    MsgBox "Avion", "Aide Affichage", vbOKOnly, vbInformation
    GoTo 7
' Message pour l'explication de l'onglet Graphiques mensuel
3
    MsgBox "Bateau", "Aide Graphiques mensuel", vbOKOnly, vbInformation
    GoTo 7
' Message pour l'explication de l'onglet Faire la commande
4
    MsgBox "Vélo", "Aide Faire la commande", vbOKOnly, vbInformation
    GoTo 7
' Message pour l'explication de l'onglet Liste papier
5
    MsgBox "Train", "Aide Liste papier", vbOKOnly, vbInformation
    GoTo 7
' Message pour l'explication de l'onglet Problèmes
6
    MsgBox "Bus", "Aide Problèmes", vbOKOnly, vbInformation
    GoTo 7
7
' Message choix fin aide ou recommencer
    MsgBox "Fin de l'aide", vbOK, vbRetry, vbInformation

    If (vbOK) Then
        GoTo 9
        Else
            GoTo 0
    End If
8
' Message d'erreur dans valeur rentré au départ
    MsgBox "Erreur, veuillez rentrer un chiffre correspondant à l'aide de l'onglet voulu." & vbNewLine & "Veuillez vous référer au tableau derrière.", vbRetryCancel, vbExclamation

    If (vbRetry) Then
        GoTo 0
        Else
            GoTo 9
    End If
9
    MsgBox "Fin", "Aide", vbOKOnly
    
End Sub


merci

Cédric
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

Utilisateur anonyme
25 juil. 2016 à 15:37
Bonjour

à la place de if then else en cascade, tu peux utiliser un select case.

L'utilisation des goto est très fortement déconseillée.
Dans ton cas, avec si peu d'instructions à tes étiquettes de lignes, autant mettre le code dans le corps du if ou du select case.

Sinon utilise des Function ou des Sub.

Une fois ton code mieux structuré, il sera plus facile à déboguer et à maintenir.
0
Vous n'auriez pas un exemple ? (je sais pas ce que c'est...) :/
0
Utilisateur anonyme
25 juil. 2016 à 16:08
Je pense que si tu tapes VBA select case tu vas en trouver pleins des exemples...

Dim choix As Integer
choix = 2

Select Case choix

    Case 0
    'code si le choix vaut zéro
    
    Case 1
    'code si le choix vaut un
    
    Case Is > 1
    trucmuche

End Select

End Sub


Sub trucmuche()
'code un peu long pour etre dans le corps du select case


End Sub

0
d'accord, je vais essayer, sinon, tous mes msgbox sont bons car c'est ça qu'il surligne en jaune ?
0
Utilisateur anonyme
25 juil. 2016 à 23:14
Non ça n'est pas dans le bon ordre
MsgBox "Voiture", vbOKOnly + vbInformation, "Aide Stock"
0