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
 

Pièces jointes

  • Classeur1.xlsm
    34.2 KB · Affichages: 20
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..)
?
 

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
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
 

Pièces jointes

  • James.xlsm
    40.3 KB · Affichages: 19
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
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 892
Membres
101 831
dernier inscrit
gillec