XL 2010 Obligation de remplir des cellules avant de passer à une autre cellule : code macro ?

Zoman

XLDnaute Junior
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
 
Solution
Bonjour à tous

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

Zoman

XLDnaute Junior
Bonjour, j'ai un autre soucis !

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

En PJ le fichier

Par avance merci de vos réponses
 

jmfmarques

XLDnaute Accro
Bonjour à tous

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
 

Zoman

XLDnaute Junior
Bonjour à tous

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

Bonjour jmfmarques

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.

Merci
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki