[Catégorie modifiée VB6 --> VBA] Problème code pour comparer deux colonnes de ch

Résolu
Lestagiare Messages postés 6 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010 - 1 juil. 2010 à 16:56
Lestagiare Messages postés 6 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010 - 7 juil. 2010 à 12:07
Bonjour à tous,

Alors voilà, j'ai un petit problème avec mon code.
Je vous explique rapidement ce qu'il en est :

J'ai un classeur excel avec deux feuilles, et j'aimerai comparer une colonne présente dans la feuille1 avec une autre colonne de la feuille2 (toutes les deux contiennent des chaines de caractères) afin de coloriser les cellules de la colonne de la feuille1 si elles sont présente dans la colonne de la feuille2.

Pour cela, j'ai déjà écris quelque chose, mais mes connaissances en la matière étant limitées, j'aimerai un peu d'aide.

Voilà le code :

Sub Macro1()
Dim i As Integer
Dim j As Integer
i = 6
j = 2
While i < 20000 And j < 41
If Worksheets("Feuille1").Range("B" + CStr(i)).Value = Worksheets("Feuille2").Range("C" + CStr(j)).Value Then
Worksheets("Feuille1").Activate
Worksheets("Feuille1").Range("B" + CStr(i)).Select
With Selection.Interior
ColorIndex = 3
Pattern = xlSolid
End With
Else
j = j + 1
End If
i = i + 1
Wend
End Sub

Merci d'avance pour votre aide.

8 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 juil. 2010 à 17:15
Bonjour et bienvenu

Et quel est ton problème ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 juil. 2010 à 17:37
Arg, j'avais pas vu la petite erreur :
    With Selection.Interior
        ColorIndex = 3       ' Manque le . en tête
        Pattern = xlSolid    ' de ces 2 lignes
    End With 
3
Lestagiare Messages postés 6 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010
1 juil. 2010 à 17:27
Bin le problème est que, quand je lance la macro, il ne se passe rien... Pas de plantage, mais pas de colorisations des cellules.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 juil. 2010 à 17:31
Ca ressemble pourtant à du code correct.
En pareil cas, il faut deboguer pour voir ce que fait le programme :
Place ton curseur sur la première ligne de code (pas les Dim)
Appuis sur F9 : le code s'arrêtera là au prochain passage
Survole avec la souris les variables et il t'affichera son contenu.
A toi de voir si la cellule pointée est la bonne, etc ...
Avance d'une ligne de code avec F8
Continue le code normalement : F5

Solution alternative :
Sub MacroVinBlanc()
    Dim Cell_1 As Range
    Dim Cell_2 As Range
    ' Cellules de la feuille 1
    For Each Cell_1 In Sheets("Feuille1").Range("B6:B20000")
        ' Cellules de la feuille 2
        For Each Cell_2 In Sheets("Feuille2").Range("C2:C41")
            ' Si identiques
            If Cell_1.Value = Cell_2.Value Then
                ' Zoli coloriage
                With Cell_1.Interior
                    ColorIndex = 3
                    Pattern = xlSolid
                End With
                ' Pas la peine de continuer
                Exit For
            End If
        Next
    Next
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lestagiare Messages postés 6 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010
1 juil. 2010 à 18:35
Ok ! Merci de ta réponse ! Je vois ça demain au boulot car c'est pour mon travail. Je te tiens au courant des avancées ou éventuels problèmes.
Merci d'avance.
0
Lestagiare Messages postés 6 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010
2 juil. 2010 à 12:23
Salut Jack !

Voilà j'ai résolu mon problème avec ce code :

Sub Flagship()
Dim i As Integer
Dim j As Integer

For i = 6 To 2000
For j = 2 To 40
If Worksheets("Product Board").Range("B" + CStr(i)).Value = Worksheets("FlagShip Products").Range("C" + CStr(j)).Value Then
Worksheets("Product Board").Activate
Worksheets("Product Board").Range("B" + CStr(i)).Select
With Selection.Interior
.ColorIndex = 40
.Pattern = xlSolid
End With
End If
Next j
Next i
End Sub

Je te remercie pour ton aide.

A bientôt.
0
Lestagiare Messages postés 6 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010
2 juil. 2010 à 14:25
Re bonjour,

Je me permet de soliciter à nouveau votre aide pour une petite optimisation.

En effet, la macro marche actuellement avec un nombre de lignes fixe.
Cependant, ce nombre de lignes est souvent actualisé.
J'aimerai donc que le nombre de lignes, anciennement égale à 2000 et 40 soit variable.

Le code actuel est celui-ci :

Sub Flagship()
Dim i As Integer
Dim j As Integer

For i = 6 To 2000
For j = 2 To 40
If Worksheets("Product Board").Range("B" + CStr(i)).Value = Worksheets("FlagShip Products").Range("C" + CStr(j)).Value Then
        Worksheets("Product Board").Activate
        Worksheets("Product Board").Range("B" + CStr(i)).Select
        With Selection.Interior
            .ColorIndex = 40
            .Pattern = xlSolid
        End With
End If
Next j
Next i
End Sub


Pensez-vous que cela soit possible ?

Merci d'avance.
0
Lestagiare Messages postés 6 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010
7 juil. 2010 à 12:07
Je me permet un petit up. Si quelqu'un à la solution :)

Merci d'avance.
0
Rejoignez-nous