Purger automatiquement le contenu d'une cellule sous certaines conditions

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

J'ai un tableau avec 2 colonnes.
Les saisies dans chacune des colonnes sont contrôlées par une macro événementielle (module de feuille).
Si je rentre une donnée dans une cellule de la 2ème colonne alors que la cellule immédiatement à sa gauche (1ère colonne) est vide, je voudrais que la saisie s'annule automatiquement, ceci afin de ne pas commettre d'erreurs de saisie par mégarde.
J'ai tenté d'une manière, ma foi, assez logique et ça ne marche pas.

Merci d'avance pour tout conseil.
 

Pièces jointes

  • ViderCellule.xlsm
    12 KB · Affichages: 42

Robert

XLDnaute Barbatruc
Repose en paix
Re : Purger automatiquement le contenu d'une cellule sous certaines conditions

Hola Doctor, bonjour le forum,

En effaçant tu relances la macro événementielle Change et elle tourne en boucle...
Essaie comme ça :
Code:
Option Explicit
Dim test As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
'Macro événementielle quand on intoduit une donnée dans certaines cellules
If test = True Then Exit Sub
If Not Intersect(Target, [MonBôTablô].Columns(1)) Is Nothing Then 'toute cellule comprise dans la 1ère colonne du tableau "MonBôTablô"
    'blablabla
End If
If Not Intersect(Target, [MonBôTablô].Columns(2)) Is Nothing Then 'toute cellule comprise dans la 2ème colonne du tableau "MonBôTablô"
    test = True
    If Target.Offset(, -1) = "" Then Target = "": Target.Offset(, -1).Select: Exit Sub
    'blablabla
    test = False
End If
Application.ScreenUpdating = True
End Sub
 

Abel

XLDnaute Accro
Re : Purger automatiquement le contenu d'une cellule sous certaines conditions

Bonjour Magic_Doctor,

Essaie ce code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Flag1 = True Then Exit Sub
If Not Intersect(Target, [MonBôTablô]) Is Nothing Then
    If Target.Offset(0, -1) = "" Then
    MsgBox "Cellule correspondante en B vide" & Chr(10) & "Cette saisie va être annulée"
    Flag1 = True: Target.Value = ""
    End If
End If
Flag1 = False
End Sub

Flag1 déclaré en public

Abel.

Edit : Bonjour Robert.
 

job75

XLDnaute Barbatruc
Re : Purger automatiquement le contenu d'une cellule sous certaines conditions

Bonjour Magic_Doctor, Robert, Abel,

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, [MonBôTablô].Columns(2))
If Not r Is Nothing Then
  For Each r In r 'en cas d'entrées multiples (copier coller)
    If r(1, 0) = "" And r <> "" Then r = "": r(1, 0).Select
  Next
End If
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : Purger automatiquement le contenu d'une cellule sous certaines conditions

Re,

Avec la macro précédente, en cas d'entrées multiples, c'est la dernière cellule vide qui est sélectionnée.

Si l'on veut sélectionner la première cellule vide :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, n As Byte
Set r = Intersect(Target, [MonBôTablô].Columns(2))
If Not r Is Nothing Then
  For Each r In r 'en cas d'entrées multiples (copier coller)
    If r(1, 0) = "" And r <> "" Then _
      r = "": If n = 0 Then r(1, 0).Select: n = 1
  Next
End If
End Sub
A+
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re : Purger automatiquement le contenu d'une cellule sous certaines conditions

Hola Roberto, Abelo y jobo,

Muchas gracias por sus imprescindibles intervenciones.
En d'autres termes : merci pour vos réponses.
Je ne pensais pas qu'un problème si simple soit aussi "tordu" à résoudre. Enfin, peu importe, vos différentes solutions marchent.
Si job lit ce post, dans ton dernier post je n'ai pas très bien compris (en fait pas du tout...) le rôle de la variable "n".

Bonne soirée à tous.
 

job75

XLDnaute Barbatruc
Re : Purger automatiquement le contenu d'une cellule sous certaines conditions

Bonjour Magic_Doctor, le fil,

Si job lit ce post, dans ton dernier post je n'ai pas très bien compris (en fait pas du tout...) le rôle de la variable "n".

Le fichier (1) ci-joint utilise ma 1ère macro => la cellule B7 est finalement sélectionnée.

Le fichier (2) utilise ma 2ème macro (avec n) => la cellule B5 est finalement sélectionnée.

La variable n prend la valeur 1 une fois que la 1ère sélection est faite.

A+
 

Pièces jointes

  • ViderCellule(1).xlsm
    15.3 KB · Affichages: 38
  • ViderCellule(2).xlsm
    15.4 KB · Affichages: 39

Magic_Doctor

XLDnaute Barbatruc
Re : Purger automatiquement le contenu d'une cellule sous certaines conditions

Merci job pour tes explications, ça commence à s'éclaircir dans mon esprit.
Pour que ce soit définitivement clair (car cette laconique sentence est un véritable casse-neurones), je vais tenter de l'élucider d'une manière plus approfondie avec l'aide du "Debug.Print" (pas mal ce truc-là) et faire des essais en modifiant les paramétrages.

Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 459
Membres
103 547
dernier inscrit
matospi