Retour à un format prédéfini apres une mise en forme conditionnelle via VBA

  • Initiateur de la discussion Initiateur de la discussion Poto
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Poto

XLDnaute Occasionnel
Bonjour le forum, salut à tous,

je cherche à faire une mise en forme conditionnelle via vba (jusqu'ici pas de probleme) avec la possibilité de retourne à une mise en forme predefini, sur une autre sheet, lorsque aucune condition ne n'ai rempli.

je joins un fichier avec dans la feuille 1 une colonne verte dans laquelle on peut choisir une activité ( ON ou OFF). Lorqu'on choisi l'un des 2 choix, la mise en forme s'execute, mais lorsque j'efface l'activité (cad qu'il n'y a ni ON ni OFF dans la cellule), alors j'aimerai que la mise en forme de ces cellules reviennent à un état similaire à celui de la "référence" ce situant sur une autre feuille (Feuil2) et se nommant "FormatPlanning".
Afin de pourvoir repérer quel format doit etre appliquer je penser utiliser les numeros ID se situant colonne A.

Voici le code utiliser actuellement
Private Sub Worksheet_Change(ByVal Target As Range)


'On Error GoTo Worksheet_Change_Error


If Target.Text = "ON" Then
Target.Interior.Color = 65280
Target.Offset(0, 1).Interior.Color = 65280
Target.Offset(0, 2).Interior.Color = 65280
Target.Offset(0, 3).Interior.Color = 65280

ElseIf Target.Text = "OFF" Then
Target.Interior.Color = 49407 ' Color cell interior orange
Target.Offset(0, 1).Interior.Color = 49407
Target.Offset(0, 2).Interior.Color = 49407
Target.Offset(0, 3).Interior.Color = 49407

Else

Dim LigneTargetCell As String
Dim AdresseCellFormat As String

LigneTargetCell = Range("A" & Target.Row)
AdresseCellFormat = Application.WorksheetFunction.Match(LigneTargetCell, FormatPlanning, 0)


Target.Interior.Color = Range(AdresseCellFormat).Color
Target.Offset(0, 1).Interior.Color = Range(AdresseCellFormat).Offset(0, 1).Color
Target.Offset(0, 2).Interior.Color = Range(AdresseCellFormat).Offset(0, 2).Color
Target.Offset(0, 3).Interior.Color = Range(AdresseCellFormat).Offset(0, 3).Color
End If

Exit Sub

End Sub


toute aide/idée est la bienvenue et je suis ouvert à d'autre technique alternative (à savoir que je souhaite passer par cette technique plutot que par une mise en forme conditionnelle conventionnelle, car la feuille sur laquelle cete macro doit fonctionner fait plus de 4000 lignes et l'exemple ci joins ce repete plus de 300 fois, et c'est une galere a maintenir si une colonne ou une ligne est ajouté)

merci d'avance à tous 😉

Poto
 

Pièces jointes

Re : Retour à un format prédéfini apres une mise en forme conditionnelle via VBA

Super, merci beaucoup PierreJean

ca fonctionne nikel 😉
comme je suis curieux et que j aime bien savoir coment les choses fonctionne, pourrais tu m'explquer a quoi sert "flag" dans ton code ?? c est un control d'erreur ?

merci encore beaucoup de ton aide 😉


Pour ceux que ca interesse ( j'ai vu qu'il y a quelques demande sur la mise en forme conditionnelle aujourd'hui, voici le code retoucher par pierrejean et 100% fonctionnel ;

Public flag As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If flag Then Exit Sub
flag = True

'On Error GoTo Worksheet_Change_Error


If Target.Text = "ON" Then
Target.Interior.Color = 65280 ' Color cell interior green 'xlNone = Sans couleur de remplissage
Target.Offset(0, 1).Interior.Color = 65280
Target.Offset(0, 2).Interior.Color = 65280
Target.Offset(0, 3).Interior.Color = 65280

ElseIf Target.Text = "OFF" Then
Target.Interior.Color = 49407 ' Color cell interior orange
Target.Offset(0, 1).Interior.Color = 49407
Target.Offset(0, 2).Interior.Color = 49407
Target.Offset(0, 3).Interior.Color = 49407

Else

ide = Target.Offset(0, -1)
Set c = Sheets("Feuil2").Cells.Find(ide, LookIn:=xlValues, lookat:=xlWhole)
Sheets("Feuil2").Range(c.Offset(0, 1), c.Offset(0, 4)).Copy Destination:=Target

End If
flag = False

End Sub
 
Re : Retour à un format prédéfini apres une mise en forme conditionnelle via VBA

Re

Il s'agit d'une des methodes pour eviter d'avoir une macro qui boucle indefiniment
Si dans une macro worksheet_change je crée un changement , ce changement lancera a nouveau la worksheet_change qui creera un changement qui lancera .....
L'idée est donc qu'entre le flag=true et le flag=false la worksheet soit inoperante d'ou le if flag then exit sub du debut
 
Re : Retour à un format prédéfini apres une mise en forme conditionnelle via VBA

Re

Il s'agit d'une des methodes pour eviter d'avoir une macro qui boucle indefiniment
Si dans une macro worksheet_change je crée un changement , ce changement lancera a nouveau la worksheet_change qui creera un changement qui lancera .....
L'idée est donc qu'entre le flag=true et le flag=false la worksheet soit inoperante d'ou le if flag then exit sub du debut

merci beaucoup pour l'info 😉

sinon, juste une derniere question en restant sur le sujet... Existe t il une methode utilisant la mise en forme conditionnelle conventionnelle pour qu'une cellule se dise :"Si la cellule à ma droite contient le texte "ON", mon remplissage prend telle couleur " ???

merci encore pour tes éclaircissements 😉
 
Re : Retour à un format prédéfini apres une mise en forme conditionnelle via VBA

Re

Il me semble qu'avec 2007/2010 la formule soit pour la cellule K2 : =J2="ON"
ensuite il suffit de reproduire la mise en forme pour qu'Excel interprete le 'cellule a ma droite'
 
Re : Retour à un format prédéfini apres une mise en forme conditionnelle via VBA

Salut pierrejean,

je reviens vers toi car apres plusieurs essai, j'arrive pas à faire ceci:

ensuite il suffit de reproduire la mise en forme pour qu'Excel interprete le 'cellule a ma droite'


que voulez tu dire par reproduire la formule pour qu'excel interprete "la cellule a ma droite" ??
car la formule fonctionne mais la cellule ce colore que vers la gauche, pas vers la droite 🙁

une idée ?


merci d avance 😉

Poto
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
102
Réponses
6
Affichages
158
Réponses
25
Affichages
604
Retour