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

XL 2013 changement de couleur de police qd cellule modifiée

michel.dupont

XLDnaute Occasionnel
bonjour
je travaille dans une institution pour personnes handicapées
je voudrais dans le fichier en attaché qui sert à établir les menu du jour pour les cuisines faire en sorte que les cellules de la plage b626 changent de couleur de police en rouge lorsque la cellule est modifiée.Seuls les cellules en blanc peuvent être encodées ;les cellules en couleurs ne peuvent être modifiées et la feuille est protégé par un mot de passe "cuisine".Les cellules en blanc ne sont pas verrouillées. Mon code ne fonctionne que quand le mot de passe est levée ce qui donne la possibilité de modifier les cellules en couleurs ce qui ne devrait pas se faire.Voilà mon code et mon fichier en attaché .
Par avance merci pour votre aide
Michel
Private Sub Worksheet_Change(ByVal Target As Range)
Dim modifiedCell As Range
Dim modifiedRange As Range

' Check if the modification is within the specified range (B626)
Set modifiedRange = Intersect(Target, Range("B626"))
If Not modifiedRange Is Nothing Then
' Loop through each modified cell in the range
For Each modifiedCell In modifiedRange
' Change the font color to red
modifiedCell.Font.Color = RGB(255, 0, 0) ' Red
Next modifiedCell
End If
End Sub
 

Pièces jointes

  • castest - Copie.xlsm
    72.3 KB · Affichages: 5

Gégé-45550

XLDnaute Accro
Bonsoir,
Ajouter au début de la procédure Worksheet_Change la ligne suivante
ActiveSheet.Unprotect "cuisine"
puis en fin de procédure la ligne :
ActiveSheet.Protect "cuisine"
NB : Utiliser le menu adéquat ci-dessus (</>) pour insérer du code dans votre message, cela évitera les smileys intempestifs et rendra la lecture de votre question plus claire.
Cordialement,
 

Gégé-45550

XLDnaute Accro
bonjour
Merci de votre réponse mais le problème reste identique.J e remets le fichier en attaché ace le code modifié au cas ou
cordialement
Michel
Bonjour,
Remplacer le code de la Sub par celui-ci :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "cuisine"
Dim modifiedCell As Range
Dim modifiedRange As Range
' Check if the modification is within the specified range (B6:p26)
Set modifiedRange = Intersect(Target, Range("B6:P26"))
    If modifiedRange.Count > 1 Then Exit Sub
    If modifiedRange.Interior.Color <> RGB(255, 255, 255) Then
        Application.EnableEvents = False
        Application.Undo
        GoTo fin
    End If
    If Not modifiedRange Is Nothing Then
        ' Loop through each modified cell in the range
        For Each modifiedCell In modifiedRange
            ' Change the font color to red
            modifiedCell.Font.Color = RGB(255, 0, 0) ' Red
        Next modifiedCell
    End If
    ActiveSheet.Protect "cuisine"
    Exit Sub
fin:
    Application.EnableEvents = True
    ActiveSheet.Protect "cuisine"
End Sub
Cordialement,
 

michel.dupont

XLDnaute Occasionnel
Bonjour grand merci pour votre aide
le code fonctionne mais lorsqu'on enregistre le fichier et qu'on l'ouvre à nouveau il y a un message d'erreur
sur la ligne count
message erreur d'exécution 91
variable objet ou variable de bloc with non définie
Voyez-vous quelque chose à modifier dans le code?
Bonne journée
cordialement
Michel
 

michel.dupont

XLDnaute Occasionnel
code quasi parfait mes amis mais je ne comprends pas pourquoi le changement de couleur de police des cellules modifiées ne peut se faire que sur les cellules sans couleurs...sur une cellule par exemple de fond orange cela ne fonctionne pas ...merci par avance pour votre aide
Michel
le code
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "cuisine"
Dim modifiedCell As Range
Dim modifiedRange As Range

' Vérifie si la modification se situe dans la plage spécifiée (B626)
Set modifiedRange = Intersect(Target, Range("B626"))

If modifiedRange Is Nothing Then Exit Sub ' Quitte si aucune cellule modifiée dans la plage spécifiée
If modifiedRange.Count > 1 Then Exit Sub
If modifiedRange.Interior.Color <> RGB(255, 255, 255) Then
Application.EnableEvents = False
Application.Undo
GoTo fin
End If

' Boucle à travers chaque cellule modifiée dans la plage
For Each modifiedCell In modifiedRange
' Change la couleur de police en rouge
modifiedCell.Font.Color = RGB(255, 0, 0) ' Rouge
Next modifiedCell

ActiveSheet.Protect "cuisine"
Exit Sub

fin:
Application.EnableEvents = True
ActiveSheet.Protect "cuisine"
End Sub
 

TooFatBoy

XLDnaute Barbatruc
Mon code ne fonctionne que quand le mot de passe est levée ce qui donne la possibilité de modifier les cellules en couleurs ce qui ne devrait pas se faire.Voilà mon code et mon fichier en attaché .
J'ai bien constaté le problème avec ton fichier de #1, et à force de tester des choses (entre autre avec UserInterfaceOnly) j'avais fini par débloquer la situation.
 
Dernière édition:

Gégé-45550

XLDnaute Accro
code quasi parfait mes amis mais je ne comprends pas pourquoi le changement de couleur de police des cellules modifiées ne peut se faire que sur les cellules sans couleurs...sur une cellule par exemple de fond orange cela ne fonctionne pas
Ben .... euh ... !
C'est bien la demande initiale, non ?
Seuls les cellules en blanc peuvent être encodées ;les cellules en couleurs ne peuvent être modifiées et la feuille est protégé par un mot de passe "cuisine".Les cellules en blanc ne sont pas verrouillées.
 

Discussions similaires

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