Macro mise en forme conditionnelle

Bonjour,

J'utilise déjà les 3 mises en forme conditionnelles automatiques proposées par excel dans une macro.

Le problème c'est qu'il m'en faudrait 5 en tout.

La 4ème :

Si dans toute la feuille la valeur de n'importe quelle cellule est égale à "#NoData", alors la couleur de police de la cellule en question passe en rouge.

La 5ème :

Si dans toute la feuille la valeur de n'importe quelle cellule est égale à "O" (la lettre O et non pas zéro), alors la couleur de remplissage de la cellule en question passe en rouge et la police du texte passe en gras.

Je n'arrive pas à coder ces deux conditions, merci de votre aide!

Bonjour

Il te faut un code VBA pour faire cela. Le mieux est que tu mettes ton fichier en ligne (avec données non confidentielles).

Sinon, vois déjà ce lien --> https://forum.excel-pratique.com/excel/liste-deroulante-avec-mise-en-forme-t8786.html?hilit=colorindex

A te relire

Le fichier est beaucoup trop lourd, pour que je le poste.

Et surtout, il est confidentiel. Désolé.

C'est pour ça que que je voudrais un code VBA général que je pourrais "retoucher" si besoin avant de l'insérer dans ma macro.

Pour résumer :

Dans mes colonnes C, H, I et K (dont le nombre de lignes est variable), je peux avoir dans certaines cellules "#NoData"

Dans ma colonne M (dont le nombre de lignes est aussi variable), je peux avoir dans certaines cellules "O"

re,

Les codes généraux n'existent pas vraiment en programmation et posent bien souvent des problèmes. Chaque cas est un cas à part. Toutefois, vois ce lien --> https://forum.excel-pratique.com/excel/mise-en-forme-conditionnelle-t7732.html?hilit=interior.colorindex

J'espère que tu pourras adapter à ton cas.

Amicalement

Je suis bloqué parce que je ne peux pas télécharger les fichiers ("Requête bloquée" par le firewall ...)

re,

Dans le lien que je t'ai fourni la 1ere demande du forumeur te donne le code à utiliser.

Pour le placer dans ton fichier, clique droite sur l'onglet concerné par la mise en forme que tu souhaites, puis choisis l'option "visualiser le code" et colle le code en question.

A te relire

Sub Macro1()
Sheets("Température").Select
Dim Target As Range
If Not Application.Intersect(Target, Range("A2:Q" & Range("A65536").End(xlUp).Row)) Is Nothing Then
    Select Case UCase(Target)
        Case "O"
            Target.Interior.ColorIndex = 3
            Target.Font.Bold = True
        Case "#NoData"
            Target.Font.ColorIndex = 5
    End Select
End If
End Sub

Mon code ne fonctionne pas et je ne comprends pas pourquoi

Erreur d'exécution '5':
Argument ou appel de procédure incorrect

Sur la ligne

If Not Application.Intersect(Target, Range("A2:Q" & Range("A65536").End(xlUp).Row)) Is Nothing Then

re,

Normal, tu mélanges un peu tout là ...

Voici le code à utiliser à la place

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A2:Q" & Range("A65536").End(xlUp).Row)) Is Nothing Then
    Select Case UCase(Target)
        Case "O"
            Target.Interior.ColorIndex = 3
            Target.Font.Bold = True
        Case "#NoData"
            Target.Font.ColorIndex = 5
    End Select
End If
End Sub

Mettre le code comme je t'ai expliqué dans mon précédent post.

Merci, mais le néophyte que je suis a une question :

Comment faire pour intégrer cette macro à la fin d'une autre macro?

re,

Comment faire pour intégrer cette macro à la fin d'une autre macro?

Ce n'est pas possible. Toutefois, le contraire est possible. Donc déclencher une autre macro à partir de celle là.

Sinon il faut repenser tout le code. Raison pour laquelle je te disais qu'il faut voir le fichier ou comprendre complètement ce que tu veux faire.

Peut être en jouant sur le changement de sélection d'une cellule...

A te relire

Désolé pour mon ignorance :S

Dans ce cas, je vais faire une macro à part avec le code que tu m'as donné.

Mais dans ce cas, comment appeller cette macro à la fin de ma première macro ?

ma première macro = macro 1

la macro que je vais créer avec ton code = macro 2

Est ce que je peux insérer ça dans ton code ? :

Private Sub Worksheet_Change(ByVal Target As Range)

Sheets("Nom de la feuille").Select

If Not Application.Intersect(Target, Range("A2:Q" & Range("A65536").End(xlUp).Row)) Is Nothing Then

re,

Est ce que je peux insérer ça dans ton code ? :

Non surtout à cette position du code et cela ne sert pas si le code est la feuille en question.

Pour ta macro, donne moi le code de la macro 1, j'essaierai de comprendre ton pb et d'adapter le code que je t'ai proposé. Donne moi surtout bien le nom des feuilles où l'on doit appliquer les deux macros.

A te relire

Réponse avec un peu de retard mais voilà un code qui marche très bien et qui fait comme des mises en forme conditionnelles illimitées :

For i = Range("M65536").End(xlUp).Row To 1 Step -1
Select Case Range("M" & i)
Case "A": Range("M" & i).Interior.ColorIndex = 35
Case "B": Range("M" & i).Interior.ColorIndex = 36
Case "C": Range("M" & i).Interior.ColorIndex = 40
Case "O": Range("M" & i).Interior.ColorIndex = 3
Case Else
End Select
Next
Rechercher des sujets similaires à "macro mise forme conditionnelle"