VBA condition selon couleur de cellule

[Fermé]
Signaler
-
 tristan19 -
Bonjour,


Est il possible en VBA avec la fonction IF then else d'effectuer une condition selon la couleur de la cellule. C'est à dire par exemple si la cellule D9 est en rouge alors tu fais cela sinon rien En effet j'ai essayer de chercher mais je ne sais pas quelle donnée mettre *




7 réponses

Messages postés
2967
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
884
Salut le forum

Si la couleur ne provient pas d'une MFC

If Range("D9").Interior.ColorIndex=3 then 'Action à réaliser

Mytå
Merci j'ai essayé avec cette technique mais cela marche pas air air je ne vais plus avoir de cheveux :))
Messages postés
2967
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
884
Re le forum

Si la couleur provient d'une MFC (Mise en Forme Conditionnelle)

mon code ne fonctionnera pas.

Mytå
Messages postés
17572
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
11 octobre 2021
4 767
Salut,

Si on reste sur tes explications, la cellule D9 est colorisée en rouge manuellement en rouge, le code de Myta fonctionne parfaitement

pour le contrôler colles ce code dans un module que tu associes à un bouton
si D9 est rouge alors en F9 tu auras titi

Sub test()
If [D9].Interior.ColorIndex = 3 Then [F9] = "titi"
End Sub

ou plus complexe, si en D9 la couleur est rouge F9 = titi si la couleur est différente F9 est vide

Sub test()
If [D9].Interior.ColorIndex = 3 Then
[F9] = "titi"
Else
[F9] = ""
End If
End Sub

Par contre si le code doit s'appliquer à une plage, il faudra user d'un balayage avec une boucle For


A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
Merci
Cependant je viens de penser à un truc dites moi si c'est possible. En faite ce n'est pas la couleur de la cellule mais la couleur de la police de la cellule. Cependant je me heurte au problème que quelqu'un change cette couleur et foute en l'air du coup la macro. Cependant j'ai des cellules vérouillés et d'autres pas je peux dans la executer une macro avec cette condition
Par exemple ( je ne sais pas la definition pour dire que la cellule est bloquée)
If [D9] ????????? = ??Locked?? Then

[D9] =""
Else
.......................................
En faite la cellule est protégé en lecture seule
J'ai mis cela mais cela ne lmarche pas :(
If classeur1.Sheets("bilan").Range("E9").Locked = True Then

Range("E9") = ""

Else
classeur1.Sheets("bilan").Range("E9").Offset(i, 0).Value = _
Application.WorksheetFunction.VLookup( _
classeur1.Sheets("bilan").Range("D9").Offset(i, 0), _
classeur2.Sheets("bilan").Range("D9:E727"), 2, 0)


End If
Tout
Sub testplantilla()

'voila un bout de code qui va ouvrir 2 fichier par la fenetre _
douverture manuelle et stocker les 2 classeurs dans 2 variable'

Dim classeur1, classeur2 As Workbook

Dim filename As Variant


filename = Application.GetOpenFilename("fichier excel (*.xlsx), *.xlsx", _
, "Sélection de vos fichiers excel", , False)

Set classeur1 = Workbooks.Open(filename)

filename = Application.GetOpenFilename("fichier excel (*.xlsx), *.xlsx", _
, "Sélection de vos fichiers excel", , False)

Set classeur2 = Workbooks.Open(filename)



For i = 0 To 1000


If classeur1.Sheets("bilan").Range("E9").Locked = True Then

Range("E9") = ""

Else
classeur1.Sheets("bilan").Range("E9").Offset(i, 0).Value = _
Application.WorksheetFunction.VLookup( _
classeur1.Sheets("bilan").Range("D9").Offset(i, 0), _
classeur2.Sheets("bilan").Range("D9:E727"), 2, 0)


End If

Next i

End Sub