Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

st007

XLDnaute Barbatruc
Une validation de donnée est elle suffisante

oops, j'avais mal lu ...
VB:
=ET(NBVAL($E$15:$H$15)>0;NBVAL($E$16:$H$16)>0)
 

Pièces jointes

  • Test.xlsx
    10.4 KB · Affichages: 8
Dernière édition:

Zoman

XLDnaute Junior
Une validation de donnée est elle suffisante
Bonjour,

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
 

st007

XLDnaute Barbatruc
D'ou le oops, l'édition .....
 

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
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Pour obliger, il faut passer par VBA sinon on peut prévenir avec donnée validation sur la plage G15:H16.

JHA
 

Pièces jointes

  • Copie de Test-3.xlsx
    11.2 KB · Affichages: 7

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 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
 

jmfmarques

XLDnaute Accro
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 !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…