Excel VBA IF selection.change

Fermé
meaurysse Messages postés 66 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 2 octobre 2020 - 19 mai 2015 à 11:56
meaurysse Messages postés 66 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 2 octobre 2020 - 20 mai 2015 à 21:00
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



A voir également:

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 716
Modifié par gbinforme le 19/05/2015 à 12:05
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
meaurysse Messages postés 66 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 2 octobre 2020
20 mai 2015 à 21:00
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