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 :

Coloration en vert des cases qui sont présentent dans deux tableaux


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Coloration en vert des cases qui sont présentent dans deux tableaux
    Bonjour,
    J'ai un petit souci,

    J'ai créé une macro qui est sensée colorer en vert le texte des cellules d'une colonne B qui sont similaires aux cellules de la colonne A.
    Il y a 23000 lignes dans la colonne A, et 76 dans la colonne B.

    Lorsque j'exécute ma macro, cela ne fonctionne pas... :s Aucun texte n'est coloré
    Quelqu'un aurait-il une idée?

    Voici mon code :

    Merci d'Avance

    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
    Dim i As Integer
    Dim j As Integer
    Dim Rouge As Byte
    Dim Vert As Byte
    Dim Bleu As Byte
     
    Rouge = 0
    Vert = 255
    Bleu = 0
     
    i = 1
    j = 1
     
    While i < 77
     
        i = i + 1
     
        While j < 23106
        j = j + 1
        If Range("B" & i).Value = Range("A" & j).Value Then Range("B" & i).Select
        For Each Cel In Selection: Cel.Font.Color = RGB(Rouge, Vert, Bleu)
        Next
        Wend
    Wend
     
     
     
    End Sub

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    J'ai essayé une autre solution qui ne marche pas non plus... :s

    Merci dAvance pour celui qui pourra m'aider.

    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
     
    Dim i As Integer
    Dim j As Integer
     
    i = 0
    j = 0
     
    Do While (i < 77)
    i = i + 1
        Do While (j < 23106)
        j = j + 1
        If Range("B" & i).Value = Range("A" & j).Value Then
        Range("B" & i).Font.Color = vbBlue
        End If
        Loop
     
    Loop
     
    End Sub

  3. #3
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonsoir linooo,
    essaie ça
    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
     
    Sub essai()
    Dim i As Integer
    Dim j As Integer
    Dim Rouge As Byte
    Dim Vert As Byte
    Dim Bleu As Byte
     
    Application.ScreenUpdating = False  
     
    Rouge = 0
    Vert = 255
    Bleu = 0
     
    For i = 1 To 76
      For j = 1 To 23105
        If Range("B" & i)= Range("A" & j) Then _
          Range("B" & i).Font.Color = RGB(Rouge, Vert, Bleu)
      Next j
    Next i
     
    Application.ScreenUpdating = True
    End Sub
    ou réinitialise ta variable j entre les deux "wend". Sinon j reste égal à 23106 dans les autres boucles.

    Tu n'as pas besoin de sélectionner ta cellule pour lui appliquer un format, encore moins de faire une boucle sur une seule cellule.
    Regarde le code avec les deux boucles imbriquées.
    cordialement
    fred65200

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut linoo
    tu peux esayer ça aussi, je pense que ce sera beaucoup plus rapide que deux boucles imbriquées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub rouge()
    For Each cel In Sheets(1).Range("b1:b" & Range("b1").End(xlDown).Row)
    With Sheets(1).Range("a1:a20")
    Set c = .Find(cel.Value, LookIn:=xlValues)
    If Not c Is Nothing Then cel.Interior.ColorIndex = 3
    End With
    Next cel
    End Sub

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Hello,

    Merci beaucoup à tous les deux de votre aide !
    Cela m'a beaucoup aidé.

    A bientôt

    Lino

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérifier l'etat des checbox qui sont contenus dans un tableau [].
    Par madina dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2011, 14h04
  2. [swing] deplacer des components qui sont superposés
    Par systemf dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 10/11/2006, 15h29
  3. Comment éviter que google répete des mots qui sont dans la description du meta tag
    Par tese84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/09/2006, 07h55
  4. Réponses: 2
    Dernier message: 18/04/2006, 10h44
  5. [VB6] Comment faire un update sur des textbox qui sont créés
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 27
    Dernier message: 16/02/2006, 14h52

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