mise en forme conditionnelle en vba

  • Initiateur de la discussion Initiateur de la discussion winkel
  • 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 !

W

winkel

Guest
Bonjour,
j'ai plusieurs feuilles avec des mise en f.c. qui marchent très bien. mais dès que je fais des copier coller ou deplacement ca devient le foutoir complet.
Est-il possible d'ecrire ces mise en forme de sorte à ce que cela reste en place.

si les valeurs de "F5 à F34"
est supérieur à "F4" => mettre la cel en rouge et la valeur gras+blanc
est inférieur à "F4/2" => mettre la val. en rouge+gras

Merci à +
 
Re : mise en forme conditionnelle en vba

Salut,

Essais de copier le code ci-dessous dans le module ThisWorkbook, comme ca, il devrait fonctionner quelque soit la feuille.

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Range("F5:F34")) Is Nothing Then
    If Target.Count = 1 Then
        If Target.Value <> "" Then
            If Target.Value > Range("F4") Then
                With Target
                    .Interior.ColorIndex = 3
                    .Font.ColorIndex = 2
                    .Font.Bold = True
                End With
            ElseIf Target.Value < (Range("F4") / 2) Then
                With Target
                    .Interior.ColorIndex = xlNone
                    .Font.ColorIndex = 3
                    .Font.Bold = True
                End With
            Else
                With Target
                    .Interior.ColorIndex = xlNone
                    .Font.ColorIndex = 0
                    .Font.Bold = False
                End With
            End If
        Else
            With Target
                .Interior.ColorIndex = xlNone
                .Font.ColorIndex = 0
                .Font.Bold = False
            End With
        End If
    End If
End If
End Sub

@+
 
Re : mise en forme conditionnelle en vba

merci porcinet,

Ca marche, mais dès que tu change la valeur "F4" la mise en forme ne fonctionne que si tu retapes les valeurs.

Et peut-on la mettre sur la feuille et non pas dans le workbook, car j'ai des mise en forme différentes pour chaque feuille

Merci
 
Re : mise en forme conditionnelle en vba

Salut,

Essais de mettre ce code dans le module de la feuille concernée :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i%
If Not Intersect(Target, Range("F5:F34")) Is Nothing Then
    If Target.Count = 1 Then
        If Target.Value <> "" Then
            If Target.Value > Range("F4") Then
                With Target
                    .Interior.ColorIndex = 3
                    .Font.ColorIndex = 2
                    .Font.Bold = True
                End With
            ElseIf Target.Value < (Range("F4") / 2) Then
                With Target
                    .Interior.ColorIndex = xlNone
                    .Font.ColorIndex = 3
                    .Font.Bold = True
                End With
            Else
                With Target
                    .Interior.ColorIndex = xlNone
                    .Font.ColorIndex = 0
                    .Font.Bold = False
                End With
            End If
        Else
            With Target
                .Interior.ColorIndex = xlNone
                .Font.ColorIndex = 0
                .Font.Bold = False
            End With
        End If
    End If
ElseIf Not Intersect(Target, Range("F4")) Is Nothing Then
    For i = 5 To 34
        If Range("F" & i).Value <> "" Then
            If Range("F" & i).Value > Range("F4") Then
                With Range("F" & i)
                    .Interior.ColorIndex = 3
                    .Font.ColorIndex = 2
                    .Font.Bold = True
                End With
            ElseIf Range("F" & i).Value < (Range("F4") / 2) Then
                With Range("F" & i)
                    .Interior.ColorIndex = xlNone
                    .Font.ColorIndex = 3
                    .Font.Bold = True
                End With
            Else
                With Range("F" & i)
                    .Interior.ColorIndex = xlNone
                    .Font.ColorIndex = 0
                    .Font.Bold = False
                End With
            End If
        Else
            With Range("F" & i)
                .Interior.ColorIndex = xlNone
                .Font.ColorIndex = 0
                .Font.Bold = False
            End With
        End If
    Next i
End If
End Sub

@+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
666
W
Réponses
6
Affichages
346
Réponses
4
Affichages
317
Réponses
2
Affichages
240
Retour