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

interdire la saisie sur couleur

D

didier

Guest
bonjour,

Je cherche sur une feuille a interdir la saisie, sur des cellules si celles ci ont certaine couleur bien précise (rouge, violet et orange).

Ces cellules ont une mise en forme conditionnel qui détermine leur couleur de fond

Merci pour votre aide précieuse.
Ðidier
 
H

Hervé

Guest
bonjour

Une proposition en vba à mettre dans l'objet feuil (alt + F11) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Interior.ColorIndex = 3 Then
MsgBox ("non")
Target.Offset(0, 1).Select

End If

End Sub

Si la couleur de la cellule est rouge, alors msgbox et selection de la cellule d'a coté.

Salut
Hervé
 
D

didier

Guest
j'ai essayé ta solution,dans un classeur vide et dans le mien
Elle fonctionne trés bien si la cellule n'est pas lier a une mise en forme conditionnel.
Or dans se cas la il y a une mise en forme conditionnel. Plus un recopiage dans la cellule.


On pourrait peut être tourner le probléme autrement
en spécifiant que l'on ne peut écrire que sur les cellules blanches ou jaune situé dans un cadre de A1 a S41.
Est ce possible ?

merci
Ðidier
 
J

jmps

Guest
Bonjour Didier, Bonjour Hervé,

J'ai essayé aussi avec le .Interior.ColorIndex mais apparemment quand la couleur est donnée par la MFC, on ne peut pas la récupérer en VBA. Ce qui est dommage quand même.
Interior.ColorIndex donne la couleur de la mise en forme normale.
Pour l'instant je ne vois pas de solution. Je vais réfléchir encore.

Bon courage.

José
 
H

Hervé

Guest
re

Bizarre, que l'on puissent pas récupérer en vba la couleur d'une mfc.

Didier, tu ne peut pas tourner le problème à l'envers parce que vba va interpréter tes cellules rouges comme sans couleur.

Par contre on peut, peut-etre, utiliser la même condition du mfc pour interdire la saisie sur les cellules rouges.

exemple en pièce jointe

salut
Hervé
 

Pièces jointes

  • Classeur1.zip
    7.5 KB · Affichages: 35
  • Classeur1.zip
    7.5 KB · Affichages: 34
  • Classeur1.zip
    7.5 KB · Affichages: 38
D

didier

Guest
bonjour Hervé

Ton bout de vba marche trés bien.

Mais la on s'éloigne de mon prblme.

Ce qui est primordiale c'est que la cellule en rouge reste vierge de toute valeur. il en va de même pour les oranges et les violettes.
Ce que je veux c'est interdir toute frappe intempestive dans ces cellules, de la part des utilisateurs.

merci tout de même, c'est bien sympa a toi
Ðidier
 
H

Hervé

Guest
re

Désolé de n'avoir pas pu t'aider plus :

As-tu penser à la protection de la feuille sauf des cellules a remplir

si tes cellules a portéger sont toujours les mêmes essaye ceci :

exemple pour interdire la selection des cellules A1 B2 C3 et D4

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("a1,b2,c3,d4")) Is Nothing Then
Target.Offset(0, 1).Select
End If
End Sub

et cette derniere interdit la selection de cellule dans la colonne B :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then
Target.Offset(0, 1).Select
End If
End Sub

En espérant que tous ceci de rendra service

Salut
Hervé
 
D

didier

Guest
merci quand même hervé
mais les cellules sont aléatoires et change de couleur en fonction de plusieurs critéres.

Par contre j'ai bien aimer ton petit code (le1er), j'entrevoie peut-être une solution

a bientôt
Ðidier
 
H

Hervé

Guest
re final

Je reviens à la charge parce que je pense que ceci peut être utile à quelqu'un.

Cette macro interdit la selection d'une cellule si celle-ci contient une MEFC avec comme critère la présence de la couleur rouge comme format de la MEFC.

Dans le cas d'une MEFC a plusieurs conditions il suffit qu'une des conditions prenne le format rouge pour que la macro s'exécute.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each mefc In ActiveCell.FormatConditions
If mefc.Interior.ColorIndex = 3 Then
Target.Offset(0, 1).Select
End If
Next mefc

End Sub

salut
Hervé
 
J

jmps

Guest
Bonjour Didier, Bonjour Hervé,

J'ai regardé partout sur l'aide et sur Excelabo.net. Pas vu de moyen de récupérer le ColorIndex donné par la MFC.
Je ne vois qu'un moyen c'est de ne pas utiliser la MFC mais de mettre en forme les cellules par le code VBA en fonction des conditions requises. Ce qui permet au passage d'en interdire la saisie lorsque cela est nécessaire.
Il y a sur le forum, plusieurs fils qui parlent de MFC par code VBA pour transgresser la limite des trois conditions, je pense que tu peux t'en inspirer Didier.

J'espère que cela pourra résoudre ton problème.

Bonne journée.

José
 

Discussions similaires

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