Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

macro : modifier une expression dans tous les onglets

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

chris427

XLDnaute Junior
Bonjour,

Je cherche à faire une modification de formule dans tous les onglets d'un fichier.

En fait, j'ai créé une macro mais elle fait seulement semblant de fonctionner : elle ne remplace pas "\Données 2008" en "\Données 2009".
Pour info, "\Données 2008" fait partie d'une formule (chemin d'accès pour liaisons).

Sub Macro3()
'
' Macro3 Macro
'

'
Sheets("SAISIE DE DONNÉE").Select
Range("C1").Select
ActiveCell.FormulaR1C1 = ""
Range("C1").Select
ActiveCell.FormulaR1C1 = "2009"
Range("C2").Select
For Each feuille In Worksheets
Selection.Replace What:="\Données 2008", Replacement:= _
"\Données 2009", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase _
:=False, SearchFormat:=False, ReplaceFormat:=False
Next feuille
ActiveWorkbook.SaveAs
ActiveWorkbook.Close

End Sub



Merci par avance pour votre aide.

Chris
 
Re : macro : modifier une expression dans tous les onglets

Bonsoir Chris427 🙂,
Code:
Dim Cellule As Range, Feuille As Worksheet
Sheets("SAISIE DE DONNÉE").Range("C1").FormulaR1C1 = "2009"
For Each Feuille In ThisWorkbook
For Each Cellule In Feuille
Cellule = Cellule.Replace("\Données 2008", "\Données 2009")
Next
Next
devrait fonctionner.
Bonne soirée 😎
 
Re : macro : modifier une expression dans tous les onglets

Bonsoir JNP

J'ai lancé la macro et j'ai eu
"erreur d'exécution 438
Propriété ou méthode non gérée par cet objet"

En cliquant sur "Débogage"
Est- surlignée en jaune la ligne suivante :

"For Each Feuille In ThisWorkbook"


Il y a un truc que je n'ai pas saisi ?
pour info, je suis sur Excel 2007, est-ce que ça change qqchose dans les macros ?

Merci encore,

Chris
 
Re : macro : modifier une expression dans tous les onglets

Bonsoir,
Code:
Dim Cellule As Range, Feuille As Worksheet
Sheets("SAISIE DE DONNÉE").Range("C1").FormulaR1C1 = "2009"
For Each Feuille In ThisWorkbook.Sheets
    Feuille.Cells.Replace "\Données 2008", "\Données 2009"
Next
A+
kjin
 
Re : macro : modifier une expression dans tous les onglets

Hello Kjin,

Décidément,

Là j'ai
"erreur de compilation : déclaration existante dans la portée en cours".

Est-ce que vous savez ce que cela signifie ?

Merci 1000 fois !!

Chris
 
Re : macro : modifier une expression dans tous les onglets

Bonsoir,
A noter que s'il s'agit de lien vers un classeur dans des formules, il est plus simple d'utiliser ChangeLink
Code:
ActiveWorkbook.ChangeLink "Ancien chemin", _
    "Nouveau chemin", xlExcelLinks
A+
kjin
 
Re : macro : modifier une expression dans tous les onglets

Effectivement, désolée, la première partie était en double.

Par contre, j'ai donc ça comme macro finale :

Dim Cellule As Range, Feuille As Worksheet
Sheets("SAISIE DE DONNÉE").Range("C1").FormulaR1C1 = "2009"
For Each Feuille In ThisWorkbook.Sheets
Feuille.Cells.Replace "\Données 2008", "\Données 2009"
Next

et ça ne marche pas mieux, ça ne remplace pas l'année 2008 par 2009.

Aurais-je oublié quelque chose ??

Merci encore !!

Chris
 
Re : macro : modifier une expression dans tous les onglets

Allo !

Je viens d'essayer Changelink
Ca n'a pas marché mais je crois que là c'est parce que je ne sais pas comment intégrer Changelink dans la macro.
J'ai essayé ça et d'autres variante, sans succès :

Dim Cellule As Range, Feuille As Worksheet
Sheets("SAISIE DE DONNÉE").Range("C1").FormulaR1C1 = "2009"
For Each Feuille In ThisWorkbook.Sheets
ActiveWorkbook.ChangeLink "C:\Données 2008", _
"C:\Données 2009", xlExcelLinks
Next

Merci encore pour votre patience ... 🙂

Chris
 
Re : macro : modifier une expression dans tous les onglets

Re 🙂,
Tu n'as plus besoin de décrire les feuilles
Dim Cellule As Range, Feuille As Worksheet
Sheets("SAISIE DE DONNÉE").Range("C1").FormulaR1C1 = "2009"
For Each Feuille In ThisWorkbook.Sheets
ActiveWorkbook.ChangeLink "C:\Données 2008", _
"C:\Données 2009", xlExcelLinks
Next
ce qui est en rouge est à supprimer.
Bonne journée 😎
 
Re : macro : modifier une expression dans tous les onglets

Allo JNP,

Hélas :
Erreur d'exécution 1004
La méthode 'ChangeLink' de l'objet '_Workbook' a échoué

Voici ce qui reste de la macro :

Sheets("SAISIE DE DONNÉE").Range("C1").FormulaR1C1 = "2009"
ActiveWorkbook.ChangeLink "\Données 2008\", _
"\Données 2009\", xlExcelLinks


Merci encore pour votre aide,

Chris
 
Re : macro : modifier une expression dans tous les onglets

Bonsoir,
Ce n'est pas tout à fait ce que j'ai écrit plus haut
Le chemin doit être complet, ex
Code:
ActiveWorkbook.ChangeLink "C:\Toto\Dossier 2008\Toto.xls", _
    "C:\Toto\Dossier 2009\Toto.xls", xlExcelLinks
Peux tu faire passer un bout de fichier
A+
kjin
 
Re : macro : modifier une expression dans tous les onglets

En fait, j'ai 70 fichiers, tous intereliés entre eux pour faire des comparaisons.
Et le problème avec le chemin d'accès complet, c'est qu'il faut que je remplace 304 fois "C:\Données 2008" par "C:\Données 2009"
Après vérification, le fichier xls appelé est apparemment toujours le même mais les données ne se trouvent pas toujours dans le même onglet.
Est-ce que ChangeLink ne fonctionne qu'avec les chemins d'accès complets ?

Exemple de formules où il faut que je change 2008 par 2009 :

C:\Données 2008\[secteurs.xls]Prix'!B7
C:\Données 2008\[secteurs.xls]Prix'!E12

C:\Données 2008\[secteurs.xls]Qualité'!D6
C:\Données 2008\[secteurs.xls]Région - Province'!$I$13

Merci !!!

Chris
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…