XL 2016 VBA decomposer fichier en plusieurs fichiers avec critères et sans liaison

ZZ59264

XLDnaute Occasionnel
Bonjour à tous,

Je viens demandé de l'aide pour un projet assez conséquent, je joins donc un fichier à ma demande avec les explications,

Je suis prêt à écouter toute proposition (modifications,idées ...) pour aboutir au projet,

Merci d'avance pour votre aide,
 

Pièces jointes

  • TEST FORUM.xlsx
    24.7 KB · Affichages: 9
Solution
Bonjour ZZ59264,
Je voudrais qu'a la fin de la macro, la procédure lance une sauvegarde en PDF de chaque fichier Excel créer?,
Ça se passera ici, fichier (2) :
VB:
        Sheets(1).Select '1ère feuille
        ActiveWorkbook.SaveAs chemin & c(1, 2), 51 'enregistre avec l'extension .xlsx
        For i = 1 To Sheets.Count
            With Sheets(i)
                .Select False 'sélection multiple
                .PageSetup.Zoom = False
                .PageSetup.FitToPagesWide = 1
            End With
        Next i
        ActiveSheet.ExportAsFixedFormat xlTypePDF, chemin & c(1, 2) 'fichier PDF
        ActiveWorkbook.Close False 'ferme le document
A+

ZZ59264

XLDnaute Occasionnel
Bonsoir Job75,

J'aurai besoin encore d'un petit coup de main sur le fichier, en effet je souhaiterai effacer les codes VBA indiquées sur les feuilles dans le fichier nouvellement créer,

Je rejoint un fichier avec l'onglet G sur lequel il y a un petit code d'actualisation, je souhaiterai qu'il reste sur le fichier source mais pas sur le fichier créer, (classe3)

Je sais bien que j'en demande encore, donc je vous remercie d'avance pour votre aide,

Cordialement,
 

Pièces jointes

  • Copie de TEST FORUM(4).xlsm
    61.5 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonsoir ZZ59264,

Les fichiers créés ne contiennent pas de macro puisque ce sont des fichiers .xlsx.

Par contre il faut désactiver les évènements lorsqu'on copie les feuilles sources, voyez ce fichier (7).

Et dans la feuille G il est plus simple d'utiliser :
VB:
Private Sub Worksheet_Activate()
ThisWorkbook.RefreshAll
End Sub
Bonne nuit.
 

Pièces jointes

  • TEST FORUM(7).xlsm
    72.3 KB · Affichages: 4

ZZ59264

XLDnaute Occasionnel
Bonsoir ZZ59264,

Les fichiers créés ne contiennent pas de macro puisque ce sont des fichiers .xlsx.

Par contre il faut désactiver les évènements lorsqu'on copie les feuilles sources, voyez ce fichier (7).

Et dans la feuille G il est plus simple d'utiliser :
VB:
Private Sub Worksheet_Activate()
ThisWorkbook.RefreshAll
End Sub
Bonne nuit.
Bonsoir Job75,

Merci à vous, effectivement il s'agit de procédures événementielles, mais si vous n'auriez pas ajouter les codes de désactivations des évènements et de réactivation au bon endroit la procédure s'arrêter et un message d'erreur apparaissait,

Merci beaucoup pour votre aide,

Bonne soirée à vous,

Cordialement,
 

ZZ59264

XLDnaute Occasionnel
Bonjour Job75,

J'aurai encore besoin de ton aide, je m'arrache les cheveux depuis ce matin :(

J'ai essayé de mettre ton code sur mon fichier de travail, mais il bloque lors de la suppression des noms,

Et je sèche, je ne sais pas pourquoi il mets un code erreur sur la ligne Delete, ne serait ce pas du aux requêtes?,

Je te joins un extrait de mon fichier de travail, sensiblement identique au précédent, mais avec les noms qui composent celui ci, pour voir ce qui pourrait bloquer,

Je te remercie par avance,

Cordialement,
 

Pièces jointes

  • FORUM.xlsm
    284.8 KB · Affichages: 4

ZZ59264

XLDnaute Occasionnel
Bonsoir ZZ59264,

Chez moi tout se passe bien, il n'y a pas d'erreur.

A+
'est dingue je remets le fichier sur mon répertoire et cela fonctionne,

Mais sur mon fichier original il me met cet écran :
1639683987730.png

1639683987730.png
 

ZZ59264

XLDnaute Occasionnel
Bonsoir,

Merci pour votre retour, et comment je pourrais voir quel est le nom qui est incorrect?,

Si je vous joins la liste qu'il y a dans ma gestion des noms, vous le saurez?,

Sinon ou puis je ajouter On Error Resume Next?

merci d'avance,

Cordialement

1639687156394.png
 

ZZ59264

XLDnaute Occasionnel
Bonsoir Job75,

j'ai placé On Error resume Next avant la boucle de suppression de noms, et ça fonctionne bien,

Je me demande quand même pourquoi il bloque sur un nom??,

Il n'y a pas de "risque" ou d’inconvénient à mettre ce code qui ignore les erreurs?,

Je peux mettre On Error GoTo 0 en dessous de Next Nom ?

Merci d'avance,

Cordialement,
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour ZZ59264, le forum,

Pour que ceux qui n'ont pas de lecteur P puissent tester j'ai remplacé dans le fichier joint :
VB:
s =Split(P(1, 4), "\")
par :
VB:
s = Split(ThisWorkbook.Path & "\CLASSE 2", "\")
A+
 

Pièces jointes

  • FORUM(1).xlsm
    284.9 KB · Affichages: 5

ZZ59264

XLDnaute Occasionnel
Bonjour ZZ59264, le forum,

Pour que ceux qui n'ont pas de lecteur P puissent tester j'ai remplacé dans le fichier joint :
VB:
s =Split(P(1, 4), "\")
par :
VB:
s = Split(ThisWorkbook.Path & "\CLASSE 2", "\")
A+
Bonsoir Job75,

Merci beaucoup pour cet apport supplémentaire ;)

Je pense savoir pourquoi mon gestionnaire de nom bloquait,

J'ai un nom qui s'appelle ANNEE et il faisait référence à la cellule ='EN TETE'!$AL$2

et un autre nom ANNEE_CLOTURE dont le nom se formait à la création : je sélectionnais la place de cellule ='EN TETE'!$AL$1:$AL$2 que je mettrais sous forme de requête par le suite, et la il me définissait dans le gestionnaire des noms la plage ='EN TETE'!$AL$2:$AL$2

Et la je pense que l'exécution de la procédure VBA bloque sur ce nom ,

Je vais creuser pour voir si je peux corriger ça,

Cordialement,
 

Discussions similaires

Réponses
4
Affichages
386

Membres actuellement en ligne

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson