Remplacer le nom d'une feuille par une autre dans une formul
Bonjour à tous,
Pouvez vous m'aider à créer une macro sur excel qui permette de rechercher puis de remplacer le nom d'une feuille du classeur par une autre (différente à chaque nouveau remplacement) utilisée par une fonction dans une formule?
J'ai essayer d'enregistrer une macro avec ctrl+F mais je n'obtiens pas ce que je veux :
Voila le code que j'obtiens :
Sub Macro6()
'
' Macro6 Macro
Range("B5:J5").Select
ActiveCell.Replace What:="1.1 Nom P.", Replacement:="Feuil1", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Find(What:="1.1 Nom P.", After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Replace What:="1.1 Nom P.", Replacement:="Feuil1", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub--> J'aimerai que dans ce code le "Feuille 1" ne soit pas du texte mais une référence à une cellule dont le contenu (que je pourrai changer) serait le nom d'une feuille.
J'espère que je me suis faite comprendre...
Merci d'avance à ceux qui prendront le temps de réfléchir à mon problème et qui me répondront!
Emilie
Bonjour,
Sans trop savoir ce qui défini le nom de la feuille recherchée, voici un exemple de code que tu peux utiliser :
(en supposant que le nouveau nom est dans la cellule A1 de la feuille "Feuil1" et que le nom de la feuille à changer est "1.1 Nom P.")
Sheets("1.1 Nom P.").Name = Sheets("Feuil1").Range("A1")A+
Bonsoir Emilie, GrandChamanExcel,
En effet ce n'est pas très clair selon que l'on te lise ou que l'on essaye de traduire ce que tu as voulue faire dans ta macro.
Veux tu :
_ rechercher si dans une plage de cellules il y a un/des contenu(s) qui corresponde à un/des noms de feuilles de ton classeur et si oui changer ses valeurs ? si oui par/selon quoi?
_ changer des noms de feuilles ? (voir le code et la remarque de GrandChamanExcel)
_ autre ?
Un petit fichier avec la situation avant/après et la description de tes critères aideraient à mieux te répondre.
A te lire
Jules
Bonjour,
En fait c'est bon j'ai trouver grâce au post de GrandChamanExcel merci !!
Selection.Replace What:="1.1 Nom P.", Replacement:=Sheets("1.3 Formulaire ").Range("B6"), _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
Mais maintenant, j'ai le même soucis mais avec la fonction hypertexte. J'aimerai qu'avec une macro, le contenu de la cellule A4 de ma "feuil1", devienne un lien hypertexte vers une autre feuille de mon classeur (contenant des info sur la personne de la cellule A4). Mais j'aimerai comme pour mon "rechercher remplacer", définir la feuille dont je veux faire référence. Il ne faut PAS qu'à chaque fois que je lance la macro ma cellule A4 de ma feuil1 renvoie vers la même feuille.
Voila le code pour crée le lien hypertexte :
Sub Macro2()
Macro2 Macro
Range("A6").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Feuil1!A1", TextToDisplay:="Feuil1"
Range("C16").Select
End Sub
Pouvez vous me dire quelles sont les modif à faire pour que le "feuil1!A1" et le "Feuil1" soit une référence à une cellule comme pour mon chercher remplacer???
Pour mes codes, ils sont issus de l'enregistrement des macros...et étant très novice je ne les comprends pas tous très bien
Merci !!
Emilie
Bonjour Emilie,
Un code qui affecte à la cellule Feuil1!A6 un lien vers une feuille et affiche son nom. C'est le même que le tien mais qui sera facilement adaptable des que tu auras précisé les choses.
Comme tu souhaites une feuille différente à chaque fois, cette dernière sera selon la valeur donnée à MaVariable. Tu ne précises pas comment Excel doit décider quelle feuille mettre en lien ?? Il ne lira pas dans tes pensées...
Cordialement
Jules
Option Explicit
Sub Macro2()
Dim MaVariable As Worksheet
Set MaVariable = Worksheets("Feuil3")
With Worksheets("Feuil1")
.Hyperlinks.Add Anchor:=.Cells(6, 1), _
Address:="", _
SubAddress:=MaVariable.Name & "!A1", _
TextToDisplay:=MaVariable.Name
End With
End SubOups c'est vrai! En fait comme pour le rechercher remplacer, le nom de la feuille cible du lien hypertexte est dans une cellule d'une feuille qui elle ne changera jamais (Cellule A3 de la feuille "Formulaire".)
Merci de votre aide!!
Emilie
Bonsoir Emilie,
Vous pouvez me tutoyer
La Macro écrit en A6 de la feuil1, le nom trouvé en cellule A3 de la feuille "Formulaire" et crée un lien vers une feuille portant ce nom.
Cordialement
Jules
Option Explicit
Sub Macro2()
Dim MaVariable$
MaVariable = Worksheets("Formulaire").Cells(3, 1)
With Worksheets("Feuil1")
.Hyperlinks.Add Anchor:=.Cells(6, 1), _
Address:="", _
SubAddress:=MaVariable & "!A1", _
TextToDisplay:=MaVariable
End With
End SubCordialement
Jules
Ca marche!!!
C'est vraiment sympa de mettre ses connaissances au service des débutants
Merci beaucoup !!
Emilie