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 :

Code Vba, comparer une colonne avec une autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Par défaut Code Vba, comparer une colonne avec une autre
    Bonjour à tous,

    Je suis sur la fin d'un projet VBA pour mes études, et je galère sur un point.
    J'ai deux colonnes dans mon classeur, l'une est actualisé toutes les 10 secondes par un lien API, l'autre est une copie de ces colonnes en direct qui se rafraichit toute les 2 secondes.

    Mon objectif est de faire un petit code VBA qui va me colorier les cellules de la première colonne si les données actualisés sont supérieurs ou inférieurs aux données brut sur la seconde.

    J'ai trouvé un code, mais il me fait cellule par cellule, et je cherche plus un code qui va colorier l'ensemble si besoin !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    If Cells(10, 4).Value > Cells(10, 5).Value Then
            Cells(10, 4).Interior.Color = RGB(0, 255, 0)
            Application.Wait Time + TimeSerial(0, 0, 2)
            Cells(10, 4).Interior.Color = RGB(255, 255, 255)
        Else
            If Cells(10, 4).Value < Cells(10, 5).Value Then
                Cells(10, 4).Interior.Color = RGB(255, 0, 0)
                Application.Wait Time + TimeSerial(0, 0, 2)
                Cells(10, 4).Interior.Color = RGB(255, 255, 255)
                'code de coloration Rouge
            Else
            End If
    En gros j'ai réussi pour une cellule, mais je cherche qu'il me fasse ceci pour la colonne entière ( si possible avec le XlDown... )

    Est ce que quelqu'un aurait une idée?

    Merci bien

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    pas sur d'avoir tout compris, mais si tu compares D2 => E2, D3 => E3, ce code à améliorer
    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
    Sub toto1()
    Dim x As Long
    For x = 2 To Range("D" & Rows.Count).End(xlUp).Row
        If Range("D" & x).Value > Range("E" & x).Value Then
          Range("D" & x).Interior.Color = RGB(0, 255, 0)
          Application.Wait Time + TimeSerial(0, 0, 2)
          'Range("D" & x).Interior.Color = RGB(255, 255, 255)' pourquoi
        Else
          If Range("D" & x).Value < Range("E" & x).Value Then
            Range("D" & x).Interior.Color = RGB(255, 0, 0)
            Application.Wait Time + TimeSerial(0, 0, 2)
            'Range("D" & x).Interior.Color = RGB(255, 255, 255)'pourquoi
                'code de coloration Rouge
        End If
    Next x
    End Sub
    si tu compares D2 => E2/E3/E4/....
    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
    Sub toto()
    Dim x As Long, y As Long
    For x = 2 To Range("D" & Rows.Count).End(xlUp).Row
      For y = 2 To Range("E" & Rows.Count).End(xlUp).Row
        If Range("D" & x).Value > Range("E" & y).Value Then
          Range("D" & x).Interior.Color = RGB(0, 255, 0)
          Application.Wait Time + TimeSerial(0, 0, 2)
          'Range("D" & x).Interior.Color = RGB(255, 255, 255)' pourquoi
        Else
          If Range("D" & x).Value < Range("E" & y).Value Then
            Range("D" & x).Interior.Color = RGB(255, 0, 0)
            Application.Wait Time + TimeSerial(0, 0, 2)
            'Range("D" & x).Interior.Color = RGB(255, 255, 255)'pourquoi
                'code de coloration Rouge
        End If
      Next y
    Next x
    End Sub
    attention si ton tableau possède beaucoup de données, il vaudra mieux passer par des variables tableau
    PS : je n'ai pas testé les codes (vite fait), ne retenir que le principe des boucles
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Par défaut
    Merci pour ta réponse.

    Si j'ai bien compris le code, Excel va comparer toutes les cellules de la colonne une par une?

    Je me suis peut être mal exprimé. Les colonnes sont des cours de bourses, et je veux mettre la coloration dans la cellule selon si le prix augmente ou descend ! donc forcements ils varient pas tous dans le même sens, mais le petit code VBA devra me montrer en même temps les couleurs de variations...
    Car pour l'instant le code me montre les variations mais une à une. La ligne 1 apparaît rouge, ensuite la ligne 2 apparaît verte etc...

    Y aurait il un moyen que le code me compare d'un coup les lignes 1 à 20 par exemple pour qu' il me traite les conditions de couleur sur l'ensemble

    Et au passage... les variables tableaux ? c'est mettre la valeur dans une variable c'est cela? je cherchais aussi a le faire car mon code est beaucoup trop lent...

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Et au passage... les variables tableaux ? c'est mettre la valeur dans une variable c'est cela? je cherchais aussi a le faire car mon code est beaucoup trop lent...
    voir http://silkyroad.developpez.com/vba/tableaux/
    Y aurait il un moyen que le code me compare d'un coup les lignes 1 à 20 par exemple pour qu' il me traite les conditions de couleur sur l'ensemble
    pas trop compris mais je pense qu'il faut prévoir des variables tableau bien structurées, tu as beaucoup de données, combien (à peu-près) ?
    parce, s'il faut que la feuille se ré-actualise toutes les 2 secondes, j'ai des doutes
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Par défaut
    VBA-projet.xlsm

    Voici le classeur, il faut cliquer sur oui et la macro se lance (c'est pas terminé)
    Sur la ligne BNP Parisbas, le code fonctionne. Et je souhaite que l'ensemble des lignes réagissent de la même facon que BNP, mais toute en même temps...

    Comme un vrai outil de finance enfait
    Exemple que je cherche à reproduire :
    http://www.boursorama.com/bourse/act...PCAC&validate=

    Site en flash...

    Il faut peut être activer les références WinHttp Services pour que les liens URL fonctionnent

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/10/2014, 14h01
  2. [WD14] Alimentation d'une colonne d'une tableau avec une autre colonne
    Par Deep Lowee dans le forum WinDev
    Réponses: 2
    Dernier message: 23/01/2013, 17h44
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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