Remplacer tout en VBA avec trop d'onglets

Bonjour à tous,

Je m'excuse par avance si je pose une question dont la réponse a déjà été donnée dans le forum mais je n'ai rien trouvé avec le module de recherche.

Je cherche à réaliser une macro VBA permettant de rechercher et remplacer une chaîne de caractères (variable string stockant une adresse IP) par une autre (autre adresse IP) dans un fichier Excel comportant un très grand nombre de feuilles (>80).

Voici mon code (tiré d'un bête enregistrement de macro avec Excel à partir d'un ctrl+h avec option "rechercher dans le classeur") :

Cells.Replace What:=monip1, Replacement:=monip2, LookAt _
:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

J'ai une autre macro semblable (avec le même code) sur un autre fichier qui fonctionne correctement mais dans ce fichier spécifique avec un très grand nombre de feuilles cela ne fonctionne pas. Quand je me mets sur la feuille active contenant l'@IP à remplacer, la macro fonctionne, mais pas sur les occurrences dans les autres feuilles. Je ne peux malheureusement pas vous mettre le fichier en question car il est confidentiel...

Si quelqu'un a une idée sur l'origine de mon problème ou si c'est simplement une limitation de VBA avec la fonction "remplacer" quand le nombre d'onglets est trop important...

Merci par avance pour votre aide.

Cordialement,

Valentin

Bonjour et bienvenue,

même avec un fichier confidentiel, il est possible de le rendre anonyme

néanmoins voici une proposition "à main levée" donc non testée

sub remplacer()

for each f in worksheets

f.Cells.Replace What:=monip1, Replacement:=monip2, LookAt _
:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

next

end sub

bonjour,

edit : salut Steelson

une propositon

    For Each ws In Worksheets
        ws.Cells.Replace What:=monip1, Replacement:=monip2, LookAt _
        :=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next ws

Merci à vous Steelson, cela fonctionne avec cette syntaxe. C'est un poil plus long mais cela répond bien à mon besoin.

Bonjour à tous,

D'un autre côté si tu n'avais pas 80 onglets, ça serait moins long....

Le vrai problème ne viendrait-il pas de ce nombre trop important ?

@JoyeuxNoel : malheureusement je ne peux pas toucher au fichier, c'est un export de données formaté par un outil technique dans mon métier et si je le modifie je ne peux plus le réimporter par la suite. Quand je dis que c'est plus long, ça ne prend quelques secondes donc ça va au final.

Merci à tous pour votre aide précieuse et votre temps.

Rechercher des sujets similaires à "remplacer tout vba trop onglets"