Multi replace simultané

Bonjour,

Je cherche un code qui me permette de remplacer simultanément plusieurs critères dans une formule ( dans le même esprit qu’en faisant Ctrl+H mais multi critères). Le code suivant fonctionne bien, mais seulement pour une cellule (Active).

Private Sub cb1_Click()

ActiveCell.Formula = Replace(Replace(Replace(Replace(ActiveCell.Formula, USF.tb1.Text, USF.tb2.Text), USF.tb3.Text, USF.tb4.Text), USF.tb5.Text, USF.tb6.Text), USF.tb7.Text, USF.tb8.Text)
USF.Hide

End Sub

Quand j’utilise le même code avec:

Selection.Replace

J’ai une erreur " Type mismatch Run time error ‘13’"

USF  Userform

Tb  textbox

Cb1 = Command button

Screenshot Userform:

unbenannt

Merci d’avance

Jeremy

une boucle devrait faire l'affaire, non ?

Private Sub cb1_Click()
    Dim cellule As Range
    For Each cellule In Selection
        cellule.Formula = Replace(Replace(Replace(Replace(ActiveCell.Formula, USF.tb1.Text, USF.tb2.Text), USF.tb3.Text, USF.tb4.Text), USF.tb5.Text, USF.tb6.Text), USF.tb7.Text, USF.tb8.Text)
    Next
    USF.Hide
End Sub

Franck

Ça fonctionne super bien, je n’avais pas pensé à la boucle

Merci

Jeremy

Bonjour à tous,

Finalement je me suis avancé un peu vite

Avec la proposition de Franck, le multi replace fonctionne mais la formule de la première cellule est répetée dans toutes les suivantes

Avez-vous des propositions ?

merci d'avance

Jeremy

C'est sûrement un peu barbare mais j'ai opté pour la solution suivante :

Dim cellule As Range
Dim n, i, row_debut, row_fin, col_debut, col_fin As Integer

' Find the starting and ending position of rows and columns
row_debut = ActiveCell.Row
row_fin = ActiveCell.Row + Selection.Rows.Count - 1
col_debut = ActiveCell.Column
col_fin = Selection.Columns.Count + ActiveCell.Column - 1

'Replace from row/col_debut to row/col_fin
For i = row_debut To row_fin
    For n = col_debut To col_fin
        Cells(i, n).Formula = Replace(Replace(Replace(Replace(Cells(i, n).Formula, USF.tb1.Text, USF.tb2.Text), USF.tb3.Text, USF.tb4.Text), USF.tb5.Text, USF.tb6.Text), USF.tb7.Text, USF.tb8.Text)
     Next n
Next i

Bonne journée

Jeremy

Rechercher des sujets similaires à "multi replace simultane"