Correction pour activation de macro sur clic cellule

fb62840

XLDnaute Impliqué
Bonjour,

Le code ci-dessous est actif s'il s'agit d'un clic sur une cellule qui n'est pas actuellement sélectionnée,
si je clic sur la cellule active alors le code ne s'exécute pas.

Pourriez-vous m'indiquer comment le corriger de façon à ce qu'il s'exécute à chaque clic sur cellule de la colonne B ou C avec un message distinct selon qu'il s'agit de la colonne B ou de la Colonne C sur lequel est fait le clic ?

Actuellement je n'ai qu'un seul message et je voudrais qu'il s'adapte selon que le clic provient de la colonne B ou de la colonne C.


Merci

Le code du clic
Code:
Public WithEvents groupebouton As Msforms.CommandButton
Private Sub groupebouton_Click()
ActiveCell.Value = CDate(groupebouton.Caption & "/" & UserForm1.TextBox2 & "/" & UserForm1.TextBox1)
Unload UserForm1
End Sub

Voici le code pour le message (unique pour le moment, à doubler selon pour traiter évènement sur clic en colonne B ou en colonne C)
[/code]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If MsgBox("Voulez-vous enregistrer ou modifier la date d'entrée ?", 36, "Confirmation") = vbYes Then
UserForm1.Top = ActiveCell.Top + 100
UserForm1.Left = ActiveCell.Offset(0, 1).Left + 25
UserForm1.Show
End If
End Sub
[/Code]

Si le clic est fait sur la colonne B ce code convient par contre pour la colonne C
je voudrais afficher :
"Voulez-vous enregistrer ou modifier la date de sortie ?"

et je voudrais empêcher l'affichage du formulaire si le clic n'est pas fait en colonne B ou colonne C

Merci beaucoup pour votre aide
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Correction pour activation de macro sur clic cellule

Bonjor fb62840,

Modifie ton code comme ceci:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Column
  Case 2: typ = " d'entrée "
  Case 3: typ = " de sortie "
  Case Else: typ = ""
End Select
If typ = "" Then Exit Sub
If MsgBox("Voulez-vous enregistrer ou modifier la date" & typ & "?", 36, "Confirmation") = vbYes Then
UserForm1.Top = ActiveCell.Top + 100
UserForm1.Left = ActiveCell.Offset(0, 1).Left + 25
UserForm1.Show
End If
End Sub

Par contre, il n'est pas possible de détecter un simple "Click" sur une feuille de calcul et l'événement "SelectionChange" n'est actif qu'une seule fois. Par contre, tu peux recopier ce code dans l'événement "BeforeDoubleClick", ainsi si tu veux réafficher ton formulaire dans une cellule active il te suffira de double-cliquer. Autre solution avec clic droit ("BeforeRightClick").

A +.

Cordialement.
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
195

Statistiques des forums

Discussions
314 085
Messages
2 105 646
Membres
109 408
dernier inscrit
demichoux50