Range sur plusieurs cellules

Bonjour,

Je cherche à faire la fonction suivante :

-Si sur une des cellules sur la plage H10 à J30 j'ai le texte " euro" je mets un fond gris.

Je voudrais utiliser la fonction range sur plusieurs cellules mais il me met une erreur :

if range ("H10:J30")= "euro" then range ("h10:j30").Interior.ColorIndex = 15

End if

Pourquoi?

Est il possible de palier à ce problème?

Merci à tous,

Salut,

Que veux-tu exactement ? Mettre en gris toute la plage si l'une des cellules de la plage comporte le mot "Euro" ou uniquement la ou les cellules concernées ?

A te relire.

Re,

Je veux mettre en gris uniquement les cellules qui comporte le mot "euro"

Merci,

Voici une macro à placer dans le code de la feuille concernée qui devrait faire l'affaire :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub

    If Not Application.Intersect(Target, Range("H10:J30")) Is Nothing Then
        If Target = "Euro" Then
           Target.Interior.ColorIndex = 15
        Else
            Target.Interior.Pattern = xlNone
        End If
    End If

End Sub

Cordialement.

Merciiiiii!

J'ai pensé que votre solution marchait.

Or malheuresement pour moi, lorsque j'actualise ma feuille toutes les couleurs disparaissent.

De plus, si je supprime plusieurs cases concernées, les couleurs restent car je n'ai pas supprimé un par un la case ou il y avait "euro" mais un ensemble de case et le programme est perdu.

Est il possible d'avoir la même formule mais qui se met sur un module?

Bonne journée

Re,

Alors essaie - toujours dans le code de la feuille - ce code-ci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
For Each Cell In Range("H10:J30")
        If Cell = "Euro" Then
           Cell.Interior.ColorIndex = 15
        Else
            Cell.Interior.Pattern = xlNone
        End If
Next Cell
End Sub
Popo62 a écrit :

lorsque j'actualise ma feuille ....

Que veux-tu dire exactement ?

Attention : J'ai vu ton premier message immédiatement et ai pris note que tu avais ta solution. Ensuite tu as modifié ton message afin de m'informer qu'il y avait un problème inattendu mais je ne suis plus informé de ton rajout. C'est totalement par hasard que je suis revenu sur ce fil. Une autre fois, si tu modifies une réponse, pense éventuellement d'en informer les personnes concernées par courriel ou par message privé.

Bonnes salutations.

Bonjour,

En effet, tu as raisons, j'ai cru qu'en modifiant le message , l'heure ce mettait à jour mais je me suis trompée.

Petite question j'ai cru que je serais capable de le faire toute seul à l'aide de ta macro mais je n'y arrive pas.

Est ce que je peux dire avec ta formule si jamais il y a "euro" sur H10 à J30 sur une des cellules je met la couleur 15

Et si une des cases H10 à J30 a une étoile alors je met la couleur sur une des cases de P10 à P30.

Pour etre simple je voudrais que s'il y a "euro" sur une des cases H10,I10 ou J10 on met la couleur 15 sur une de ses cases plus la case P10. Et ainsi de suite jusqu'à 30?

Merci encore pour ta solution.

Re,

Popo62 a écrit :

Et si une des cases H10 à J30 a une étoile alors je met la couleur sur une des cases de P10 à P30.

J'ai tout d'abord lu la première partie de ta question ci-dessus et j'ai pondu le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
For Each Cell In Range("H10:J30")

        If Cell = "Euro" Then
           Cell.Interior.ColorIndex = 15
        Else
            Cell.Interior.Pattern = xlNone
        End If

        If Cell = "*" Then
           Cells(Cell.Row, "P").Interior.ColorIndex = 15
        Else
            If Cells(Cell.Row, "H") <> "*" And Cells(Cell.Row, "I") <> "*" And Cells(Cell.Row, "J") <> "*" Then
                Cells(Cell.Row, "P").Interior.Pattern = xlNone
            End If
        End If

Next Cell
End Sub
Popo62 a écrit :

Pour etre simple je voudrais que s'il y a "euro" sur une des cases H10,I10 ou J10 on met la couleur 15 sur une de ses cases plus la case P10

Puis j'ai remarqué que dans ta dernière phrase ci-dessus, tu as une autre demande Si mon code n'est pas ce que tu attendais, merci d'être plus précis.

Cordialement.

Re,

C'est parfait !!

Je ne connaissais pas la fonction cells (cell.row...)

Merciiiii!

Cordialement,

Le mot Cell n'avait été utilisé dans mon code que comme variable. Tu pourrais le remplacer par presque n'importe quel mot et ça joue aussi, par exemple

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Yyyyyyy As Range
For Each Yyyyyyy In Range("H10:J30")

        If Yyyyyyy = "Euro" Then
           Yyyyyyy.Interior.ColorIndex = 15
        Else
            Yyyyyyy.Interior.Pattern = xlNone
        End If

        If Yyyyyyy = "*" Then
           Cells(Yyyyyyy.Row, "P").Interior.ColorIndex = 15
        Else
            If Cells(Yyyyyyy.Row, "H") <> "*" And Cells(Yyyyyyy.Row, "I") <> "*" And Cells(Yyyyyyy.Row, "J") <> "*" Then
                Cells(Yyyyyyy.Row, "P").Interior.Pattern = xlNone
            End If
        End If

Next Yyyyyyy
End Sub

Si c'était plutôt ta deuxième demande que tu voulais et que tu as simplement remplacé mes "*" par des "Euro", tu as une macro plus compliquée que nécessaire. Si jamais, je suis toujours à ta disposition.

Cordialement.

Rechercher des sujets similaires à "range"