Vinzfloz1
Messages postés21Date d'inscriptionmercredi 3 janvier 2007StatutMembreDernière intervention 3 avril 2007
-
3 janv. 2007 à 09:09
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
7 janv. 2007 à 00:20
Bonjour à tous,
Je fais appel à l'aide des habitués du forum pour me débloquer ma situation :)
J'ai un souci avec une partie de mon code. Dans cette partie je souhaite
- Prendre chaque valeur d'une colonne défini, chercher cette valeur dans une autre feuille Excel du même fichier.
- Puis à partir de la cellule trouvé dans cette autre feuille, je souhaite mettre sur fond rouge toutes les cellules dont la valeur est > à 0 dans la colonne où se trouve la valeur cherchée.
Voici mon code :
Dim Plage As Object
Set Plage = Sheets("Reporting").Range("H22").End(xlDown)
Dim C As Variant
Set C = ActiveCell
For Each cel In Plage
Sheets("Product-Licensor View").Select
Cells.Find(cel, LookIn:=xlValues).EntireColumn.Select
For Each C In ActiveCell.EntireColumn
If IsNull(C) = False Then
C.Interior.ColorIndex = 3
End If
Next C
Next cel
Le résultat : 1 seule colonne n'est sélectionnée,(alors que dans "Plage", il y a plusieurs cellules, et cette colonne est entièrement colorée en rouge, alors que je ne voulais ca seulement pour les cellules ayant une valeur > 0.
Voila. Je vous remercie par avance pour votre aide.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 3 janv. 2007 à 12:03
Pour simplifier, disons que tu sélectionnes manuellement la plage de données que tu veux vérifier
Dim Recherche as range, Cellule as range
For each Cellule in Selection
Set Recherche = sheets("Product-Licensor View").Find(cellule.Text)
If Not Recherche is nothing then 'Trouvé
'Vérification des cellules > 0 avec sheets("Product-Licensor View").Range(Recherche.Address).Offset(0, X)
End If
Next
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 3 janv. 2007 à 09:58
Re,
Essaies ceci.
Dim C As Range
Dim Cel As Range
For Each Cel In Sheets("Reporting").Range("H22").EntireColumn
ActiveWorkbook.Worksheets("Product-Licensor View").Cells.Find(Cel.Text, LookIn:=xlValues).EntireColumn.Select
For Each C In Selection
If C.Value > 0 Then C.Interior.ColorIndex = 3
Next C
Next Cel
Vinzfloz1
Messages postés21Date d'inscriptionmercredi 3 janvier 2007StatutMembreDernière intervention 3 avril 2007 3 janv. 2007 à 10:41
Salut,
Le fait qu'il existe ou pas la valeur ne change rien. A moins que le fait que la 1ere recherche commençant à H22.EntireColumn, check aussi les cellules vides, ce qui provoque le message (juste une supposition..)
J'ai modifié ton code :
Dim C As Range
Dim Cel As Range
For Each Cel In Sheets("Reporting").Range("H22").EntireColumn
ActiveWorkbook.Worksheets("Product-Licensor View").Activate
Cells.Find(Cel.Text, LookIn:=xlValues).EntireColumn.Select
For Each C In Selection
If C.Value > 0 Then C.Interior.ColorIndex = 3
Next C
Next Cel
Avec ce code, peut importe la valeur située en H22 et suivant, seule 1 colonne dans la 2ème feuille est sélectionnée en rouge. :)
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 3 janv. 2007 à 10:51
RE,
Lorsque tu dis
"Avec ce code, peut importe la valeur située en H22 et suivant, seule 1 colonne dans la 2ème feuille est sélectionnée en rouge"
Est ce que cela veut dire que ton problème est résolu?.
ou est ce que cela veut dire que tu souhaite sélectionné plus d'une colonnes?
Car actuellement vu que tu ne boucle pas sur le Find, c'est normal qu'il n'y est qu'une colonne de selectionné (et encore si la valeur est trouvée.).
Vinzfloz1
Messages postés21Date d'inscriptionmercredi 3 janvier 2007StatutMembreDernière intervention 3 avril 2007 3 janv. 2007 à 13:41
Merci MPi cela complète en partie les codes de Julien. On avance
Mais j'ai quelques difficultés à mettre tout ça en place.
Résultat : Dans ma 2ème feuille, les cellules recherchées sont bien sélectionnées et en rouge. Donc on avance puisqu'avant seule la dernière occurence était séléctionnée.
Je souhaiterai que toutes les cellules de la colonne ou se situe la Valeur trouvée soient soumis au test > 0.
Je pense que le problème se trouve dans ma 2ème boucle.
Voici le code :
Dim Recherche As Range, Cellule As Range, C As Range
Sheets("Reporting").Range("H22:H30").Select
For Each Cellule In Selection
Set Recherche = Sheets("Product-Licensor View").Cells.Find(Cellule.Text)
If Not Recherche Is Nothing Then 'Trouvé
For Each C In Sheets("Product-Licensor View").Range(Recherche.Address).Offset(X, X)
If C.Value > 0 Then C.Interior.ColorIndex = 3
Next C
'Vérification des cellules > 0 avec sheets("Product-Licensor View").Range(Recherche.Address).Offset(0, X)
End If
Next
Vinzfloz1
Messages postés21Date d'inscriptionmercredi 3 janvier 2007StatutMembreDernière intervention 3 avril 2007 3 janv. 2007 à 13:54
Ca y est, ca fonctionne presque correctement.
Il reste quelques bugs, par ex :
- Après plusieurs lancement de l'application, il me sélectionne à la fois les valeurs de la précédentes recherches et celles de la nouvelle.
Je pense que je dois Unloader quelquechose ou utiliser Clearcontents.
En tout cas, merci à tous les deux pour votre aide, rapide, clairs et complémentaires.
Vinzfloz1
Messages postés21Date d'inscriptionmercredi 3 janvier 2007StatutMembreDernière intervention 3 avril 2007 3 janv. 2007 à 14:29
Rebesoin de votre aide
Comme je l'ai indiqué dans mon dernier message, il y a un bug.
Je ne comprends pas pourquoi. Dans la 2ème feuille, là où l'application recherche les valeurs définis dans la 1ere, il m'effectue la recherche pour une valeur qui n'existe pas dans ma 1ere feuille.
Ex: il doit rechercher : Toto, Tata, Titi,
Et il me fait en plus de ces trois Tutu. Et ceci peu importe les cellules de la première feuille.
Si vous pouviez une fois de plus m'aider ce serait cool.
Je remets mon code actuel :
Dim Recherche As Range, Cellule As Range, C As Range
Sheets("Reporting").Range("H22:H30").Select
For Each Cellule In Selection
Set Recherche = Sheets("Product-Licensor View").Cells.Find(Cellule, LookIn:=xlValues).EntireColumn
If Not Recherche Is Nothing Then 'Trouvé
For Each C In Sheets("Product-Licensor View").Range(Recherche.Address).Offset(0, 0) If C.Value > 0 And C.Font.Bold True Then C.Interior.ColorIndex 3
Next C
'Vérification des cellules > 0 avec sheets("Product-Licensor View").Range(Recherche.Address).Offset(0, X)
End If
Next Cellule