Problème avec une macro conditionnelle
Résolu
GIBO35
Messages postés
9
Statut
Membre
-
GIBO35 Messages postés 9 Statut Membre -
GIBO35 Messages postés 9 Statut Membre -
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
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
4 réponses
-
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. » -
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 -
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
-
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