IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Modiffication du fond d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 3
    Par défaut Modiffication du fond d'une cellule
    Bonsoir,

    je suis sous Excel 2010. J'ai un tableau à 6 colonnes contenant un 4000 lignes de nombres (principalement décimaux) compris entre 0 et 200.

    Le but du script est de colorer chaque cellule en fonction du nombre qu'elle contient en calculant la couleur que la cellule va prendre.

    La couleur varie du rouge (255,0,0) au vert (0,255,0) en passant par le jaune. Le problème est que dès la 2ème ligne du fichier, la macro plante et ne peut pas colorer la cellule (erreur : "La méthode Color de l'objet Interior a échoué").

    J'avoue ne pas comprendre pourquoi car les variables couleurG et couleurR sont bien des Integer compris entre 0 et 255 !

    Le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Sub degrade()
     
    Dim j As Integer
    j = 1
     
    Dim couleurR As Integer, couleurG As Integer
     
     
    While Range("F" & j).Value <> ""
     
            Dim deltaexp As Integer
            deltaexp = 200
     
            Dim exp As Single
            exp = Range("F" & j).Value
     
            Dim ration As Double
            ration = exp / deltaexp
     
        If (ration <= 1/2) Then
     
            couleurR = 255
            couleurG = CInt(ration * 255 / 0.5)
        Else
            couleurR = CInt(510 * (0.5 - ration) + 255)
            couleurG = 255
     
        End If
     
        Range("F" & j).Interior.Color = RGB(couleurR, couleurG, 0)
     
        i = i + 1
     
    Wend
    End Sub
    Voilà, je remercie d'avance celui qui saura me dire où je me suis planté

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Qu'est ce que tu as en F2

    Sinon, pour ta ligne 33 du code, ne serait il pas j=j+1?

    Sinon bis, tu as la mise en forme conditionnelle (Nuances de couleurs) qui fera amplement ton souhait sans vba

Discussions similaires

  1. [VB.NET][DataGridView]:couleur de fond d'une cellule
    Par BigTicket42 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/05/2008, 22h07
  2. Image de fond d'une cellule à gauche
    Par staive dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 26/09/2007, 09h30
  3. comment changer l'image de fond d'une cellule par un menu ?
    Par @rno0059 dans le forum Mise en page CSS
    Réponses: 18
    Dernier message: 25/06/2007, 00h06
  4. mise à jour de la couleur de fond d'une cellule
    Par Lady_jade dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 02/11/2005, 11h18
  5. Etirer une image de fond dans une cellule
    Par dreamanoir dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/07/2005, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo