XL 2010 Protection de cellules en fonction de la valeur saisie dans une autre (saisie sous forme de tableau)

DISERBEAU

XLDnaute Nouveau
Bonjour,

Je suis un vieil informaticien et depuis quelque temps j'ai découvert la puissance d'EXCEL sans en connaitre toute l'étendue.
J'ai besoin de chercher des solutions sur les différents forums et je me suis arrêté à celui-ci en m'y inscrivant,

En ce moment je suis préoccupé par le problème suivant :


1/ je fais une saisie de type tableau dans une feuille de type :



Action Sens MachineS PathS MachineC PathC

XX XXX XXX XXX XXX XXX

XX XXX XXX XXX XXX XXX

XX XXX XXX XXX XXX XXX

XX XXX XXX XXX XXX XXX

XX XXX XXX XXX XXX XXX

XX XXX XXX XXX XXX XXX

…..

2/ Voici ce que je souhaite :

Si sur une ligne, si le sens = S2G alors les cellules MachineS et PathS ne doivent pas être saisissables

Si sur une ligne, si le sens = C2G alors les cellules MachineC et PathC de la même ligne ne doivent pas être saisissables

Dans les autres cas, ces cellules doivent être saisissables



3/ Bien entendu, ceci est valable par ligne, à savoir, par exemples :

  • la ligne 1 peut avoir un sens à DDD et toutes les cellules doivent être ouvertes…
  • la ligne 2 peut avoir un sens à S2G et seules les cellules MachineS et PathS ne doivent pas être saisissables
  • la ligne 3 peut avoir un sens à S2C et seules les cellules MachineC et PathC ne doivent pas être saisissables
  • Et il n’y a aucune saisie en ligne 4
4/ je vous remercie de toutes vos exemples de code,,, car je n’avance pas sur ce sujet depuis 1j !!!
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Diserbeau,
Sans fichier exemple difficile de se prononcer.
Une solution est d'utiliser une procédure Sub Worksheet_Change avec les bon range.
A chaque fois que vous voulez saisir des cellules MachineS ou PathS le VBA prend la main et autorise ou non l'action.
Un exemple en PJ.
 

Pièces jointes

  • Essai.xlsm
    15.9 KB · Affichages: 3
Dernière édition:

DISERBEAU

XLDnaute Nouveau
J'étais en train de construire un fichier schéma que voici…
Les cellules des colonnes contiennent des formules qui construisent la valeur ou pas de la cellule … selon la valeur des cellules de la colonne
il ne faut donc pas que la cellule "calculée" puisse être écrasée ... mais puisse être saisie si la direction fait qu'elle n'est pas calculée
 

Pièces jointes

  • Schéma.xlsx
    11.6 KB · Affichages: 3

DISERBEAU

XLDnaute Nouveau
J'étais en train de construire un fichier schéma que voici…
Les cellules des colonnes
1581523480113.png
contiennent des formules qui construisent la valeur ou pas de la cellule … selon la valeur des cellules de la colonne
1581523503128.png

il ne faut donc pas que la cellule "calculée" puisse être écrasée ... mais puisse être saisie si la direction fait qu'elle n'est pas calculée
 

DISERBEAU

XLDnaute Nouveau
Je teste et vous redis…. A priori… lors des 1ers tests… je tombe sur le fait qu'il est possible faire un copier-coller d'une cellule vers une cellule qui affiche que la saisie est interdite

je vous remercie déjà grandement pour ce code qui me montre la marche de progression que j'ai devant moi

merci déjà pour ce 1er jet

Bonjour Diserbeau,
Sans fichier exemple difficile de se prononcer.
Une solution est d'utiliser une procédure Sub Worksheet_Change avec les bon range.
A chaque fois que vous voulez saisir des cellules MachineS ou PathS le VBA prend la main et autorise ou non l'action.
Un exemple en PJ.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Une solution radicale, interdire le copier coller.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.CutCopyMode = False
    Application.CellDragAndDrop = False
    If Target.Column = 5 Or Target.Column = 6 Then  ' si colonne MachineC ou pathC
        If Cells(Target.Row, 2) = "S2G" Or Cells(Target.Row, 2) = "C2G" Then
            MsgBox "Saisie interdite."
        End If
    End If
End Sub
 

DISERBEAU

XLDnaute Nouveau
Chapeau bas… celle-là, je vais la recopier …. Je ne savais pas que cela existait

Pour finir le job… est-il possible d'interdirmessage e saisie aussi ? Car j'arrive à saisir dans les cellules même si le message "saisie interdite" s'affiche ?



VB:Copier dans le presse-papier
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
Application.CellDragAndDrop = False
If Target.Column = 5 Or Target.Column = 6 Then ' si colonne MachineC ou pathC
If Cells(Target.Row, 2) = "S2G" Or Cells(Target.Row, 2) = "C2G" Then
MsgBox "Saisie interdite."
End If
End If
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si ça,
est-il possible d'interdirmessage e saisie aussi
Ca veut dire interdire le message d'alerte, il suffit de supprimer la ligne MsgBox "Saisie interdite."
Vous pouvez le remplacez par :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.CutCopyMode = False
    Application.CellDragAndDrop = False
    If Target.Column = 5 Or Target.Column = 6 Then  ' si colonne MachineC ou pathC
        If Cells(Target.Row, 2) = "S2G" Or Cells(Target.Row, 2) = "C2G" Then
           Cells(Target.Row, 2).Select
        End If
    End If
End Sub
de cette façon le curseur revient automatiquement sur la colonne Sens.
 

DISERBEAU

XLDnaute Nouveau
Bonsoir,
J'ai implanté le VB dans mon schéma et cela ne fonctionne pas.
Je me permets de te renvoyer mon schéma avec le code... en sachant que je t'ai rappelé les règles (comme tu l'avais fait) sur l'onglet
Pouvez-vous me dire ce qui ne convient pas ?
 

Pièces jointes

  • Schéma.xlsm
    17.8 KB · Affichages: 2

DISERBEAU

XLDnaute Nouveau
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   
Application.CutCopyMode = False
Application.CellDragAndDrop = False

If Target.Column = 5 Or Target.Column = 6 Then
  If Cells(Target.Row, 2) = "S12C" Then
     MsgBox "Saisie interdite."
  End If
End If
If Target.Column = 3 Or Target.Column = 4 Then
  If Cells(Target.Row, 2) = "S12G" Then
     MsgBox "Saisie interdite."
  End If
End If

End Sub

Cela fonctionne merci
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 146
Membres
112 669
dernier inscrit
Guigui2502