Cell vide

Salut et bon retour

j'ai une question je veux n'autoriser pas de remplir cell E5 si cell avant E4 est vide et apparaitre bien sur msgbox comment faire ça

15cell.xlsx (9.56 Ko)

Bonjour,

A mettre dans le module de la feuille et enregistrer le classeur en .xlsm :

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address(0, 0) <> "E5" Then Exit Sub

    If Target.Offset(-1).Value = "" Then

        MsgBox "Vous devez d'abords remplir la cellule 'E4' !"

        Application.EnableEvents = False
        Target.Value = ""
        Application.EnableEvents = True

    End If

End Sub

Bonjour,

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("E5:C9"))
If Not isect Is Nothing Then
    Application.EnableEvents = False
    If IsEmpty(Cells(Target.Row - 1, Target.Column)) Then Target.ClearContents
    Application.EnableEvents = True
End If
End Sub

merci

Bonjour,

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("E5:C9"))
If Not isect Is Nothing Then
    Application.EnableEvents = False
    If IsEmpty(Cells(Target.Row - 1, Target.Column)) Then Target.ClearContents
    Application.EnableEvents = True
End If
End Sub

merci sabv bon travail mais je veux s’apparaît msgbox avant target clearcontents

mais je veux s’apparaît msgbox avant target clearcontents

Private Sub Worksheet_Change(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("E5:C9"))
If Not isect Is Nothing Then
    Application.EnableEvents = False
    If IsEmpty(Cells(Target.Row - 1, Target.Column)) Then 
      MsgBox "Vous devez d'abords renseigner la cellule  " & Cells(Target.Row - 1, Target.Column).Address(0, 0)
      Target.ClearContents
      Application.EnableEvents = True
    End If
End If
End Sub

[/code]

[/quote]

merci encore mais ne marche pas bien vois il marche quand j'ouvre le et puis stop

2cell.xlsm (14.08 Ko)

Bonjour,

à tester,

4lembmc-cell.xlsm (14.33 Ko)

merci infiniment je m'excuse je veux une autre chose

quand je saute une ligne ou deux cell vide et après msgbox s’apparaît la cellule active va à la première cellule vide(précédente) pas cell suivante vois

2lembmc-cell.xlsm (15.58 Ko)

quand je saute une ligne ou deux cell vide et après msgbox s’apparaît la cellule active va à la première cellule vide(précédente) pas cell suivante vois

désolé, je n'ai rien compris

Re,

coucou Sabv & Theze

@Lembmc

Est-ce du style comme cela ?

crdlt,

André

c'est simple savb par ex la cellule active c'est E5 quand j'appuie sur btn entrer et E4 vide msgbox s'apparait et le cursseur va à la cell E6 mais moi je veux le cursseur va à la cell vide pour remplis la E4 pas E6

et quand je saute par ex deux lignes ex cell active E6 et les cells E4 E5 vides le cursseur va à la cell E4 non E5 OU E6 (la premiere cell vide ) et merci à vous et à votre ami

re bonjour à tous,

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("E5:E9"))
If Not isect Is Nothing Then
    For i = 4 To Target.Row - 1
     If IsEmpty(Cells(i, "E")) Then
        MsgBox "Vous devez d'abords renseigner la cellule  " & Cells(i, "E").Address(0, 0)
        Application.EnableEvents = False
        Cells(i, "E") = Target.Value
        Target.ClearContents
        Application.EnableEvents = True
        Exit Sub
      End If
    Next
End If
End Sub

SALUT sab l'idée est bien mais tu ne me comprends pas encore c'est pas le contenu de cell E5 qui monte au dessus à E4

regarde j'ai cell E4 vide quand je saisie n'importe dans cell E5 msgbox s'apparait et puis cell E6 devient la cellule active mais moi je veux apres appuie sur btn entrer la cellule vide E4 c'est lui qui devient active

autre ex : j'ai E4 ET E5 vides quand je saisie n'importe dans cell E6 msgbox s'apparait et puis cell E7 devient la cellule active mais moi je veux apres appuie sur btn entrer la cellule vide E4 c'est lui qui devient active c'est pas cell E5 ou E7 toujours la premiere cell vide

et je m'excuse une autre fois J'espère que tu me comprends

Bonjour,

une autre façon de faire. On intervient avant la saisie en sélectionnant la bonne cellule :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim n As Long
    If Not Intersect(Target, [E4:E9]) Is Nothing Then
        n = Application.CountA([E4:E9])
        If Target.Address > [E4].Offset(n).Address Then
            Application.EnableEvents = False
            [E4].Offset(n).Select
            Application.EnableEvents = True
            MsgBox "Vous devez d'abord remplir la cellule " & [E4].Offset(n).Address
        End If
    End If
End Sub

Je me demande si le msgbox est nécessaire (?).

Quelqu'un de normalement constitué devrait comprendre.

eric

re,

...mais tu ne me comprends pas encore c'est pas le contenu de cell E5 qui monte au dessus à E4

toujours pas sur d'avoir compris,

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("E5:E9"))
If Not isect Is Nothing Then
    For i = 4 To Target.Row
     If IsEmpty(Cells(i, "E")) And Target.Address <> Cells(i, "E").Address Then
        MsgBox "Vous devez d'abords renseigner la cellule  " & Cells(i, "E").Address(0, 0)
        Application.EnableEvents = False
        Cells(i, "E") = Target.Value
        Cells(i, "E").Activate
        Target.ClearContents
        Application.EnableEvents = True
        Exit Sub
      End If
    Next
End If
End Sub

Bonjour toutes et tous,

merci à Sabv, Theze Eriicc pour ces codes ci-présents

j'ai pensé à un truc en utilisant les Sendkeys

Ce qui se passe : sur la feuille si le champ de la cellule précédente, n'est pas renseignée, le msgbox arrive ensuite, là interviennent les

keys, Sendkey, qui place le curseur à la cellule concernée en vidant le contenu de celle-ci

en prenant un de vos codes j'ai mis comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("E5:E9"))
If Not isect Is Nothing Then
    For i = 4 To Target.Row
     If IsEmpty(Cells(i, "E")) And Target.Address <> Cells(i, "E").Address Then
        MsgBox "Vous devez en premier renseigner la cellule  " & Cells(i, "E").Address(0, 0)
        Application.EnableEvents = False
        Cells(i, "E") = Target.Value
        Cells(i, "E").Activate
      '''  Cells(i, "E").Select  
        Application.SendKeys "{~}"                       ' escape ou esc ici le tilde
        Application.SendKeys "{BS}"                     ' Backspace
        Application.SendKeys "{CAPSLOCK}"     ' Verr maj
        Target.ClearContents
        Application.EnableEvents = True
        Exit Sub
      End If
    Next
End If
End Sub

crdlt,

André

Merci pour tous ce que je cherchais

Rechercher des sujets similaires à "vide"