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
A voir également:
- Problème avec une macro conditionnelle
- Mise en forme conditionnelle excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel liste déroulante conditionnelle - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
4 réponses
Salut le forum
Et en modifiant le code ainsi
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. »
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
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
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