Redondance de question macro

Bonjour

j'ai realisé cette macro: tant que la cells(11,2), qui est range(k2), est égale à zero on revient à poser la question, mais une fois cette valeur est differente de zero le programme revient pour poser ce qui est n'est pas normal, car il devrait sortir du programme exit sub et se placer dans range(c2).

merci pour votre aide

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.EnableEvents = False

Application.ScreenUpdating = False

AnswerYes = MsgBox("Voulez-vous aussi évaluer DKG et FM?", vbQuestion + vbYesNo, "User Repsonse")

If AnswerYes = vbYes Then

If Worksheets("Sheet1").Cells(11, 2).Value = 0 Then

MsgBox ("Entrer le décimal Rounding DKG&FM, Rounding DKG et Rounding FM")

Range("k2").Select

Else

End If

Else

Exit Sub

Range("c2").Select

End If

Application.EnableEvents = True

Application.ScreenUpdating = True

End Sub

Bonjour,

Teste comme ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  Application.EnableEvents = False
  Application.ScreenUpdating = False
  AnswerYes = MsgBox("Voulez-vous aussi évaluer DKG et FM?", vbQuestion + vbYesNo, "User Repsonse")

    If AnswerYes = vbYes Then
      If Worksheets("Sheet1").Cells(2, 11).Value = 0 Then
        MsgBox ("Entrer le décimal Rounding DKG&FM, Rounding DKG et Rounding FM")
        Range("k2").Select
      End If
    Else
      Application.EnableEvents = True
      Application.ScreenUpdating = True
      Range("c2").Select
      Exit Sub
    End If
  Application.EnableEvents = True
  Application.ScreenUpdating = True
End Sub

Bonjour

Essayez comme ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim AnswerYes As Integer

If Worksheets("Sheet1").Cells(2, 11).Value > 0 Then
Exit Sub
Range("c2").Select
End If

Application.EnableEvents = False
AnswerYes = MsgBox("Voulez-vous aussi évaluer DKG et FM?", vbQuestion + vbYesNo, "User Repsonse")

If AnswerYes = vbYes Then
    If Worksheets("Sheet1").Cells(11, 2).Value = 0 Then
        MsgBox ("Entrer le décimal Rounding DKG&FM, Rounding DKG et Rounding FM")
        Range("k2").Select
    End If
End If
Application.EnableEvents = True
End Sub

Cordialement

Edit : Salut M12, désolé je n'avais pas vu le post.

je l.ai essayé comme ca:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim AnswerYes As Integer

If Worksheets("Sheet1").Cells(2, 11).Value > 0 Then

Exit Sub
Range("c2").Select
End If

Application.EnableEvents = False
AnswerYes = MsgBox("Voulez-vous aussi évaluer DKG et FM?", vbQuestion + vbYesNo, "User Repsonse")

If AnswerYes = vbYes Then
If Worksheets("Sheet1").Cells(2, 11).Value = 0 Then
MsgBox ("Entrer le décimal Rounding DKG&FM, Rounding DKG et Rounding FM")
Range("k2").Select
End If
Else: Exit Sub
End If

Application.EnableEvents = True
End Sub

Bonjour,

A la fin de votre code le ELSE : Exit sub est inutile. Vous pouvez la supprimer. Si vous répondez non, le if Answeryes ne sera pas exécuté.

NB : lorsque vous postez un code veillez à utiliser les balises de code via l'icone (</>). C'est nettement plus lisible pour celui qui vous répond

Crdlt

je l'ai vu au debut moi aussi

mais:

si je ne le fais pas la uqestion posee au debut va se reposer indefiniment

avez-vous une explication

enlever le et executer le et me dire si vous remarquer la meme chose

cordialement

je l'ai vu au debut moi aussi

mais:

si je ne le fais pas la uqestion posee au debut va se reposer indefiniment

avez-vous une explication

enlever le et executer le et me dire si vous remarquer la meme chose

je crois le dernier :

else

exit: sub

correspond à AnswerYes = MsgBox("Voulez-vous aussi évaluer DKG et FM?", vbQuestion + vbYesNo, "User Repsonse")

If AnswerYes = vbYes

cordialement

si je ne le fais pas la uqestion posee au debut va se reposer indefiniment

Il va vous reposer la question tant que K2 égal 0

Si vous mettez le "Else exit sub", il ne vous repose plus la question parce qu'il a perdu la gestion des événements du à cette instruction Application.EnableEvents = False (j'évite absolument cette instruction même si pour vous je l'ai laissée) qui n'est pas remise à true lors du exit sub.
Pour que la macro refonctionne, vous devez fermer excel et réouvrir excel

Le code comme je vous l'ai proposé fait ceci :

Si K2 = 0 ou vide, vous aurez toujours le message chaque fois que vous allez cliquer sur une cellule de la feuille (ce que vos demandez dans votre 1er post)
Si K2 possède une valeur vous n'aurez plus de message.

N'oubliez pas que votre code agit toujours sur la sélection de cellule dans votre feuille

Dites moi

effectivement d'où la necessité de mettre exit sub :

MsgBox ("Entrer le décimal Rounding DKG&FM, Rounding DKG et Rounding FM")
Range("k2").Select
End If

else: exit sub

Bonjour

effectivement d'où la necessité de mettre exit sub :

Non vous faites erreur, il ne vous sert à rien.

Si vous répondez Non au message AnswerYes =Msgbox(....), le code ne rentre pas dans le IF. Il passe directement au END IF, puis à l'instruction Application.Enable puis au END SUB.

Si vous n'êtes pas persuadé, mettez un point d'arrêt sur la ligne IF Answeryes, puis continuer le code en appuyant sur F8. Vous verrez ce qui se passe réellement.

vous voulez que l'Ecris comme ca:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim AnswerYes As Integer

If Worksheets("Sheet1").Cells(2, 11).Value > 0 Then

Exit Sub
Range("c2").Select
End If

Application.EnableEvents = False
AnswerYes = MsgBox("Voulez-vous aussi évaluer DKG et FM?", vbQuestion + vbYesNo, "User Repsonse")

If AnswerYes = vbYes Then
If Worksheets("Sheet1").Cells(2, 11).Value = 0 Then
MsgBox ("Entrer le décimal Rounding DKG&FM, Rounding DKG et Rounding FM")
Range("k2").Select
End If

End If

Application.EnableEvents = True
End Sub

vous voulez que l'Ecris comme ca:

Ben c'est comme cela que je vous donné dans mon post Samedi à 18h02

Rem : Merci d'utiliser les balises de code disponibles en cliquant sur l'icone </> lorsque vous postez un code

executez le et vous allez voir lorsque vous dites non à la question:

AnswerYes = MsgBox("Voulez-vous aussi évaluer DKG et FM?", vbQuestion + vbYesNo, "User Repsonse")

il respose la meme question question indefiniment.

amitié

je viens de refaire le code comme suit en otant Application.EnableEvents = True:

et ca marche. je commence à m'habituer avec la logique VBA car je suis plus Fortran et C++

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim AnswerYes As Integer

If Worksheets("Sheet1").Cells(2, 11).Value > 0 Then

Exit Sub
Range("c2").Select
End If

Application.EnableEvents = False
AnswerYes = MsgBox("Voulez-vous aussi évaluer DKG et FM?", vbQuestion + vbYesNo, "User Repsonse")

If AnswerYes = vbYes Then
If Worksheets("Sheet1").Cells(2, 11).Value = 0 Then
MsgBox ("Entrer le décimal Rounding DKG&FM, Rounding DKG et Rounding FM")
Range("k2").Select
End If

End If

End Sub

je viens de refaire le code comme suit en otant Application.EnableEvents = True: et ca marche.

Avec votre dernier code faite ces 2 tests

1. Ouvrez le fichier avec K2 vide de données
2. Cliquez dans une cellule, le message apparait pour vous demander de compléter K2
3. Répondez non à la question.
4. cliquez ailleurs dans votre feuille, vous n'aurez plus de message même si pas de valeur en K2

Autre test. Fermer Excel avant ce test et vider K2

1. Ouvrez le fichier avec K2 vide de données
2. Cliquez dans une cellule, le message apparait pour vous demander de compléter K2
3. Répondez Oui. Vous allez mettre une valeur en K2
4. Cliquez ailleurs dans votre feuille le message n'apparait plus
5. Mettez rien ou 0 en en K2.
6. Cliquez ailleurs dans la feuille, vous n'avez plus le message. Normal ??

Avez-vous lu mon message au sujet des balises de code pour poster vos codes ??

je clique sur les balises de code avant d'Ecrire ou après avoir ecris

je clique sur les balises de code avant d'Ecrire

Oui, avant

oui ca marche merci infiniment

Pour moi non cela ne marche pas. C'est ce que j'essaie de vous montrer avec les deux exemples

Le code désactive tous les événements d'excel. Du coup vous n'avez plus qu'une solution c'est fermer excel et le relancer.

Votre cellule en K2, vous ne la remplissez jamais deux fois ? Genre une fois la valeur est 2 puis une autre fois la valeur est 1

ok je vois ce que vous voulez dire

je vous reviens

Rechercher des sujets similaires à "redondance question macro"