"Rechercher / Remplacer" sous VB

13Hubert

XLDnaute Junior
Bonjour à toutes et à tous !

Sous Excel 97...

Je cherche à appliquer la fonction "Rechercher/Remplacer" sous VB mais en utilisant la valeur de 2 cellules.

Je m'explique :
Les cellules A1 et A2 de la feuil1 contiennent des valeurs qui changent souvent et que je voudrais utiliser dans la fonction "Rechercher/Remplacer"
Exemple :
dans la plage B1:Z100, rechercher la valeur contenue dans A1 et la remplacer par la valeur de B1

Comment faire ça sous VB SVP ?
Merci beaucoup à toutes et à tous !

Hubert
 

Pierrot93

XLDnaute Barbatruc
Re : "Rechercher / Remplacer" sous VB

Bonjour Hubert, jp14

regarde peut être le code ci dessous, recherche la valeur de A1 et remplace par la valeur de A2 :

Code:
Range("B1:Z100").Replace Range("A1").Value, Range("A2").Value, xlWhole, , False

bon après midi
@+
 

13Hubert

XLDnaute Junior
Re : "Rechercher / Remplacer" sous VB

Salut tout le monde !
:)

-------------------------------------------------------------------------

Bonjour

Dans l'aide de VBA on trouve un exemple de rechercher et remplacer avec la fonction FIND.

JP

Bonjour jp14.

Mon problème est que la machine sur laquelle je travaille a été installée par l'informaticien de la boite et qu'il est du genre minimaliste. Il a la sale habitude d'installer les Logs en ôtant tout ce qu'il juge inutile... :mad:
Je n'ai pas l'aide de VBA... :(

-------------------------------------------------------------------------

Bonjour Pierrot93

Merci pour ta proposition, je vais tester ça tout de suite.

-------------------------------------------------------------------------

Cordialement
Hubert
 

13Hubert

XLDnaute Junior
Re : "Rechercher / Remplacer" sous VB

Bonjour à tous !

Bon... La proposition de Pierrot93 fonctionne à merveille sauf... si la valeur à rechercher/remplacer est dans une formule.
Ainsi, dans ma plage, si j'écris directement la valeur, ça marche super ! Mais si cette valeur est dans une formule, elle n'est pas reconnue et donc, pas remplacée...
Alors je crie à nouveau à l'aide !

Merci encore à tous !

Cordialement

Hubert
 

Pierrot93

XLDnaute Barbatruc
Re : "Rechercher / Remplacer" sous VB

Bonjour Hubert, jp14

qu'entends tu par si la valeur est dans une formule ? c'est le résultat d'une formule ou la valeur est dans la formule elle même ? d'autre part il n'y a qu'une seule valeur à "rechercher / remplacer", ou peut il y en avoir plusieurs ?

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : "Rechercher / Remplacer" sous VB

Re

pour une seule valeur dans la plage (résultat de formule) :

Code:
Sub test()
Dim x As Range
Set x = Range("B1:Z100").Find(Range("A1").Value, , xlValues, xlWhole, , , False)
If Not x Is Nothing Then x.Value = Range("A2").Value
End Sub

pour plusieurs :

Code:
Sub test2()
Dim x As Range, a As String
With Sheets("Feuil1").Range("B1:Z100")
    Set x = .Find(Range("A1").Value, , xlValues, xlWhole, , , False)
    If Not x Is Nothing Then
        
        Do
            x.Value = Range("A2").Value
            Set x = .FindNext(x)
        Loop While Not x Is Nothing
    End If
End With
End Sub

@+

edition modification "Loop While Not x Is Nothing"
 
Dernière édition:

13Hubert

XLDnaute Junior
Re : "Rechercher / Remplacer" sous VB

Re...

Bonjour Hubert, jp14

qu'entends tu par si la valeur est dans une formule ?

@+

Je m'aperçois qu'il est particulièrement important d'être explicite dans un forum... Pardon de ne pas l'avoir été suffisamment...!
Je m'explique par un exemple :
Ma cellule A1 contient "10"
Ma cellule B1 contient "20"
Les cellules de ma plage peuvent contenir une formule du genre :
=si(C1="10";"Ca marche !";"A revoir")

Je voudrais qu'une fonction VBA puisse rechercher dans cette plage toutes les cellule dont la formule contient la valeur de A1 pour la remplacer par la valeur de B1 et ainsi retrouver dans ces cellules :
=si(C1="20";"Ca marche !";"A revoir")

Etc...si je change la valeur contenue dans A1 et B1...

Voilà !

Celà dit, je prends ta proposition qui suit et la garde pour ma culture...
Merci encore !

Hubert
 

Pierrot93

XLDnaute Barbatruc
Re : "Rechercher / Remplacer" sous VB

Re

le code ci dessous alors, si j'ai bien compris :

Code:
Sub test()
Dim x As Range
With Sheets("Feuil1").Range("B1:Z100")
    Set x = .Find(Range("A1").Value, , xlFormulas, xlPart, , , False)
    If Not x Is Nothing Then
        Do
            x.Formula = Replace(x.Formula, CStr(Range("A1").Value), CStr(Range("A2").Value))
            Set x = .FindNext(x)
        Loop While Not x Is Nothing
    End If
End With
End Sub

bon après midi
@+
 

13Hubert

XLDnaute Junior
Re : "Rechercher / Remplacer" sous VB

RE...

C'est encore le casse-pieds de service !

le code ci dessous alors, si j'ai bien compris :

@+

Je sais que tu as compris ce que j'ai écrit et la grande... petitesse de mes connaissances en VBA me permet au moins d'entre-apercevoir dans le code que tu m'as proposé que l'on parle de la même chose... Merci à toi Pierrot !

Pourtant, est-ce dû à un problème de version d'Excel - la mienne 97 -, mais le système marque un arrêt de la macro avec une sélection sur Replace et le message : "Erreur de compilation: Sub ou fonction non définie
J'avoue là mon insignifiante capacité à trouver ce qui ne va pas et après une vaillante torture de mon esprit sans résultat, je m'en remets à nouveau à toi (ou vous, du forum...!) pour m'aider à comprendre.

Je te remercie encore pour ta sympathie et ta patience.

Hubert
 

Staple1600

XLDnaute Barbatruc
Re : "Rechercher / Remplacer" sous VB

Bonjour 13 Hubert, Pierrot93, le fil, le forum


Replace n'est pas compatible avec Excel 97

Il faut en récréer l'équivalent


Le temps de le retrouver ...

edit voila:
Equivalents: (issus du forum)
Fil XLD (1)

Filx XLD (2)

Ailleurs sur le net
'source:Equivalent Replace pour Excel 97
Code:
Public Function Remplace(Chaine$, Ancien$, Nouveau$)
       
Remplace = Application.WorksheetFunction.Substitute(Chaine, Ancien, Nouveau)
        
End Function
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : "Rechercher / Remplacer" sous VB

Re

chez moi cette macro fonctionne (excel 2003), aucune certitude sur l'existence de la fonction "replace" sous excel 97... A confirmer donc...

bon après midi
@+

Edition, bonjour Staple, avais pas vu ton précédant post...
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : "Rechercher / Remplacer" sous VB

Re


Cela pourrait (par exemple) donner:


EDIT: En reprenant le code de Pierrot93
- Test OK sous Excel 2000
- ( à tester sous 97)
Code:
Sub test()
Dim x As Range
With Sheets("Feuil1").Range("B1:Z100")
    Set x = .Find(Range("A1").Value, , xlFormulas, xlPart, , , False)
    If Not x Is Nothing Then
        Do
            x.Formula = Remplace(x.Formula, CStr(Range("A1").Value), CStr(Range("A2").Value))
            Set x = .FindNext(x)
        Loop While Not x Is Nothing
    End If
End With
End Sub

Public Function Remplace(Chaine$, Ancien$, Nouveau$)
Remplace = Application.WorksheetFunction.Substitute(Chaine, Ancien, Nouveau)
End Function
 
Dernière édition:

13Hubert

XLDnaute Junior
Re : "Rechercher / Remplacer" sous VB

Salut Staple1600, toutes et tous !

Merci pour la proposition mais mon Excel me donne maintenant la tournique (comme on dit chez moi...) à force de se mettre dans ce qui me semble bien ressembler à une boucle sans fin... :) Il n'a répondu qu'à la pression sur Ctrl+Alt+Suppr

Merci d'avoir essayé... :eek:

Bien cordialement,
Hubert
 

Pierrot93

XLDnaute Barbatruc
Re : "Rechercher / Remplacer" sous VB

Re

essaye peut être comme ceci :

Code:
Sub test()
Dim x As Range
With Sheets("Feuil1").Range("B1:B10")
    Set x = .Find(Range("A1").Value, , xlFormulas, xlPart, , , False)
    If Not x Is Nothing Then
        Do
            x.Formula = WorksheetFunction.Substitute(x.Formula, CStr(Range("A1").Value), CStr(Range("A2").Value))
            Set x = .FindNext(x)
        Loop While Not x Is Nothing
    End If
End With
End Sub

execute pas à pas (avec touche de fonction F8 dans l'éditeur vba), sinon touche ECHAP ou CTRL PAUSE pour sortir d'une boucle...

a priori chez moi cela ne boucle pas sans fin....

bonne soirée
@+
 

Discussions similaires

Réponses
26
Affichages
438
Réponses
1
Affichages
134

Statistiques des forums

Discussions
312 400
Messages
2 088 087
Membres
103 712
dernier inscrit
Charles authentique