Excel VBA IF selection.change

meaurysse Messages postés 66 Date d'inscription   Statut Membre Dernière intervention   -  
meaurysse Messages postés 66 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai développé une fonction permettant d'indiquer la date du jour automatiquement dans mon tableau lorsque la valeur de la cellule d'à côté (recensant des informations) est apporté par des modifications ou compléments. (en gros que la valeur change)

J'ai composé cette fonction d'un message proposant OUI ou NON de mettre à jour la date.

La fonction fonctionne mais le MsgBox est proposé 2x... Alors que dans mon code il est pourtant cripté une seule fois....

Est-ce que quelqu'un pourrait-il me renseigner et m'indique ce qu'il faut que je corrige afin que mon message OUI / NON ne paraisse qu'une fois?

Voici ci-dessous le code VBA:

Private Sub Worksheet_Change(ByVal Target As Range)
If MsgBox("Voulez-vous mettre la date à jour?", vbYesNo, "CONFIRMATION") = vbYes Then
If Not Intersect(Target, Range("H6:H106")) Is Nothing Then
Selection.Offset(-1, 1) = Cells(2, 2).Value
End If
End If
End Sub

Merci d'avance de votre aide et très bonne journée

Meaurysse

1 réponse

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Comme dans ton code fait la mise à jour d'une autre cellule, il est relancé. Il faut donc désactiver la gestion des événements puis les remettre :
    Private Sub Worksheet_Change(ByVal Target As Range)
    If MsgBox("Voulez-vous mettre la date à jour?", vbYesNo, "CONFIRMATION") = vbYes Then
    If Not Intersect(Target, Range("H6:H106")) Is Nothing Then
    Application.EnableEvents = False
    Selection.Offset(-1, 1) = Cells(2, 2).Value
    Application.EnableEvents = True
    End If
    End If
    End Sub
    

    Toujours zen
    La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
    1
    1. meaurysse Messages postés 66 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour gbinforme !

      Merci beaucoup pour votre réponse, la fonctionnalité fonctionne à présent parfaitement ! :) Merci bien!

      Cependant, il reste une chose qui me dérange... Lorsque je trie mon tableau par une colonne (pas forcément l'une d'entre celles qui concernent directement les colonnes de la macro), la Msgbox rapparait à nouveau à 2 reprises.....

      En fait j'ai créé des macros de tris, qui trient mon tableau par rapport à la macro se trouvant en haut de chaque colonne. le bouton "nom", trie mon tableau par nom ou si je clique sur le bouton "contact", il trie par contact, etc...

      Et lorsque j'exécute ma macro de tri par colonne, forcément la "valeur change" aussi dans les colonnes de ma fonction de date automatique... Que dois-je ajouter dans mes macros de boutons de tris pour éviter qu'il repose à chaque fois ma msgbox?

      Merci d'avance
      0