Rechercher remplacer VBA : OK pour formules, non pour contenu de cellule

Bonjour à tous,

Pour ceux qui auraient suivi mon premier sujet (https://forum.excel-pratique.com/viewtopic.php?f=2&t=115457), il s'agit du même fichier mais d'un problème complètement différent, d'où un autre post.

Dans mon fichier joint, je souhaite, dans l'onglet "bb", pouvoir changer le nom de l'activité grâce au bouton du même nom.

Tout est presque fait, mais, dans l'onglet "cahier AS" par exemple, le code suivant recherche et remplace bien toutes les formules comprenant la mention "bb" mais elle ne change le contenu des cellules.

Dim feuil As Worksheet
For Each feuil In ThisWorkbook.Worksheets
    feuil.Cells.Replace what:=ActiveSheet.Name, Replacement:=TextBox1.Value

Next feuil

Ainsi le titre du tableau en A2 de l'onglet "Cahier AS" reste "bb" même si je change l'activité en "hand". En revanche les formules ont bien changé dans le tableau.

Je pense qu'il y a une solution toute bête mais j'ai cherché 3h hier soir sans trouver.

9cahier-as-auto.xlsm (175.77 Ko)

Bonjour,

essaie en ajoutant ces paramètres

, LookIn:=xlValues, LookAt:=xlPart

lookin pour indiquer si tu veux changer les formules (xlformulas) ou les valeurs (xlvalues)

lookat pour indiquer si tu veux remplacer tout le contenu (xlwhole) de la cellule ou seulement une partie (xlpart)

Bonjour H2so4,

Tout d'abord merci de te pencher sur mon souci.

J'ai essayé ça :

Dim feuil As Worksheet
For Each feuil In ThisWorkbook.Worksheets
    feuil.Cells.Replace what:=ActiveSheet.Name, Replacement:=TextBox1.Value, LookIn:=xlValues, lookat:=xlPart
Next feuil

Mais ça ne fonctionne pas. Dans l'explication du code "replace" il n'envisage pas de "lookin" l'erreur vient-elle de là ? Ou est-ce moi ?

Quoiqu'il en soit, c'est le lookin qui pose problème : il m'indique "erreur de compilation : argument nommé introuvable"

Bonjour,

Si ton code était moins brouillon, respectait quelques règles de base, utilisait des variables pour fixer tes valeurs de substitution...

ActiveSheet.Name = TextBox1.Value

Dim feuil As Worksheet
For Each feuil In ThisWorkbook.Worksheets
    feuil.Cells.Replace what:=ActiveSheet.Name, Replacement:=TextBox1.Value

Next feuil

Au vu de ce fragment tu remplaces dans les feuilles la nouvelle valeur du nom de ta feuille modifiée par elle-même !

Cordialement.

Mais ça ne fonctionne pas. Dans l'explication du code "replace" il n'envisage pas de "lookin" l'erreur vient-elle de là ? Ou est-ce moi ?

Quoiqu'il en soit, c'est le lookin qui pose problème : il m'indique "erreur de compilation : argument nommé introuvable"

Au temps pour moi, lookin n'est en effet pas un paramètre de la fonction range.replace

Si ton code était moins brouillon, respectait quelques règles de base, utilisait des variables pour fixer tes valeurs de substitution...

Je n'ai jamais dit que je maîtrisais VBA. Je n'ai jamais eu de formation et ma seule façon de m'y atteler c'est de chercher des heures sur les forums et de coller les bouts de code qui correspondent en essayant de les adapter. D'où le bazar ambiant. J'en suis conscient mais je ne connais pas les conventions de base.

Au vu de ce fragment tu remplaces dans les feuilles la nouvelle valeur du nom de ta feuille modifiée par elle-même !

Effectivement, c'est ce que je cherche. Changer le nom de l'onglet via un bouton situé dans ce même onglet et remplacer son ancien nom par le nouveau dans toutes les feuilles. J'y suis parvenu pour les formules mais pas pour les valeurs des cellules.

Re !

Tu as lu un peu superficiellement ce que j'ai écrit ! Illustrons :

tu changes bb en Hand : OK ?

Lorsque cette ligne sera exécutée :

ActiveSheet.Name = TextBox1.Value

bb étant la feuille active, la valeur de TextBox1 étant "Hand"

le nom de la feuille bb est remplacé par Hand !

Lorsqu'arrive ensuite :

For Each feuil In ThisWorkbook.Worksheets
    feuil.Cells.Replace what:=ActiveSheet.Name, Replacement:=TextBox1.Value

Next feuil

le nom de la feuille active est Hand et la valeur de TextBox1 toujours Hand !

tu demandes donc de remplacer "Hand" par "Hand"...

Tu auras donc un peu de mal à remplacer les mentions bb par Hand !

Cordialement.

Merci pour ces précisions MFerrand et je te suis parfaitement dans ton raisonnement.

Mais je ne comprends alors pas pourquoi le changement du nom d'activité se fait quand même dans toutes les formules... Je crois que je vais péter une durite...

Bé !! Le remplacement dans les formules, c'est Excel qui le fait automiquement au changement de nom de feuile !

J'y ai pensé mais j'ai vérifié et c'est pas le cas. Si je neutralise ce passage du code, mes formules ne fonctionnent plus !!

Mais bon j'ai réussi quand même.... c'est pas académique, mais j'ai réussi.

Les puristes vont me lapider parce que c'est un joyeux bordel, mais ça marche.

Je remets mon fichier en pièce jointe et je clos le sujet.

Merci beaucoup pour vos retours.

10cahier-as-auto.xlsm (178.01 Ko)
Rechercher des sujets similaires à "rechercher remplacer vba formules contenu"