interior.color avec couleur issue de MFC

Le
JP
Bonjour,

je voudrais déprotéger les cellules dont la couleur de fond est identif=
iée (un gris).
Je pensais utiliser activecell.interior.color pour identifier ce gris. Je =
m'aperçois que ça ne marche pas car le fond est issu d'une MFC.

Comment puis-je faire?

Merci

JP
Vidéos High-Tech et Jeu Vidéo
  • Présentation de Color OS 2.1, la nouvelle ROM Android d'Oppo basée sur Android ...
  • Vidéo de gameplay de la version GameBoy Color de Resident Evil jamais commercialisée et ...
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacky
Le #25777352
Bonjour,

Utiliser la même condition qui met en gris dans la MFC

--
Salutations
JJ


"JP"
Bonjour,

je voudrais déprotéger les cellules dont la couleur de fond est identifiée (un gris).
Je pensais utiliser activecell.interior.color pour identifier ce gris. Je m'aperçois que ça ne marche pas car
le fond est issu d'une MFC.

Comment puis-je faire?

Merci

JP
JP
Le #25777342
Bonjour Jacky,

Je ne comprends pas, tu peux me donner ou me faire un exemple?

Merci

JP
Jacky
Le #25777362
Re...
Dis moi ce qu'il y a dans la MFC des cellules grises et la plage de ces cellules
et donne le code que tu utilises pour la dé-protection
--
Salutations
JJ


"JP"
Bonjour Jacky,

Je ne comprends pas, tu peux me donner ou me faire un exemple?

Merci

JP
JP
Le #25777482
Jacky,

Le code utiliser pour déprotéger les cellules fond gris:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A8:A108")) Is Nothing Then
For Each c In Range("E8:M108")
If c.Interior.Color = X Then 'x code gris en question
c.Locked = False
Else
c.Locked = True
End If
Next
End If
End Sub

La formule que j'ai dans la MFC
=ET($A10<>"";RECHERCHEV($A10;tab_annexes;4;FAUX)<>"")

Le format si la condition est vrai j'ai choisi comme couleur d'arrière pl an la 3ème case.
Tu as blanc ensuite noir et enfin le gris que j'ai choisi.

JP
Jacky
Le #25777642
Re...
Remplace
If c.Interior.Color = X Then
par
'-----------------
If c '-----------------
et teste

--
Salutations
JJ


"JP"
Jacky,

Le code utiliser pour déprotéger les cellules fond gris:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A8:A108")) Is Nothing Then
For Each c In Range("E8:M108")
If c.Interior.Color = X Then 'x code gris en question
c.Locked = False
Else
c.Locked = True
End If
Next
End If
End Sub

La formule que j'ai dans la MFC
=ET($A10<>"";RECHERCHEV($A10;tab_annexes;4;FAUX)<>"")

Le format si la condition est vrai j'ai choisi comme couleur d'arrière plan la 3ème case.
Tu as blanc ensuite noir et enfin le gris que j'ai choisi.

JP
JP
Le #25777652
Erreur execution 1004
La méthode Range de l'objet worksheet a échoué

Vois ci joint un fichier exemple: http://cjoint.com/?CKllhERBr22


JP
Jacky
Le #25778032
Re...
Je ne saisie pas tes MFC
Tu as en E16 par exemple
=ET($A16<>"";RECHERCHEV($A16;tab_annexes;2;FAUX)<>"")
Qui est sensé contrôler une date en colonne 2 du tableau "tab_annexes", alors que dans le tableau
"tab_annexes" aucune colonne ne contient de date

--
Salutations
JJ


"JP"
Erreur execution 1004
La méthode Range de l'objet worksheet a échoué

Vois ci joint un fichier exemple: http://cjoint.com/?CKllhERBr22


JP
JP
Le #25778162
J'ai deux MFC.
La première teste s'il y a une valeur dans un tableau avec la fonction re cherchev.
La deuxième teste s'il y a une valeur dans un tableau avec la fonction re cherchev et s'il y a une valeur dans la colonne date.

Dans le premier cas (un spectre pour montrer où il faut rentrer des valeu rs) un fond couleur gris.
Dans le deuxième cas l'utilisateur va entrer des valeurs dans les cellule s grisées. Elles prennent la couleur définie dans le format de la deuxi ème MFC.

Tu remarqueras que le gris est commun à toutes les colonnes annexes 3 à 5 alors que la deuxième MFC la couleur change en fonction de l'annexe. B leu pour l'annexe 3, Vert pour l'annexe 4 et enfin brique pour l'annexe 5.

JP
JP
Le #25778622
Rien à faire le code bloc toujours sur:
If c = Cl And Application.VLookup(c, Range(tab_annexes), 2, False) <> "" Then

Tout à l'air conforme pourtant dans le code proposé par Jacky.
Voici le code complet:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cl As String, c As Range
Dim li As Integer
If Not Intersect(Target, Range("A8:A108")) Is Nothing Then
' récupère la classe et la ligne active
Cl = ActiveCell.Value
li = ActiveCell.Row
'
For Each c In Sheets("Donnees").Range("B3:E60")
If c = Cl And Application.VLookup(c, Range(tab_annexes), 2, F alse) <> "" Then
Sheets("planning").Range("E" & li & ":G" & li).Select
Selection.Locked = False
ElseIf c = Cl And Application.VLookup(c, Range(tab_an nexes), 3, False) <> "" Then
Sheets("planning").Range("H" & li & ":J" & li).Sele ct
Selection.Locked = False
ElseIf c = Cl And Application.VLookup(c, Rang e(tab_annexes), 4, False) <> "" Then
Sheets("planning").Range("K" & li & ":M" & li).Select
Selection.Locked = False
Else
Sheets("planning").Range("E" & li & ":M" & li).Select
Selection.Locked = True
MsgBox "Aucune formation n'est prévue pour cette clas se. Vous devez entrer des données de formation "
Exit For
End If
Next
End If

End Sub

Merci pour le conseil qui va débloquer la situation.

JP
Jacky
Le #25778912
Re...
Essaie comme ceci
-================= Private Sub Worksheet_Change(ByVal Target As Range)
Dim ColRech As Integer, a As Integer, i As Integer, j As Integer
Application.EnableEvents = False
If Not Intersect(Target, Range("A8:A108")) Is Nothing Then
'' ------- Déprotèges les feuilles ----------
' Set Feuille = ActiveSheet
' DeprotegeFeuilles
' Feuille.Activate
''-------------------------------------------
ColRech = 1
For a = 5 To 13 Step 3
ColRech = ColRech + 1
For i = 8 To 108 Step 2
For j = a To a + 2
If Cells(i, 1) <> "" Then
If Application.VLookup(Cells(i, 1), [tab_annexes], ColRech, False) <> "" Then
Cells(i, j).Locked = False
Else
Cells(i, j).Locked = True
End If
End If
Next
Next
Next
End If
Application.EnableEvents = True
'' ------- Protèges les feuilles ----------
' Set Feuille = ActiveSheet
' ProtegeFeuilles
' Feuille.Activate
''-------------------------------------------
End Sub
Ps: La feuille doit être protéger par la méthode "UserInterfaceOnly"


--
Salutations
JJ


"JP"
J'ai deux MFC.
La première teste s'il y a une valeur dans un tableau avec la fonction recherchev.
La deuxième teste s'il y a une valeur dans un tableau avec la fonction recherchev et s'il y a une valeur dans
la colonne date.

Dans le premier cas (un spectre pour montrer où il faut rentrer des valeurs) un fond couleur gris.
Dans le deuxième cas l'utilisateur va entrer des valeurs dans les cellules grisées. Elles prennent la couleur
définie dans le format de la deuxième MFC.

Tu remarqueras que le gris est commun à toutes les colonnes annexes 3 à 5 alors que la deuxième MFC la couleur
change en fonction de l'annexe. Bleu pour l'annexe 3, Vert pour l'annexe 4 et enfin brique pour l'annexe 5.

JP
Publicité
Poster une réponse
Anonyme