titibobo2
Messages postés46Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention28 novembre 2007
-
27 mars 2007 à 11:38
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024
-
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
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 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
titibobo2
Messages postés46Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention28 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...
titibobo2
Messages postés46Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention28 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 )
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 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