Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
impossible de supprimer données dans une cellule à cause de la macro
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 )
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...
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.