Bonjour tout le monde,
voici un de mes problèmes avec mon tableau Excel, voici un de mes problèmes avec mon tableau excel, j'aimerais obliger l'utilisateur de mettre un "X" sur la cellule E15 ou F15 ou G15 ou H15 avant de remplir la cellule E17. Même chose avec la deuxième ligne, il faut que l'utilisateur remplisse la cellule E16 ou F16 ou G16 ou H16 avant de remplir la cellule E17. En gros il faut bloquer la cellule E17 si l'utilisateur n'a pas rempli au moins deux de ces cellules.
En PJ le fichier Excel pour mieux comprendre.
Merci de bien vouloir m'aider, je ne suis pas une pro mais j'aimerais apprendre
Au plaisir de vous lire
Zoman
A Zoman : je n'ai pas ouvert ton classeur (je ne le fais jamais)
voici, sur la seule base, donc, de ce que tu as exposé, ce que je ferais personnellement :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E16:H" & Rows.Count)) Is Nothing Then
Dim toto As Range, OK As Boolean
Set toto = Range("E" & Target.Row - 1 & ":H" & Target.Row - 1)
On Error Resume Next
OK = Not toto.SpecialCells(xlCellTypeConstants) Is Nothing
On Error GoTo 0
If Not OK Then
Range("E" & Target.Row - 1).Select
Else
If Range("A21").Value = "" Then Range("A21").Select
End If
End If
End Sub
Merci beaucoup pour votre réponse mais si je mets "X" sur E15 l'utilisateur peut quand même remplir la cellule E17 alors qu'il n'a pas encore rempli la deuxième ligne c'est à dire soit E16 ou F16 ou G16 ou H16. l'idée c'est de remplir une cellule de chaque ligne avant de passer à la cellule E17.
Merci beaucoup pour votre réponse mais si je mets "X" sur E15 l'utilisateur peut quand même remplir la cellule E17 alors qu'il n'a pas encore rempli la deuxième ligne c'est à dire soit E16 ou F16 ou G16 ou H16. l'idée c'est de remplir une cellule de chaque ligne avant de passer à la cellule E17.
Est ce possible si l'utilisateur a rempli la plage G15:H16 c'est à dire les items M ou I d'être notifier de remplir la partie commentaire (cellule A21).
En gros il faut obligatoirement remplir la cellule A21 si l'utilisateur a coché un des items M ou I
A Zoman : je n'ai pas ouvert ton classeur (je ne le fais jamais)
voici, sur la seule base, donc, de ce que tu as exposé, ce que je ferais personnellement :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E16:H" & Rows.Count)) Is Nothing Then
Dim toto As Range, OK As Boolean
Set toto = Range("E" & Target.Row - 1 & ":H" & Target.Row - 1)
On Error Resume Next
OK = Not toto.SpecialCells(xlCellTypeConstants) Is Nothing
On Error GoTo 0
If Not OK Then
Range("E" & Target.Row - 1).Select
Else
If Range("A21").Value = "" Then Range("A21").Select
End If
End If
End Sub
A Zoman : je n'ai pas ouvert ton classeur (je ne le fais jamais)
voici, sur la seule base, donc, de ce que tu as exposé, ce que je ferais personnellement :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E16:H" & Rows.Count)) Is Nothing Then
Dim toto As Range, OK As Boolean
Set toto = Range("E" & Target.Row - 1 & ":H" & Target.Row - 1)
On Error Resume Next
OK = Not toto.SpecialCells(xlCellTypeConstants) Is Nothing
On Error GoTo 0
If Not OK Then
Range("E" & Target.Row - 1).Select
Else
If Range("A21").Value = "" Then Range("A21").Select
End If
End If
End Sub
Je comprends pas trop les macros, j'ai copié votre code macro mais ça m'affiche "erreur de compilation End Sub attendu". Y'en a deux End Sub dans le code j'ai effacé le premier mais j'ai toujours le message d'erreur.
je ne vois aucune erreur de end sub (en trop ou absent) dans le code que j'ai montré (et au demeurant testé).
j'en conclus donc qu'il a mal été copié/collé ou encore qu'il a été indument inséré dans une autre procédure !
je ne vois aucune erreur de end sub (en trop ou absent) dans le code que j'ai montré (et au demeurant testé).
j'en conclus donc qu'il a mal été copié/collé ou encore qu'il a été indument inséré dans une autre procédure !