remplacer une mention sur une certaine plage de cellule de toutes les feuilles num

superbog

XLDnaute Occasionnel
Bonsoir à vous,

J'ai un classeur avec de nombreuses feuilles dont beaucoup porte un nom numérique (1428,1429,2486...) et d'autres un nom alphabétique (clients, VR...)

J'ai besoin dans toutes les feuilles numériques dans les cellules H6:H900 de remplacer les mentions "EP" et "CL" par la mention "C2"

J'ai donc fait la macro ci dessous mais elle ne fonctionne pas, sauf sur la première feuille, pourriez vous m'aider?


Code:
Sub remplaceCOLLAB()

Dim ws As Worksheet

 On Error Resume Next
 
With ThisWorkbook
    For Each ws In .Worksheets
        If IsNumeric(ws.Name) Then
            Range("H6:H900").Select
            Selection.Replace What:="EP", Replacement:="C2", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            Range("H6:H900").Select
            Selection.Replace What:="CL", Replacement:="C2", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        End If
Next

End With

MsgBox "opération effectuée"

End Sub

merci d'avance
 

Paf

XLDnaute Barbatruc
Re : remplacer une mention sur une certaine plage de cellule de toutes les feuilles n

Bonjour

Dans la boucle If IsNumeric(ws.Name).... tous les Range s'adressent à la feuille courante. donc pour chaque feuille "numérique" on va exécuter le code toujours sur la même plage!

La solution: référencer les Range à la feuille "balayée" par la boucle :

If IsNumeric(ws.Name) Then
ws.Range("H6:H900").Select
.........

End If


par ailleurs, a priori, pas besoin de sélectionner deux fois la même plage. Le premier ws.Range("H6:H900").Select devrait suffire

A+
 

Si...

XLDnaute Barbatruc
Re : remplacer une mention sur une certaine plage de cellule de toutes les feuilles n

salut

d'accord avec Paf ;).
Un autre exemple de code
Code:
Sub remplaceCOLLAB()
  Dim ws As Worksheet
  For Each ws In Sheets
    If IsNumeric(ws.Name) Then
       With ws.Range("H6:H900")
         .Replace "EP", "C2"
         .Replace "CL", "C2"
       End With
    End If
  Next
  MsgBox "opération traitée"
End Sub

à noter que le message apparaît même si aucune cellule n'a été transformée
 

Discussions similaires

Réponses
1
Affichages
139

Statistiques des forums

Discussions
312 538
Messages
2 089 396
Membres
104 157
dernier inscrit
STEPH62110