Excel VBA IF selection.change

[Fermé]
Signaler
Messages postés
66
Date d'inscription
mercredi 7 mars 2012
Statut
Membre
Dernière intervention
2 octobre 2020
-
Messages postés
66
Date d'inscription
mercredi 7 mars 2012
Statut
Membre
Dernière intervention
2 octobre 2020
-
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

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 525
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
66
Date d'inscription
mercredi 7 mars 2012
Statut
Membre
Dernière intervention
2 octobre 2020

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