Macro selection de toutes les feuilles d'un classeur

devils_dogg

XLDnaute Nouveau
[Réglé]Macro selection de toutes les feuilles d'un classeur

Bonjour à tous,

Voilà je suis débutant, et malgré de nombreuses recherches, je cherche une macro qui me permette de selectionner plusieurs feuilles d'un classeur pour remplacer un texte commun à chaque feuille.

Je m'explique, je créer des classeurs différents qui comportent plusieurs onglets en nombres différents à chaque fois. Ce que je souhaiterais c'est une macro qui me permette quelque soit le classeur de départ, de selectionner la totalité des onglets de ce classeur, et d'appliquer à chaque onglet le remplacement du texte commun à ces onglets. Le texte à supprimer étant le meme pour chaque onglet.

Pour le classeur 1, je peux avoir 10 onglets, pour le classeur 2 20 onglets. etc

Merci d'avance de votre aide.
 
Dernière édition:

devils_dogg

XLDnaute Nouveau
Re : Macro selection de toutes les feuilles d'un classeur

Une fois la manip effectuée, est possible de remodifier la cellule pour revenir à ça:

Avant modif la cellule ressemble à "Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot 106 1.0i (1994-1996)

Après la modif 106 1.0i (1994-1996) ce qui permet de renommer la feuille avec cette cellule,

est il possible de revenir en arrière pour avoir Fiches techniques > Peugeot > Peugeot 106 1.0i (1994-1996) dans la cellule après avoir renommé la feuille.

Sachant que 106 sera toujours le début de la cellule? je modifierai la macro pour chaque modèle. Pour la 106 j'ai fait ça
Code:
Sub remplaceraccueilPGT()
Dim w As Worksheet
For Each ws In Worksheets
    ws.Cells.Replace What:="Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot ", Replacement:="", LookAt:=xlPart, _
         MatchCase:=False
    Set c = ws.Cells.Find("106", , xlValues, xlPart, , , False)
    If Not c Is Nothing Then ws.Name = Right(c.Value, 31)
Next ws
End Sub

pour la 205 je changerai en conséquence

Je sais je suis chiant, c'est juste pour armoniser l'ensemble des fiches avec celles déjç faite à la main.

Encore merci à tous
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Macro selection de toutes les feuilles d'un classeur

Re

si j'ai bien compris :

Code:
Sub remplaceraccueilPGT()
Dim w As Worksheet, z As String
For Each ws In Worksheets
    z = "Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot 106"
    Set c = ws.Cells.Find(z, , xlValues, xlPart, , , False)
    If Not c Is Nothing Then ws.Name = Mid(c.Value, Len(z) - 2)
    c.Value = Mid(z, 23)
Next ws
End Sub

@+
 

devils_dogg

XLDnaute Nouveau
Re : Macro selection de toutes les feuilles d'un classeur

Tu as parfaitement compris, ça fonctionne, sauf que dans le retour en arrière je perds le modele de la 106

ce que J'ai au départ

Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot 106 1.0 (1992-1993)

Après la macro

Fiches techniques > Peugeot > Peugeot 106

j'aimerai retrouver le modele de la 106

Fiches techniques > Peugeot > Peugeot 106 1.0 (1992-1993)

En tout cas ce forum est vraiment excellent, vous etes rapides, et efficaces

Merci à tous
 

Pierrot93

XLDnaute Barbatruc
Re : Macro selection de toutes les feuilles d'un classeur

Re

aarf, oublié un bout :

Code:
Sub remplaceraccueilPGT()
Dim w As Worksheet, z As String
For Each ws In Worksheets
    z = "Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot 106"
    Set c = ws.Cells.Find(z, , xlValues, xlPart, , , False)
    If Not c Is Nothing Then ws.Name = Mid(c.Value, Len(z) - 2)
    c.Value = Mid(z, 23) [B]& Mid(c.Value, Len(z))[/B]
Next ws
End Sub

@+
 

devils_dogg

XLDnaute Nouveau
Re : Macro selection de toutes les feuilles d'un classeur

Merci Pierrot93,

J'obtient un message d'erreur

Variable objet ou variable de bloc with non defini

si je fais débogage il surligne cette partie de la macro

Code:
 c.Value = Mid(z, 23) & Mid(c.Value, Len(z))
 

Pierrot93

XLDnaute Barbatruc
Re : Macro selection de toutes les feuilles d'un classeur

Re

alors là comprends pas, chez moi cela fonctionne, tu as bien recopié le code intégralement, il ne manque pas la ligne "Next ws" ? tu n'es pas passé à la ligne après le "Then" de l'instruction "if" ?
 

Pierrot93

XLDnaute Barbatruc
Re : Macro selection de toutes les feuilles d'un classeur

Re

je crois avoir compris, comme j'avais testé sur une seul feuille et que la recherche renvoyait bien quelque chose, c'était bon, donc modifies comme suit :

Code:
Sub remplaceraccueilPGT()
Dim w As Worksheet, z As String
For Each ws In Worksheets
    z = "Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot 106"
    Set c = ws.Cells.Find(z, , xlValues, xlPart, , , False)
    If Not c Is Nothing Then
        ws.Name = Mid(c.Value, Len(z) - 2)
        c.Value = Mid(z, 23) & Mid(c.Value, Len(z))
    End If
Next ws
End Sub

@+
 

devils_dogg

XLDnaute Nouveau
Re : Macro selection de toutes les feuilles d'un classeur

Non c'est bon

ca fonctionne, je dois te dire un grand merci, merci de ta patience et de la rapidté de tes réponses.

Merci aussi aux autres participants.

J'ai juste un souci lors du retour sur le nom de la cellule, au lieu du 106 je me retrouve avec 1066
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Macro selection de toutes les feuilles d'un classeur

Re

Décidement...je ne partais pas de la bonne position d'un caractère.

Je pense que maintenant...testes et dis moi...

Code:
For Each ws In Worksheets
    z = "Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot 106"
    Set c = ws.Cells.Find(z, , xlValues, xlPart, , , False)
    If Not c Is Nothing Then
        ws.Name = Mid(c.Value, Len(z) - 2)
        c.Value = Mid(z, 23) & Mid(c.Value, Len(z) [B]+ 1[/B])
    End If
Next ws
End Sub

bonne soirée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Macro selection de toutes les feuilles d'un classeur

Bonjour Devils

une dernière modification, pour t'affranchir de modifier dans la macro le modèle (106) :

Code:
Sub remplaceraccueilPGT()
Dim w As Worksheet, z As String
For Each ws In Worksheets
    z = "Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot"
    Set c = ws.Cells.Find(z, , xlValues, xlPart, , , False)
    If Not c Is Nothing Then
        ws.Name = Mid(c.Value, Len(z) + 2)
        c.Value = Mid(z, 23) & Mid(c.Value, Len(z) + 1)
    End If
Next ws
End Sub

bonne journée
@+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 210
Messages
2 107 298
Membres
109 796
dernier inscrit
aelgar