Traitement sur range en vba Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Scorpdragon
Membre habitué
Membre habitué
Messages : 58
Inscrit le : 26 janvier 2013
Version d'Excel : 2007 FR

Message par Scorpdragon » 21 octobre 2015, 16:04

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
C'est au pied du mur...qu'on voit le mieux le mur !
Avatar du membre
Raja
Passionné d'Excel
Passionné d'Excel
Messages : 5'206
Appréciations reçues : 14
Inscrit le : 3 février 2008
Version d'Excel : 2010 à 2016 FR et 2010 EN

Message par Raja » 21 octobre 2015, 16:14

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....
Cdlt,
Raja
Avatar du membre
Scorpdragon
Membre habitué
Membre habitué
Messages : 58
Inscrit le : 26 janvier 2013
Version d'Excel : 2007 FR

Message par Scorpdragon » 21 octobre 2015, 16:26

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
C'est au pied du mur...qu'on voit le mieux le mur !
Avatar du membre
Raja
Passionné d'Excel
Passionné d'Excel
Messages : 5'206
Appréciations reçues : 14
Inscrit le : 3 février 2008
Version d'Excel : 2010 à 2016 FR et 2010 EN

Message par Raja » 21 octobre 2015, 16:37

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".
Cdlt,
Raja
Avatar du membre
Scorpdragon
Membre habitué
Membre habitué
Messages : 58
Inscrit le : 26 janvier 2013
Version d'Excel : 2007 FR

Message par Scorpdragon » 21 octobre 2015, 17:02

Oui j'ai bien nommée une zone moteur1 dans ma feuille
C'est au pied du mur...qu'on voit le mieux le mur !
Avatar du membre
Raja
Passionné d'Excel
Passionné d'Excel
Messages : 5'206
Appréciations reçues : 14
Inscrit le : 3 février 2008
Version d'Excel : 2010 à 2016 FR et 2010 EN

Message par Raja » 21 octobre 2015, 19:51

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
Cdlt,
Raja
Avatar du membre
Scorpdragon
Membre habitué
Membre habitué
Messages : 58
Inscrit le : 26 janvier 2013
Version d'Excel : 2007 FR

Message par Scorpdragon » 21 octobre 2015, 22:09

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.
C'est au pied du mur...qu'on voit le mieux le mur !
Avatar du membre
Raja
Passionné d'Excel
Passionné d'Excel
Messages : 5'206
Appréciations reçues : 14
Inscrit le : 3 février 2008
Version d'Excel : 2010 à 2016 FR et 2010 EN

Message par Raja » 22 octobre 2015, 20:27

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
Cdlt,
Raja
Avatar du membre
Scorpdragon
Membre habitué
Membre habitué
Messages : 58
Inscrit le : 26 janvier 2013
Version d'Excel : 2007 FR

Message par Scorpdragon » 23 octobre 2015, 06:49

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.
C'est au pied du mur...qu'on voit le mieux le mur !
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message