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

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:

jeanpierre

Nous a quitté
Repose en paix
Re : Macro selection de toutes les feuilles d'un classeur

Bonjour devils dogg, re tous,

Ben, sans macro, tu selectionnes ton premier onglet, et la touche MAJ appuyée, tu selectionnes le dernier, tu modifies ton texte et tu dégroupes pareil en cliquant sur un autre onglet.

C'est plus simple.

Si tu veux absolument une macro, tu fais Outils/Macro/Nouvelle macro, tu pratiques comme je viens de le dire, et arrêter l'enregistrement... Alt F11 Affichage/Explorateur de projet, tu selectionnes ton classeur et dans module tu as le texte.

Reste à créer un bouton sur ta feuille auquel tu attribues ta macro.

A te lire.

Jean-Pierre
 
Dernière édition:

devils_dogg

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

Merci de ta réponse jeanpierre,

Effectivement je préfère une macro, j'ai fait cette manip, d'enregistrer etc, mais mon souci c'est que pour le classeur 1 je vais avoir 10 onglets, pour un autre classeur 20, la macro ne se fera que sur les 10 premier onglets non?

Et pour la modif du texte, c'est une partie de texte d'une meme cellule que je veux changer du style, dans une seule cellule A1 j'ai ce genre de texte " Nom de mon site > Fiches techniques > Peugeot > Peugeot 106 1.0 (1992-1993)"
Dans chaque onglet je voudrais que "nom de mon site" soit remplacer par un blanc. Et ce dans chaque onglet.

Vu que dans l'exemple il s'agit d'une fiche technique pour 106, chaque onglet correspond à un modele de 106, si je fais le meme classeur pour la 205 j'aurais 5 fois plus d'onglets car 5 fois plus de déclinaison.

Moi ce que je souhaiterais c'est que quelque soit le nombre d'onglet ils soit tous sélectionnés et que la partie du texte " nom de mon site" soit effacé.

Merci de ton aide
 

matthieu33

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

Bonjour devils_dogg, jeanpierre et le forum,

Je te fournis une macro.
Dans l'exemple ci-dessous, il s'agit de remplacer "Ancien texte" par "Nouveau texte".
Après au niveau des variables strAncien et strNouveau, tu mets ce que tu veux.

Code:
Sub RemplacerPar()
    Dim intWS As Integer
    Dim strAncien As String
    Dim strNouveau As String
    
    strAncien = "Ancien texte"
    strNouveau = "Nouveau texte"
    
    For intWS = 1 To ThisWorkbook.Worksheets.Count
        Worksheets(intWS).Activate
        Cells.Replace What:=strAncien, Replacement:=strNouveau, LookAt:=xlPart, SearchOrder:=xlByRows, _
            MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Next intWS
End Sub

@+
 

devils_dogg

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

Merci matthieu,

Ta macro fonctionne correctement sur la première feuille mais pas sur les suivantes, dans les feuilles suivantes le texte à remplacer est toujours présent

Voulez vous un classeur pour exemple?
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : Macro selection de toutes les feuilles d'un classeur

Re,

Récupérer une partie de texte dans une cellule (d'autant que, puisqu'il s'agit de nom de site, sa longueur sera très varaible) , je ne sais pas faire en VBA, jamais eu le besoin donc.

Attendons donc d'autres idées.

Je vais regarder, mais rien n'est moins sûr.
 

Pierrot93

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

Bonjour Devils, Jean-Pierre, Mathieu

une autre solution :

Code:
Sub test()
Dim w As Worksheet
For Each ws In Worksheets
    ws.Cells.Replace What:="nom site", Replacement:=" ", LookAt:=xlWhole, _
         MatchCase:=False
Next ws
End Sub

sinon essaye de remplacer "Activate" par "Select", mais il est rarement utile de selectionner en vba.

bon après midi
@+
 

devils_dogg

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

re,

le nom du site ne change pas, il s'agit toujours de la meme expression, par exemple si je prends concretement le problème, la cellule contient cette valeur

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

Je voudrais enlever "Accueil PGT Concept > " et le remplacer par rien du tout.

Et la macro c'est pour éviter de faire la modif sur chaque feuille.

Si c'était dans deux cellules différentes pas de souci mais comme le texte n'est que dans une seul cellule...

Merci
 

devils_dogg

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

Bonjour pierrot,

Et bien ça ne fonctionne toujours pas, merci à tous de prendre le temps de m'aider.

J'ai tester les deux macros, mais la seule feuille dont le nom du site est remplacé dans la cellule est la première les 10 feuilles suivante ne sont pas modifiées.
 

Pierrot93

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

Re

essaye en modifiant "xlWhole" par "XlPart" :

Code:
Sub test()
Dim w As Worksheet
For Each ws In Worksheets
    ws.Cells.Replace What:="nom site", Replacement:=" ", LookAt:=[B]Xlpart[/B], _
         MatchCase:=False
Next ws
End Sub
 

devils_dogg

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

Impeccable, ça fonctionne

Merci beaucoup,

Du coup je vais abuser de votre gentillesse et vous demander également si il est possible de renommer un onglet depuis le nom de modèle du véhicule situé dans cette meme cellule?

Sachant qu'il s'agit d'une partie de texte et non de la cellule entière?

En gros

Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot 106 1.0 (1992-1993) uniquement reprendre cette partie, qui est différente à chaque fois car le modèle est différent.

Quitte meme à supprimer ce qu'il y a avant Accueil PGT Concept > Fiches techniques > Peugeot > et récupérer le reste pour remplacer le nom de l'onglet.
 

Pierrot93

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

Re

regarde le code ci dessous, devrait fonctionner dès l'instant ou ce sont toujours les 19 derniers caractères à prendre en considération, et que ces mêmes caractères soient valides dans un nom de feuille :


Code:
Sub test()
Dim w As Worksheet, c As Range
For Each ws In Worksheets
    Set c = ws.Cells.Find("nom site", , xlValues, xlPart, , , False)
    If Not c Is Nothing Then ws.Name = Right(c.Value, 3)
    ws.Cells.Replace What:="nom site", Replacement:=" ", LookAt:=xlPart, _
         MatchCase:=False
Next ws
End Sub


@+
 

devils_dogg

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

pour combiner les 2 macros, celle qui remplace le texte qui ne m'interesse pas et celle qui renomme les onglets j'ai du mal m'y prendre peux tu me donner l'exemple?

En tout cas merci je n'y serais jamais arrivé seul
 

Pierrot93

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

Re

comprends pas trop, les 2 macros sont dans le dernier code que je t'ai donné, attention remplacer le 3 par 19 :

Code:
'cette ligne recherche  "nom site" dans la feuille
Set c = ws.Cells.Find("nom site", , xlValues, xlPart, , , False)
'si trouvé renomme la feuille par les 19 derniers caracères de la cellule ou se
'trouvait la chaine de caractère recherchée 
    If Not c Is Nothing Then ws.Name = Right(c.Value, [B]19[/B])
'ensuite 1er code donné qui remplacait le nom
    ws.Cells.Replace What:="nom site", Replacement:=" ", LookAt:=xlPart, _
         MatchCase:=False

@+
 

devils_dogg

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

excuse moi je me suis emmelé tout seul, je viens de tester ça fonctionne, en revanche je pense que ça fonctionne à l'envers,

Je voudrais supprimer en premier le texte qui ne m'interesse pas, exemple dans Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot 106 1.0 (1992-1993)

supprimer d'abord Accueil PGT Concept > Fiches techniques > Peugeot > Peugeot pour qu'il ne reste que 106 1.0 (1992-1993)
et ensuite renommer avec.

Hors la j'ai l'impression qu'il renomme d'abord avec les 19 dernières valeurs et supprime après?

J'ai inversé l'ordre et tout est nickel

Merci à tous pour votre contribution et votre aide
 
Dernière édition:

Discussions similaires

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