Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

interior.color avec couleur issue de MFC

15 réponses
Avatar
JP
Bonjour,

je voudrais d=E9prot=E9ger les cellules dont la couleur de fond est identif=
i=E9e (un gris).
Je pensais utiliser activecell.interior.color pour identifier ce gris. Je =
m'aper=E7ois que =E7a ne marche pas car le fond est issu d'une MFC.

Comment puis-je faire?

Merci

JP

10 réponses

1 2
Avatar
Jacky
Bonjour,

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

--
Salutations
JJ


"JP" a écrit dans le message de news:

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
Avatar
JP
Bonjour Jacky,

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

Merci

JP
Avatar
Jacky
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" a écrit dans le message de news:

Bonjour Jacky,

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

Merci

JP
Avatar
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 pl an la 3ème case.
Tu as blanc ensuite noir et enfin le gris que j'ai choisi.

JP
Avatar
Jacky
Re...
Remplace
If c.Interior.Color = X Then
par
'-----------------
If c <> "" And Application.VLookup(c, Range("tab_annexes"), 4, False) <> "" Then
'-----------------
et teste

--
Salutations
JJ


"JP" a écrit dans le message de news:

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
Avatar
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
Avatar
Jacky
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" a écrit dans le message de news:

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

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


JP
Avatar
JP
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
Avatar
JP
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
Avatar
Jacky
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" a écrit dans le message de news:

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