impossible de supprimer données dans une cellule à cause de la macro

ouna

XLDnaute Nouveau
bonjour le forum,

j'ai un souci avec mon fichier excel.

en effet, j'ai mis une macro qui fait que lorsque on clic sur une cellule, un calendrier apparaît afin qu'on puisse choisir une date.

Cependant, si je veux supprimer la donnée dans la cellule, je suis bloqué.

Je suis preneur si quelqu'un a une idée.

Merci d'avance de votre précieuse aide!
 

Pièces jointes

  • modification.xls
    47.5 KB · Affichages: 92
  • modification.xls
    47.5 KB · Affichages: 98
  • modification.xls
    47.5 KB · Affichages: 96

Odesta

XLDnaute Impliqué
Re : impossible de supprimer données dans une cellule à cause de la macro

Bonjour

Une proposition de contournement :

Rempalcer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

par

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

De manière a devoir double-cliquer pour changer la valeur, ce qui permet de cliquer pour sélectionner (et supprimer)


Olivier
 

Gorfael

XLDnaute Barbatruc
Re : impossible de supprimer données dans une cellule à cause de la macro

Salut Odesta, ouna et le forum
Voilà un exemple de ce qui se passe quand on ne réfléchit pas à l'action que génère une macro à lancement automatique (on s'est tous fait avoir au moins une fois :D)
Donc, plusieurs solutions : Changer le mode de lancement :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Avantage : on ne change de date que sur double-clic.
Inconvénient : On passe la cellule en mode édition si Cancel rest à False.
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Même principe, mais avec le clic-droit. Et on perd la possibilité du menu contextuel
On peut aussi garder le mode de lancement par sélection : Mais il faut limiter le lancement du formulaire quand on ne le veut pas.
On peut mettre une valeur dans une autre feuille, et la tester en début de macro, pour vérifier qu'on doit lancer l'USF :
Avantage : facile à mettre en oeuvre
Inconvénient : il faut créer une nouvelle feuille, et penser à y aller, pour mettre/enlever la variable.

Une autre solution dépend de l'utilisation réelle du fichier : limiter l'apparition de l'USF à la zone réelle où il est utile. Et là, il faut savoir ce que l'on fait dans l'utilisation du fichier, ce qui n'est pas mon cas. Un exemple de proposition :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
'si la sélection compte plus d'une cellule
If Not IsEmpty(Target) Then Exit Sub
'si la cellule n'est pas vide, sortir
If Target.Column = 1 Or Target.Row = 1 Then Exit Sub
'si on est en colonne A ou ligne 1, sortir
If IsEmpty(Target.Offset(0, -1)) Then Exit Sub
'si la cellule à sa gauche est vide, sortir
UserForm1.Show
[B1].Select
End Sub
On ne lance l'USF que si on est dans une cellule suceptible d'avoir besoin d'être renseignée avec une date.
On pourrait se limiter aux 4 premières colonnes (au vu de l'exemple), mais comme on a mis un format sur toute la ligne...

Nota : Verrouiller les cellules de la colonne A est une solution, mais limiter la macro
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
aux cellules ayant une date ne me semble pas être une mauvaise idée...
Code:
If Not IsDate(Target) Then Exit Sub
A+
 
Dernière édition:

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : impossible de supprimer données dans une cellule à cause de la macro

Bonjour à tous

voir fichier en pièce jointe

il suffit de faire un clic-droit dans les cellules des colonnes B à E

à+
Philippr
 

Pièces jointes

  • 111.zip
    14.9 KB · Affichages: 61
  • 111.zip
    14.9 KB · Affichages: 74
  • 111.zip
    14.9 KB · Affichages: 67

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 009
Membres
101 865
dernier inscrit
MLL