Interior.ColorIndex si ...

Résolu
titibobo2 Messages postés 46 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 28 novembre 2007 - 27 mars 2007 à 11:38
NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 - 28 mars 2007 à 12:46
Bonjour,

Je souhaite coloriser le fond d'une cellule si celle ci contient une valeur.

J'ai 2 listes de références numériques.
La liste 2 contient l'ensemble des références, la liste 1 un extrait de la liste 2 ( 25 ref)
Je veux que dans la liste 2 les ref présentent dans la liste 1 soient  avec un fond colorisé.
Les listes sont dans un même classeur mais dans 2 feuilles différentes.

J'utilise un macro boucle mais je débogage 1004 (ligne bleue)

Dim L1 As Range
Dim L2 As Range
Sheets("liste1").Select
Set L1 = Range("a1:a25")
Sheets("liste2").Select
Set L2 = Range("a:a")
j = 3
While Cells(j, 2) <> ""
If L2.Cells(i).Value = L1 Then
L2.Cells(i).Interior.ColorIndex = 45
End If
j = j + 1
Wend

Une idée,
Merci :)

8 réponses

NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 158
27 mars 2007 à 13:07
Bonjour

Où est déclaré ton i ?
à quoi sert ton j ?

Voila un code un peu mieux :
Dim L1 As Range
Dim L2 As Range

Sheets("liste1").Select
Set L1 = Range("a1:a25")
Sheets("liste2").Select
Set L2 = Range("a:a")

Dim lCell1 As Range
Dim lCell2 As Range

For Each lCell2 In L2
    If lCell2.text="" Then Exit For
    For Each lCell1 In L1
        If lCell1.Text=lCell2.Text Then
            lCell2.Interior.ColorIndex = 45
        End If
    Next
Next
(Coloration syntaxique automatique par Kenji)

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
3
NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 158
27 mars 2007 à 12:11
Bonjour

C'est quoi ton Pb ?
Tu ne parvient pas à parcourir la liste L1 ?
Erreur d'execution ?
Arrêt inexpliqué sur cette ligne ?
autre ?

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
titibobo2 Messages postés 46 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 28 novembre 2007
27 mars 2007 à 12:34
Arrêt sur la ligne bleue :
Erreur d'exécution '1004'
Erreur définie par l'application ou par l'ogjet

la liste L1 c'est le 25 ref qu'on va retrouver dans la liste L2. Et c'est dans L2 que le fond de la cellule doit changer si la valeur appartient à L1...
0
drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
27 mars 2007 à 13:07
Salut, c'est quoi i?

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0

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

Posez votre question
titibobo2 Messages postés 46 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 28 novembre 2007
27 mars 2007 à 14:10
Merci ça fonctionne si je n'ai pas d'entête de colonne

le i est une erreur.

Le j c'est pour commencer la recherche à partir de la 3eme ligne car j'ai des entête de colonneet avec la macro actuel ça ne fonctionne pas  ( à cause du If lCell2.text="" Then Exit For )

...
0
NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 158
27 mars 2007 à 14:20
Bonjour

Ce test sert à éviter de traiter toutes les cases (même celles qui sont vides).

Essaye
Dim L1 As Range
Dim L2 As Range

Sheets("liste1").Select
Set L1 = Range("a1:a25")
Sheets("liste2").Select
Set L2 = Range("a:a")

Dim lCell1 As Range
Dim lCell2 As Range

For Each lCell2 In L2
    If lCell2.text<>"" Then
        For Each lCell1 In L1
            If lCell1.Text=lCell2.Text Then
                lCell2.Interior.ColorIndex = 45
            End If
        Next
    End If
Next, ----
(Coloration syntaxique automatique par Kenji)

Mais cela risque d'être plus long.

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
titibobo2 Messages postés 46 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 28 novembre 2007
27 mars 2007 à 14:26
Je modifie le range de L2 et c'est bon !!
un truc du genre Range("a3", Selection.End(xlDown)).Select
mais ici la syntaxe n'est pas bonne ...

Merci !!!!
0
NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 158
28 mars 2007 à 12:46
Bonjour

Désolé, mais je ne connais pas cette méthode, j'ai toujours utiliser une méthode personnelle :

dim i as long
i=3
do while range("a1").offset(i,0).value<>""
    i=i+1
loop

L2=range("a3:a"+cstr(i))

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0