Problème avec une macro conditionnelle

Résolu
GIBO35 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
GIBO35 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,

J'ai un petit souci, il est vrai que je ne maitrise toujours pas VBE...mais à mon âge !

Mon souci:
Dans la macro ci-dessous, lorsque la valeur de X3 de la feuille OA est <> de rien, la msg box s'affiche bien et on revient sur la feuille menu. Pas de souci donc !
Cependant quand la valeur est = à rien, j'aimerai que ce soit la feuille Course4_8 qui s'affiche mais c'est toujours la feuille OA qui s'active.

J'ai cherché mais en vain. Quelqu'un pourrait il me donner la solution s'il vous plait ?
Avec mes remerciements anticipés.

Bonnes fêtes de fin d'année à vous tous.


GIBO35



Sub Saisie_OA_Course4_8()
'
' Saisie_OA_Course4_8 Macro
'

'
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim mdp As String
mdp = Sheets("feuil1").Range("A1").Value
ActiveSheet.Unprotect mdp
ActiveWorkbook.Unprotect
Sheets("OA").Visible = True
Sheets("OA").Select
If Range("X3").Value <> "" Then
vRéponse = MsgBox("Cette course a déjà été validée !." & Chr(10), vbOKOnly + vbCritical, "OUPS")
If vRéponse = vbOK Then
Sheets("Menu").Visible = True
Sheets("Menu").Select
Sheets("OA").Visible = False
Exit Sub
Sheets("Course4_8").Visible = True
Sheets("Course4_8").Select
Range("J6").Select
End If
ActiveSheet.Protect mdp
ActiveWorkbook.Protect
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End If

End Sub




A voir également:

4 réponses

Mytå Messages postés 2973 Date d'inscription   Statut Contributeur Dernière intervention   953
 
Salut le forum

Et en modifiant le code ainsi

Sub Saisie_OA_Course4_8()
  Dim mdp As String
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With

    mdp = Sheets("feuil1").Range("A1").Value
    ActiveSheet.Unprotect mdp
    ActiveWorkbook.Unprotect
    Sheets("OA").Visible = True
    Sheets("OA").Select

    If Range("X3").Value <> "" Then
        vRéponse = MsgBox("Cette course a déjà été validée !." & Chr(10), vbOKOnly + vbCritical, "OUPS")

        If vRéponse = vbOK Then
            Sheets("Menu").Visible = True
            Sheets("Menu").Select
            Sheets("OA").Visible = False
            Exit Sub
        End If

    Else
        Sheets("Course4_8").Visible = True
        Sheets("Course4_8").Select
        Range("J6").Select
        ActiveSheet.Protect mdp
        ActiveWorkbook.Protect
    End If

    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With

End Sub

Mytå
Merci de donner suite à votre question, nous ne sommes pas des robots...
« Si le déboguage est l'art d'enlever les bogues, alors la programmation doit être l'art de les créer. »
0
GIBO35 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Myta,
Tout d'abord merci d'avoir pris un peu de temps pour répondre à ma question.

Cependant, après avoir recopier ta formule dans mon fichier, le résultat reste le même, c'est toujours la feuille "OA" qui est activée (malgré son statut "false" !) et non la feuille "Course4_8".

J'ai tenté de contourner le problème en inversant les conditions (si "X3"="" alors feuille "Course4_8" active...) Si je mets une valeur en "X3", c'est la feuille "OA" qui est activée et le nom la feuille "Menu" alors que si "X3" est égal à rien c'est bien la feuille "Course4_8" qui est active.
En fait, La 1ère condition est toujours bien appliquée mais dans la boucle le statut de la feuille "OA" est toujours "True".
Comme toi, j'ai pensé que les "if", "Exit Sub" ...étaient mal placés mais en vain.
C'est pourquoi après avoir passé mon samedi après midi à rechercher le "hic", j'ai posté ma question.

Pour info, le fichier est composé de 52 feuilles, fait plus de 21 Mo, avec des macros et formules plus ou moins complexes. Dans 95% des cas j'ai pu m'en sortir en lisant des bouquins et en consultant les forums...je pensais que cette petite macro (qui devrait être la dernière !) allait être un jeu d'enfant...(pour un vieux comme moi) et bien non. Enfin restons zen...
Encore merci de ta disponibilté.

Bon dimanche et bonnes fêtes de fin d'année.
Cordialement,

GIBO35
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Bonjour
If Range("X3").Value <> "" Then
     vRéponse = MsgBox("Cette course a déjà été validée !." & Chr(10), vbOKOnly + vbCritical, "OUPS")
     If vRéponse = vbOK Then
          With Sheets("Menu")
               .Visible = True
               .Select
          End With
          Sheets("OA").Visible = False
     End If
Else
     Sheets("OA").Visible = False
     With Sheets("Course4_8")
          .Visible = True
          .Select
          .Range("J6").Select
     End With
End If

0
GIBO35 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Michel,
Je te remercie de ton aide d'autant que le résultat est tout à fait conforme à mon attente.
Mon apprentissage continue et grâce à votre contribution j'en apprends toujours un peu plus chaque jour.

Ma retraite est "Excel" lente ...mais qui va doucement ménage sa monture !

Sincères remerciements (que j'adresse également à l'ensemble des contributeurs de ce forum).

GIBO35
0