Traitement sur range en VBA

Bonjour

J'ai déclaré une plage nommée dans une variable de cette façon :

Moteur1 = Page1.Range("moteur1")

Je voudrais pouvoir colorier l’intérieur de cette plage aussi j'avais pensé utiliser ma variable dans mon code au lieu d'écrire :

Page1.Range("moteur1").Interior.Color = RGB(255, 199, 206)

Je pensais pouvoir mettre :

Moteur1.Interior.Color = RGB(255, 199, 206)

Malheureusement cela ne fonctionne pas est-ce normal et y a t-il une façon différente d'arriver au résultat en utilisant ma variable ?

Merci pour votre aide

Bonjour,

Pour comprendre ton code, il nous faut le code complet. Car, on ne sait d'où vient "Page1", Range("moteur1") ou comment ils sont déclarés etc....

Voici comment j'ai fait :

Page1 étant le nom que j'ai donné à ma première feuille

Range ("moteur1") correspond à une plage nommée dans ma feuille

Mon code actuel fonctionne

Dim Page1 As Worksheet
'chargement de la feuille 1
    Set Page1 = Worksheets("Page1")
'définition des variables de la Page1
Moteur1 = Page1.Range("moteur1")

'traitement
            If Moteur1 = "" Then
            Page1.Range("moteur1").Interior.Color = RGB(255, 199, 206) 'rouge
            Exit Sub
            Else
            Page1.Range("moteur1").Interior.Color = RGB(255, 255, 255) 'blanc
            End If

Mais je voulais savoir si il était possible de remplacer

Page1.Range("moteur1")

par ma variable :

Moteur1

et obtenir le même résultat c'est à dire colorier l’intérieur de ma plage nommée "moteur1" qui se trouve dans la Page1

Re,

Qu'est-ce que ça signifie pour toi

Range("moteur1") ? 

As-tu déjà déclaré une zone nommée "moteur1" ? En tout cas, la façon dont tu déclares suppose qu'il existe une plage qui s'intitule "moteur1".

Oui j'ai bien nommée une zone moteur1 dans ma feuille

Re,

Alors, voilà une proposition simplifiée :

Sub test()
    For Each cel In Range("moteur1")
        If cel = "" Then cel.Interior.Color = RGB(255, 199, 206) 'rouge
    Next cel
End Sub

Merci pour ton aide mais en fait je souhaitais savoir si il était possible (ou pas) d'utiliser une variable à la place du code Range("moteur1").

Je pensais peut être à tord qu'en déclarant une variable de cette façon :

Moteur1 = Range("moteur1")

Je pouvais utiliser uniquement Moteur1 en remplacement de l'expression Range("moteur1").

Il me faut surement clarifier l'emploi des variables en vba.

Re,

A mon avis, tu te donnes beaucoup de mal pour rien. Essaye comme ça :

Sub test()
    Dim Moteur As Range
    Set Moteur = Range("A1:A10")
    For Each cel In Moteur
        If cel = "" Then cel.Interior.Color = RGB(255, 199, 206) 'rouge
    Next cel
End Sub

Re

A mon avis, tu te donnes beaucoup de mal pour rien

Oui en fait je pensais que l'utilisation d'une variable pour ma zone me permettrais de simplifier l’écriture du code.

En tout cas merci pour ton aide je passe le sujet en résolu.

Rechercher des sujets similaires à "traitement range vba"