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 -
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
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:
- Excel vba selection change
- Liste déroulante excel - Guide
- Change dns - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
1 réponse
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 :
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
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
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