Obligation de compléter une cellule

Bonjour le Forum,

Bonjour laceline,

j'ai trouvé une portion du code pour forcer l'inscription d'une cellule, mais il est incomplet!

J'aimerais que le message pour la colonne H et l'exécution de la commande (l'obligation de compléter si la cellule n'est pas remplir) puisse se faire avant l'ouverture de l'userform Comblement.

Les utilisateurs du classeur utilisent le tabulateur pour passer d'une cellule à l'autre.

Merci pour votre aide, et toute proposition pour améliorer ce code.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    adresse = Target.Address
    For I = 5 To 65536
        If adresse = "$A$" & I Then
            Calendrier.Show
            Cancel = True
            Exit For
        End If
    Next

    If Target.Count < 2 And Target.Column = 1 Then
        Cells(Target.Row, 1).Copy Destination:=Cells(Target.Row, 2)
        Cells(Target.Row, 2).NumberFormat = "dddd"
        Target.Offset(0, 2).Select
    End If

'If Target.Count > 1 Then Exit Sub
'If Not Application.Intersect(Target, Range("F5:F" & Range("B" & Rows.Count).End(xlUp).Row)) Is Nothing Then
'MsgBox ("Pour un quart de travail sans repas, inscrivez 0000.")
'End If

'If Target.Count > 1 Then Exit Sub
'If Not Application.Intersect(Target, Range("H5:H" & Range("B" & Rows.Count).End(xlUp).Row)) Is Nothing Then
'MsgBox ("Incrivez vos initiales avant de poursuivre.")
'End If

'Code pour forcer; emprunté à DAN
If Target.Count > 1 Then Exit Sub
If Application.Intersect(Target, Range("F" & Range("F65536").End(xlUp).Row)) Is Nothing Then
If IsEmpty(Target.Offset(0, -1)) Then
MsgBox "Pour un quart de travail sans repas, inscrivez 0000." & Target.Offset(0, -1).Address
Target.Offset(0, -1).Select
Exit Sub
End If
End If

If Target.Count > 1 Then Exit Sub
If Application.Intersect(Target, Range("H" & Range("H65536").End(xlUp).Row)) Is Nothing Then
If IsEmpty(Target.Offset(0, -1)) Then
MsgBox "Incrivez vos initiales avant de poursuivre." & Target.Offset(0, -1).Address
Target.Offset(0, -1).Select
Exit Sub
End If
End If

If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("H5:H" & Range("B" & Rows.Count).End(xlUp).Row)) Is Nothing Then
Comblement.Show
End If

If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("I5:I" & Range("B" & Rows.Count).End(xlUp).Row)) Is Nothing Then
Traitement.Show
End If

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Heure As String

  If Target.Count > 1 Then Exit Sub
  If Not Intersect(Range("D5:F65000"), Target) Is Nothing Then
    If Not IsNumeric(Target) Then
      Target.Select
      MsgBox "Seulement des nombres"
      Exit Sub
    End If
    Heure = Format(Abs(Target), "0000")
    If Val(Left(Heure, 2)) > 23 Then
      Target.Select
      MsgBox "Heures non valables"
    ElseIf Val(Right(Heure, 2)) > 59 Then
      Target.Select
      MsgBox "Minutes non valables"
    Else
      Application.EnableEvents = False
      Target = Left(Heure, 2) & ":" & Right(Heure, 2)
      Application.EnableEvents = True
      If Target.Column = 4 Or Target.Column = 5 Then
        Target.Offset(0, 1).Select
      ElseIf Target.Column = 6 Then
        'Target.Offset(1, -2).Select
      End If
    End If
   End If

End Sub

Bonsoir,

avec une validation des données dans la ,colonne H, par exemple

valider

Bonjour Cappe Pierre

merci pour la suggestion.

est-il possible de le faire en VBA?

Bonjour,

je ne l'ai jamais fait, mais je peux essayer

c'est toujours la colonne H qui sera concernée ?

Pierrot

Bonjour Cappe Pierre,

Bonjour le forum,

merci de votre intérêt pour mon projet.

Effectivement je veux forcer les utilisateurs à compléter les colonnes F et H.

Merci encore.

quel genre de données voulez-vous mettre dans F et H

valeur numérique ou Texte ?

Pierrot

Bonjour

en F, c'est numérique, et en H c'est texte.

Merci

Bonsoir,

Un double-clic colonne F et H ouvre un message d'avertissement, F pour des nombres et H pour du texte

Vous testez et vous me faites part de vos remarques s'il y en a.

Amicalement

Pierrot

13mfc-f-h-cp02.xlsm (22.14 Ko)

Bonjour Cappe Pierre

il y a une erreur de compilation dans le code de la Feuille 1 au sujet de Else!

Merci

Bonjour,

désolé pour cette erreur,qui est corrigée

j'ai également supprimé le double-clic

un simple clic suffit pour déclencher la macro d'obligation

Amicalement

Pierrot

Bonjour Cappe Pierre

Merci pour vos propositions.

Est-ce possible d'avoir l'équivalent, mais sans les userform? C'est-à dire que l'avis (en MsgBox) renvoie à la cellule à remplir.

J'ai une partie du code que je n'arrive pas à compléter:

If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("H5:H" & Range("B" & Rows.Count).End(xlUp).Row)) Is Nothing Then
MsgBox ("Incrivez vos initiales avant de poursuivre.")
If IsEmpty(Target.Offset(0, 0)) Then Exit Sub
'rendu là je voudrais, qu'une fois les initiales inscrites, se déclenche l'userform Comblement.
Else
If Target.Count > 1 Then
If Not Application.Intersect(Target, Range("H5:H" & Range("B" & Rows.Count).End(xlUp).Row)) Is Nothing Then
'Target.Offset(0, -1).Select
Comblement.Show
End If
End If

Je vous joins mon fichier.

https://www.cjoint.com/c/GFupo3A436q

Merci d'avance.

Bonsoir,

je n'ai pas le temps de faire autre chose avec validation de données

amicalement

Pierrot

Bonjour Cappe Pierre

je comprends! Et merci encore pour votre aide.

J'espère tomber sur un membre du forum pour donner suite au code.

'Navigation par tab entre la colonne A@H: rendu à H déclenchement du MsgBox
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("H5:H" & Range("B" & Rows.Count).End(xlUp).Row)) Is Nothing Then
MsgBox ("Incrivez vos initiales avant de poursuivre.")
If IsEmpty(Target.Offset(0, 0)) Then Exit Sub

'Rendu là je voudrais, qu'une fois les initiales inscrites en H, se déclenche l'userform Comblement.
Else

'Ici je crois ne pas être sur la bonne route.... Il faut sans doute un «si cellule non vide, alors...»

If Target.Count > 1 Then
If Not Application.Intersect(Target, Range("H5:H" & Range("B" & Rows.Count).End(xlUp).Row)) Is Nothing Then
'Target.Offset(0, -1).Select
Comblement.Show
End If
End If

Bonjour maîtres VBA,

je tente un petit UP pour compléter ce code.

L'idée c'est que les utilisateurs naviguent sur la ligne avec le TAB, et rendu à la colonne H, je souhaite les forcer à remplir la cellule, une fois complétée, l'userform Comblement se déclenche.

J'ai l'impression qu'il ne manque pas grand chose, mais jusqu'à ce jour, je n'ai pas trouvé la solution!

Merci

If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("H5:H" & Range("B" & Rows.Count).End(xlUp).Row)) Is Nothing Then
If IsEmpty(Target.Offset(0, 0)) Then
MsgBox ("Incrivez vos initiales avant de poursuivre.")
Target.Offset(0, 0).Select
Cancel = True

'Rendu là je voudrais, qu'une fois les initiales inscrites en H, se déclenche l'userform Comblement.

Else

'Ici je crois ne pas être sur la bonne route.... Il faut sans doute un «si cellule non vide, alors...»

Target.Offset(0, 0).Select
If Not Application.Intersect(Target, Range("H5:H" & Range("B" & Rows.Count).End(xlUp).Row)).Text = "" Then
Comblement.Show
'End If
End If
End If
End If

Bonjour le forum,

je vous reviens avec ce petit problème pour lequel je n'ai pas trouvé de solution!

Merci d'avance

Bonjour

Même sans proposition de solution pour ce problème, je ferme malgré moi ce poste...

je tiens à remercier tous ceux et celles y ayant participés !

À bientôt pour d'autres sujets

Rechercher des sujets similaires à "obligation completer"