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
Je pense plutôt que vous avez ajouté des segments dans certaines feuilles copiées contenant des TCD.

Ces segments sont associés à des noms définis dans le classeur qui ne peuvent pas être supprimés.
Je cherche mais je ne trouve pas, ca me rend dingue lol

Non la j'ai pris un fichier test sans segment , tout fonctionne je rajoute un onglet de mon fichier travail, et la ça plante, je supprime cet onglet, ça ne fonctionne pas de nouveau, je ferme et enregistre ce fichier test et en le réouvrant ca fonctionne !!!!

C'est à n'y rien comprendre !!!
 

ZZ59264

XLDnaute Occasionnel
Remplacez On Error Resume Next par On Error GoTo 1 et ajoutez 2 lignes en fin de macro :
VB:
Next c
Exit Sub
1 MsgBox "Feuille : " & ActiveSheet.Name & vbLf & "Nom : " & nom.Name
End Sub
Quel est alors le message qui s'affiche ?
Bonsoir,

Une boite de dialogue s'ouvre il est noté (mais je n'ai pas de Nom _xlfn.IFERROR)

1639769980649.png
 

ZZ59264

XLDnaute Occasionnel
Bonsoir Job75,

Il y a un nom qui se nomme Suivi_A qui correspond a un tableau qui est utilisé dans une requête sur Power query, et le resultat de cette requete apprait sur la feuille Suivi Amort,

Le nom Suivi_A est grisé dans le gestionnaire de noms, est ce pour cela? le fait de passer par des requêtes poserai problème alors?,

Si il n'y a pas d’autres solutions, j'utliserai le code On Error Resume Next,

Merci d'avance pour votre avis,

Cordialement,
 

ZZ59264

XLDnaute Occasionnel
Bonsoir,

Merci pour votre retour, et déjà avoir une solution avec On Error Resume Next, c'est déjà un bon moyen afin d'arriver à mes fins, au moins je sais grâce à vous pourquoi le code bloquait,

J'ai encore deux questions :

- Sur mon fichier de travail original certains chiffres sont sous une forme personnalisée (€# ##0,00_);(€# ##0,00)), comment les mettre sous forme décimal en euros dans le code VBA,

- Sur la classe 4 de mon fichier , j'ai la macro qui s'arrête et me dit "Erreur d'execution 9 , l'indice n'appartient pas à la selection", en selectionnant déboguage, il met en surbrillance cette ligne :

Set w = ThisWorkbook.Sheets(CStr(c))

Auriez vous un début de piste pour que je trouve ce qu'il cloche?,

Merci encore pour tout,

Bonne soirée à vous,

Cordialement,
 
Dernière édition:

job75

XLDnaute Barbatruc
Pour ce qui est du post #33, chaque fois qu'on utilise la fonction SIERREUR Excel crée le nom _xlfn.IFERROR.

Et il y a d'autres fonctions comme ça : NB.SI.ENS, SOMME.SI.ENS...

C'est comme ça, parce que ces fonctions n'existent pas avant Excel 2007.

Les noms sont masqués et ne peuvent pas être supprimés.
 

ZZ59264

XLDnaute Occasionnel
J'ai trouvé pour ;

- Sur la classe 4 de mon fichier , j'ai la macro qui s'arrête et me dit "Erreur d'execution 9 , l'indice n'appartient pas à la selection", en selectionnant déboguage, il met en surbrillance cette ligne :

Set w = ThisWorkbook.Sheets(CStr(c))

En fait j'ai un onglet qui n'était pas nommé comme sur le tableau, je pense que c'est du à ça ;)
 

ZZ59264

XLDnaute Occasionnel
Bonjour Job75,

Je me posais une questions concernant la procédure de suppression des noms,

Sur mon fichier de travail j'ai au max 4 noms (ANNEE, ETAB, IC , INT) à supprimer, mais ils peuvent ne pas apparaitre sur des feuilles à importer,

Ma réflexion est de me dire ne serait il pas plus judicieux dans la procédure VBA de lui indiquer de supprimer uniquement ces 4 noms s'ils sont présents?,

Quel serait votre avis sur ce point?,

PS : le code VBA fournit fonctionne bien, je vous remercie pour votre aide très précieuse,

Pourriez vous me dire ce que je dois indiquer afin de conserver le format des chiffres conservées (en effet sur mon fichier d'origine j'ai des chiffres définis sous la catégorie Comptablité mais une fois importé ils sont sous une forme personnalisée (€# ##0,00_);(€# ##0,00)),

Merci d'avance,

Cordialement,
 

job75

XLDnaute Barbatruc
Bonjour ZZ59264,
Sur mon fichier de travail j'ai au max 4 noms (ANNEE, ETAB, IC , INT) à supprimer, mais ils peuvent ne pas apparaitre sur des feuilles à importer,
Si vous êtes sûr de votre coup plus besoin de On Error Resume Next :
VB:
    If c(1, 2) <> c(2, 2) Then 'compare avec le nom de fichier au-dessous
        For Each nom In ActiveWorkbook.Names
           If IsNumeric(Application.Match(nom.Name, Array("ANNEE", "ETAB", "IC", "INT"), 0)) Then nom.Delete
        Next nom
        Sheets(1).Select '1ère feuille
        ActiveWorkbook.SaveAs chemin & c(1, 2), 51 'enregistre avec l'extension .xlsx
        ActiveWorkbook.Close False 'ferme le document
    End If
A+
 

ZZ59264

XLDnaute Occasionnel
Bonjour ZZ59264,

Si vous êtes sûr de votre coup plus besoin de On Error Resume Next :
VB:
    If c(1, 2) <> c(2, 2) Then 'compare avec le nom de fichier au-dessous
        For Each nom In ActiveWorkbook.Names
           If IsNumeric(Application.Match(nom.Name, Array("ANNEE", "ETAB", "IC", "INT"), 0)) Then nom.Delete
        Next nom
        Sheets(1).Select '1ère feuille
        ActiveWorkbook.SaveAs chemin & c(1, 2), 51 'enregistre avec l'extension .xlsx
        ActiveWorkbook.Close False 'ferme le document
    End If
A+
Merci beaucoup je vais tester,

Par contre avez vous une idée sur la transformation de mes chiffres sous forme comptablité qui passent sous une forme personnalisée ?

Merci d'avance,

Bonne journée à vous
 

ZZ59264

XLDnaute Occasionnel
Bonjour Job75,

Je ressors le fil de ce post car j'aimerai ajouter une chose au code VBA que vous m'aviez proposé,

Je voudrais qu'a la fin de la macro, la procédure lance une sauvegarde en PDF de chaque fichier Excel créer?,

Est ce possible?,

Merci d'avance,

Cordialement,
 

Discussions similaires

Réponses
4
Affichages
386

Statistiques des forums

Discussions
314 450
Messages
2 109 730
Membres
110 553
dernier inscrit
loic55