Je dois effectuer une qualification d'adresses à l'aide de la macro
ci-dessous.
Qui peut me dire comment faire pour que la macro continue quand il n'y a pas
d'occurence d'une chaîne recherchée et passe à la recherche suivante,
quelque soit le nombre de recherche total à faire.
Ne serait-il pas préférable d'ajouter une instruction FindNext, mais les
boucles Do Loop While ce n'est pas mon fort !
FindNext, méthode - Exemple : Cet exemple montre comment rechercher toutes
les cellules de la plage A1:A500 qui contiennent la valeur 2, puis grise ces
cellules.
With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues) ' je ne somprends pas <.Find>
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Interior.Pattern = xlPatternGray50 ' pourrais-t-on remplacer
ici par <Selection.Replace>
Set c = .FindNext(c) ' je ne somprends pas <.FindNext>
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Merci pour votre aide
BDR
Sub Qualif_ADR()
' Touche de raccourci du clavier: Ctrl+a
ActiveCell.Columns("A:A").EntireColumn.Select
' Rue
Selection.Replace What:=", r ", Replacement:=" rue ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.Replace What:=" r ", Replacement:=" rue ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
' Place
Selection.Replace What:=", pl ", Replacement:=" place ",
LookAt:=xlPart,_
SearchOrder:=xlByRows, MatchCase:=False
' Avenue
Selection.Replace What:=", av ", Replacement:=" avenue ",
LookAt:=xlPart_
SearchOrder:=xlByRows, MatchCase:=False
Selection.Replace What:="av ", Replacement:="Avenue ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
End Sub
Sub test2()
For Each c In Range("a1:h500")
If c.Value Like "*2*" Then c.Interior.Pattern = xlPatternGray50
If c.Value = ",r " Or c.Value = "r " Then c.Value = "rue"
If c.Value = ",pl " Or c.Value = "pl " Then c.Value = "avenue"
Next c
End Sub
là, j'ai supposé que tes r et pl sont dans une cellule, sinon essaye avec le
like (mais en cas le 8, r du ravin devient le 8, rue du rueavin !)
a+
rural thierry
Bruno-Dominique ROBERT <b...@rvh.fr> a écrit dans le message :
u45llQiKBHA.2060@tkmsftngp02...
a) Si ce que tu veux , est de remplacer dans la
première colonne ("A:A") la chaîne "R" par la chaîne
"Rue" Voici ce que tu pourrais écrire:
Worksheets("NomFeuille").range("A:A").replace "R","Rue
Dans la plage de cellules nommées, à chaque occurence
de la lettre R , cette dernière va être remplacé par Rue que
la cellule contienne seulement la valeur R ou plusieurs R
à chaque fois, elle va substituer R pour Rue.
Ce type d'approche est très rapide lorsqu'il convient...
B) À partir de cet exemple provenant de l'aide d'Excel,
With Worksheets(1).Range("a1:a500")
Dans la ligne qui suit C est une variable de type Range
qu'on aurait pu définir en début de procédure
dim C as range
donc C hérite de tous les méthodes et propriétés de
l'objet Range
La syntaxe .Find est une saisi abrégée de la ligne de commande
Worksheets(1).Range("a1:a500").find...
C'est ce que permet l'approche With ...end with et c'est applicable
à tous les méthodes de l'objet Range dans notre cas, Si cela avait
été une Feuille , on aurait pu référencé les méthodes de la feuille
de la même manière.
Set c = .Find(2, lookin:=xlValues) ' je ne somprends pas
<.Find>
If Not c Is Nothing Then
firstAddress = c.Address
Do
Si tu voulais remplacer seulement les cellules contenant la valeur
"R"
par la valeur "Rue" tu pourrais ajouter:
if c.value="R" then c.value="Rue"
la méthode replace n'est pas la meilleure façon puisque tu dois
tester d'abord la valeur que contient la cellule.
c.Interior.Pattern = xlPatternGray50 ' pourrais-t-on remplacer
ici par <Selection.Replace>
la syntaxe de .findnext est identique à celle définie précédemment.
La ligne .findNext si elle n'était pas là, après la première occurence,
la boucle s'arrêterait.
Set c = .FindNext(c) ' je ne somprends pas <.FindNext>
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
J'espère que c'est plus clair....
Salutations!
"Bruno-Dominique ROBERT" <b...@rvh.fr> a écrit dans le message news:
u45llQiKBHA.2060@tkmsftngp02...