Remplacer cellule trouver avec Find()

Bolschack

XLDnaute Nouveau
Bonjour a tous,
Apres de nombreuse recherche, je n'arrive toujours pas a trouver l'adresse de la cellule contenant ma variable et de changer le fond de couleur de la cellule suivant la valeur merci de votre aide si vous avez la solution
 

vgendron

XLDnaute Barbatruc
Re : Remplacer cellule trouver avec Find()

comme ceci..

Range("A1:A10").Select 'zone de recherche
With Selection
Set c = .Find(2, LookIn:=xlValues) 'ici on recherche la valeur 2
If Not c Is Nothing Then firstAddress = c.Address 'on note l'addresse dans la variable firstAddress
End with

Range(firstAddress).Interior.ColorIndex = 50 'on colorie la cellule avec l'indice couleur 50
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplacer cellule trouver avec Find()

Bonjour le fil, bonjour le forum,

En reprenant l'exemple de Vgendron (pouquoi 2 et pourquoi un point devant Find ? J'ai du zapper des étapes...):
Code:
Dim c As Range

Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then firstAddress = c.Address
Ça donnerait
Code:
c.Interior.ColorIndex = 5 'par exemple
 

vgendron

XLDnaute Barbatruc
Re : Remplacer cellule trouver avec Find()

Hello Robert
Pourquoi 2. bah . pourquoi pas? ;-) c'était juste pour l'exemple. il peut rechercher "midi à quatorze heures" s'il le souhaite ;-)
pourquoi le .find: à cause du: with selection
je me suis contenté de copier coller l'exemple de l'aide VBA
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplacer cellule trouver avec Find()

Bonjour le fil, bonnour le forum,

Oui Vgendron tu as raison ! pourquoi pas
2 ? En revanche, pour le point devant le .Find, ton code tel qu'il est va planter à cause de ce point justement... Autant reprendre l'aide VBA en entier non ?
Code:
Dim c As Range 'déclare la variable c (Cellule)
Dim pa As String 'déclare la variable pa (Première Adresse)

With Worksheets(1).Range("a1:a500") 'prend en compte la plage de recherche (à adapter à ton cas)
    Set c = .Find(2, , xlValues, xlWhole) 'définit la recherche (remplacer 2 par ta variable ou la valeur de celle-ci ou l'adresse d'une cellule la contenant)
    If Not c Is Nothing Then 'condition : si il existe au moins une occurence trouvée dans la plage de recherche
        pa = c.Address 'définit l'adresse de la première occurrence trouvé pa
        Do 'exécute
            c.Interior.ColorIndex = 5 'colore l'occurrence trouvée
            Set c = .FindNext(c) 'redéfinit la recherche (occurrence suivante)
        Loop While Not c Is Nothing And c.Address <> pa 'boucle tant qu'il existe des occurrences ailleurs qu'en pa
    End If 'fin de la condition
End With 'fin de la prise en compte de la plage de recherche
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplacer cellule trouver avec Find()

Bonjour le fil, bonjour le forum,

Vgendron, le point fait toujours référence à un With... situé au dessus ! S'il n'y en a pas, ça plante ! Cela permet d'éviter d'écrire dans le code la référence du With.

Exemple :
Code:
Sheets("Feuil1").Range("A1").Value = 1
Sheets("Feuil1").Range("A10").Value = 10
Sheets("Feuil1").Range("A20").Value = 20
Sheets("Feuil1").Range("A30").Value = 30
peut aussi s'écrire
Code:
With Sheets("Feuil1")
     .Range("A10").Value = 10
     .Range("A20").Value = 20
     .Range("A30").Value = 30
End With
Mais si tu écris :
Code:
.Range("A1").Value = 1
sans le With..., là c'est plantage assuré...
 

vgendron

XLDnaute Barbatruc
Re : Remplacer cellule trouver avec Find()

ahhh. ok.. je viens de comprendre ta remarque.. tu faisais référence à mon post #2 où effectivement je n'avais pas tout recopié.. désolé
cela dit, meme avec le with, j'ai parfois quelques ennuis que je suis obligé de contourner en activant la feuille contenant le range. mais ca c'est une autre histoire et ca fera peut etre l'objet d'un autre fil..
en tout cas merci
 

Discussions similaires

Réponses
8
Affichages
238
Réponses
4
Affichages
166

Statistiques des forums

Discussions
312 240
Messages
2 086 517
Membres
103 239
dernier inscrit
wari