Exporter plages nommées multi onglets

jamespatagueul

XLDnaute Occasionnel
Bonjour a tous,
je cherche en vba a exporter dans un nouveau classeur des plages nommées présente dans 10 onglets (exemple minimaliste).
Je cherche donc a exporter, l'ensemble des pages 1 dans un news classeur, l'ensemble des pages 2 dans un new classeur, mais dans autant d'onglet que celui source.
je passe par un useform pour l'export.
J’espère avoir été claire.

Merci de votre aide
 

Fichiers joints

Dernière édition:

vgendron

XLDnaute Barbatruc
Bonjour
J’espère avoir été claire.
désolé.. pas assez en fait..

tes onglets.. ce sont les semaines 1 à 52 d'une année je présume
Je cherche donc a exporter, l'ensemble des pages 1 dans un news classeur
les pages ou les pLages.. ??
j'ai vu des pLages "Menu1" dans chaque onglet de semaine..
est ce que le besoin est:
dans un NOUVEAU classeur, copier les plages MENU1 de chaque onglet? (et un onglet Par Menu1)

dans ton fichier exemple: ca donnerait
un nouveau fichier avec deux onglets: Semaine46 conteannt la plage Menu1 et un second onglet "Semaine 47" contenant la plage Menu1 (celle de l'autre semaine..)
?
 

vgendron

XLDnaute Barbatruc
un bout de code qui va peut etre te donner une idée??
VB:
Sub ListeZones()
With ActiveWorkbook
    For Each nom In .Names
        Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = nom.Name
    Next nom
End With
End Sub
 

jamespatagueul

XLDnaute Occasionnel
upload_2017-12-11_12-2-38.png

Bonjour vgendron,
je parle de ce type de "page".
Sur le fichier exemple, les plage ne corresponde pas mais j'adapterai le code.
""
j'ai vu des pLages "Menu1" dans chaque onglet de semaine..
est ce que le besoin est:
dans un NOUVEAU classeur, copier les plages MENU1 de chaque onglet? (et un onglet Par Menu1)

dans ton fichier exemple: ca donnerait
un nouveau fichier avec deux onglets: Semaine46 conteannt la plage Menu1 et un second onglet "Semaine 47" contenant la plage Menu1 (celle de l'autre semaine..) ""

C'est ça, avec en plus un fichier avec la 2eme "page" dans un autre classeur.

merci
 

vgendron

XLDnaute Barbatruc
me revoici avec une proposition (que j'ai du refaire deux fois. car comme un c... j'ai fermé sans sauvegarder....)

bref.. va voir le code et tous les commentaires associés...
 

Fichiers joints

jamespatagueul

XLDnaute Occasionnel
Merci, c'est super
comment appeller le classeur "des pages 1" azerty
et le classeur "des pages 2" qsdfgh par exemple
et garder la mise en forme.

Merci
 

vgendron

XLDnaute Barbatruc
c'est cette ligne qu'il faut modifier
VB:
WbFinal.SaveAs FileFormat:=52, Filename:=repertoiremois & "Page" & i 'on sauvegarde le fichier final
à remplacer par.. par exemple
VB:
WbFinal.SaveAs FileFormat:=52, Filename:=repertoiremois & NOMSAUVEGARDE 'on sauvegarde le fichier final
'NOMSAUVEGARDE =variable qui contient le nom du classeur à sauvegarder
'attention. cette variable doit etre modifiée à chaque fois. sinon tu vas te retrouver un message; ce classeur existe déjà, voulez vous;. bla bla bla

à tout hasard.. aurais tu dans l'idée d'ecrire une liste de noms à utiliser dans la feuille 1 ?
exemple
dans la feuille 1 colonne j: tu écris les noms des classeurs - tu en fais une zone nommée
et dans le code. au moment d'enregistrer le classeur. tu récupères le nom dans la liste

voir PJ:
1) de J1 à J5: la liste des noms de classeur
2) ouvrir gestionnaire de nom pour voir "Liste_Noms_Classeur"
3) modifier le code pour mettre cette ligne
VB:
WbFinal.SaveAs FileFormat:=52, Filename:=repertoiremois & Range("Liste_Noms_Classeurs").Item(i)
voir PJ
 

Fichiers joints

Dernière édition:

jamespatagueul

XLDnaute Occasionnel
RE

magic

'
With Sheets("Semaine 46") 'comment savoir le nombre de pages qu'il y aura à exporter
'je suppose que TOUTES les semaines ont le meme nombre de pages --> suffit de se placer sur une "au hasard"
NbPages = .HPageBreaks.Count + 1 'nb de page=nb de sauts de page +1
End With

et si le feuil semaine 46 n'existe pas, sachant que les nom des onglet sont "semaine_xxxxx". Comment modifier ton code qui fonctionne nickel.
 

vgendron

XLDnaute Barbatruc
il te suffit de mettre une semaine dont tu es sur qu'elle existe...
c'est possible?

sinon. remplace ce bout de code
VB:
With Sheets("Semaine 46") 'comment savoir le nombre de pages qu'il y aura à exporter
'je suppose que TOUTES les semaines ont le meme nombre de pages --> suffit de se placer sur une "au hasard"
    NbPages = .HPageBreaks.Count + 1 'nb de page=nb de sauts de page +1
End With
par celui ci
VB:
For Each ws In Sheets
    If ws.Name Like "Semaine*" Then
        NbPages = ws.HPageBreaks.Count + 1 'nb de page=nb de sauts de page +1
        Exit For
    End If
Next ws
 

jamespatagueul

XLDnaute Occasionnel
Re

j arrêtte de réclamer (peu être) après.
Comment coller les valeurs (car la 2eme page est = a des cellules de la 1) et la mise en forme(largeur colonne hauteur ligne ...)

Merci
 

jamespatagueul

XLDnaute Occasionnel
Bonjour,
j'ai testé plusieurs pastespeciale sans succès (valeur, format, all) mais les formats ne corresponde pas à l'original.
Si quelqu'un a une solution.
Merci
 
Haut Bas