Macro pour enregistrer selon plusieurs critères

Fermé
tacounet Messages postés 28 Date d'inscription vendredi 23 mars 2018 Statut Membre Dernière intervention 22 octobre 2022 - Modifié le 27 juil. 2021 à 14:20
tacounet Messages postés 28 Date d'inscription vendredi 23 mars 2018 Statut Membre Dernière intervention 22 octobre 2022 - 29 juil. 2021 à 18:25
Bonjour,
Je cherche à créer une macro (je suis proche du niveau 0 de ce côté là) pour:

-Enregistrer mon fichier excel selon la valeur de la cellule H4 (cellule liée à une liste de choix de laquelle découlent, via formules, tout un tas de valeurs dans ma feuille excel),
-TOUT EN n'enregistrant en format .xlsx QUE les valeurs qui apparaissent dans mes différentes cellules, en laissant mon fichier .xlsm intact, et prêt à resservir avec une autre valeur dans H4.

En parcourant différent forum (dont celui-ci), j'ai déjà réussi à créer des macros pour insérer des images selon la valeur d'une cellule, effacer d'un coup toutes mes images, et d'autres choses qui me sont bien utile au boulot.

J'ai surtout appris qu'avec Excel, rien ne semblait impossible.

Si en plus, il n'était possible d'enregistrer sous un nouveau fichier "que" la partie de la feuille délimitée par une zone d'impression (la finalité est d'imprimer une fiche de renseignements pour un classeur papier ou un Pdf), ça serait réellement le top...


Je compte sincèrement sur votre aide.
Merci d'avance


Configuration: Windows / Chrome 92.0.4515.107
A voir également:

3 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
Modifié le 27 juil. 2021 à 14:54
Bonjour,

Faire Alt F11 pour accéder à l'éditeur.

Insérer un module et mettre ce code pour la feuille entière:

Option Explicit
Sub save()
Dim chemin_dossier As String
chemin_dossier = ThisWorkbook.Path ' adapter chemin
If Range("H4") = "" Then Exit Sub
ThisWorkbook.Sheets("Feuil1").Copy 'adapter nom feuille
ActiveWorkbook.SaveAs Filename:=chemin_dossier & "\" & Range("H4").Value & ".xlsx"
ActiveWorkbook.Close
MsgBox "Votre fichier " & Range("H4").Value & " est créé", vbInformation, "Création fichier"
End Sub


et pour une plage de cellule:

Sub enreg()
Dim LePath As String, LeNom As String
LePath = ThisWorkbook.Path & "\" 'adapter chemin
LeNom = Range("H4").Value & ".xlsx"
With Sheets("Feuil1") 'adapter nom feuille
    Sheets.Add
    .Range("A1:E12").Copy Range("A1") 'adapter plage cellule
    ActiveSheet.Move
    With ActiveWorkbook
        .SaveAs LePath & LeNom
        .Close False
    End With
End With
MsgBox "Votre fichier " & Range("H4").Value & " est créé", vbInformation, "Création fichier"
End Sub




0
tacounet Messages postés 28 Date d'inscription vendredi 23 mars 2018 Statut Membre Dernière intervention 22 octobre 2022
Modifié le 27 juil. 2021 à 16:28
Bonjour Pivert,

Merci bcp pour la rapidité de la réponse
j'ai directement essayé la méthode avec les plages de cellule, et, quelques petits soucis.
Tout d'abord, j'ai une erreur d'exécution 1004, fichier inaccessible.

Je pense avoir fait le tour des vérifications
Mon dossier de destination existe, il n'est pas en lecture seule, et mon nom de fichier ne semble pas comprendre les caractères proscrits (dans ma liste de choix, j'ai bien des noms avec "-" et/ou "_") mais même un essai avec un nom ne comportant que des lettres remonte la même erreur...

Sub enreg()
Dim LePath As String, LeNom As String
LePath = ThisWorkbook.Path & "C:\Users\steph\Documents\Travaux divers pour HBG MBH\Fiches de poser\XLS en cours\" 'adapter chemin
LeNom = Range("H4").Value & ".xlsx"
With Sheets("GENERATION FICHE") 'adapter nom feuille
Sheets.Add
.Range("A1:Z103").Copy Range("A1") 'adapter plage cellule
ActiveSheet.Move
With ActiveWorkbook
.SaveAs LePath & LeNom
.Close False
End With
End With
MsgBox "Votre fichier " & Range("H4").Value & " est créé", vbInformation, "Création fichier"
End Sub


Ensuite, mais c'est de ma faute car je ne l'avais pas spécifié initialement, je souhaite aussi conserver la mise en forme, en plus des valeurs que remontent les formules dans mon fichier excel "de travail"...
Le "enregistrer sous, copier/collage spécial" fonctionne, mais j'aurais aimé "automatiser" la chose...
Je continue à tatonner...
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
Modifié le 27 juil. 2021 à 16:41
Comme ceci

LePath =  "C:\Users\steph\Documents\Travaux divers pour HBG MBH\Fiches de poser\XLS en cours\" 'adapter chemin


Pour la copie en collage spécial sers toi de l enregistreur de macro
0
tacounet Messages postés 28 Date d'inscription vendredi 23 mars 2018 Statut Membre Dernière intervention 22 octobre 2022 > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
27 juil. 2021 à 16:58
Effectivement, ça fonctionne nickel...

Plus qu'à, de mon coté, créer avec l'enregistreur de macro, une macro qui "copie/collage spécial(mise en forme & valeurs)", à concaténer avec la tienne, et ça devrait dérouler...

Merci beaucoup
0
tacounet Messages postés 28 Date d'inscription vendredi 23 mars 2018 Statut Membre Dernière intervention 22 octobre 2022 > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
28 juil. 2021 à 18:25
Bonjour Le Pivert,

J'ai beau tourner le problème dans tous les sens, je ne trouve pas se solution.
J'ai bien, via l'enregistreur de macro, réussi à créer une macro qui m'enregistre mon fichier en xlsx, sans toucher à la mise en forme, mais dès que j'essaie de concaténer avec la tienne, qui contient les éléments que je souhaite (sélection du nom, de la feuille active et du chemin de fichier) ça plante...
Le fait que je n'ai pas les base de la programmation vba, et que je sois totalement autodidacte avec Excel ne doit pas aider...

Oserais-je te demander encore ton assistance?
au besoin en te faisant parvenir un copie de mon fichier, pour qu'un expert s'y penche?

Merci en tout cas pour l'aide déjà apportée.
Stéphane
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > tacounet Messages postés 28 Date d'inscription vendredi 23 mars 2018 Statut Membre Dernière intervention 22 octobre 2022
28 juil. 2021 à 18:38
Tu peux mettre le code que tu as eu avec l'enregistreur. Pour voir si je peux le mettre avec la macro existante.

Sinon poste ton classeur sans données sensibles ici:

https://www.cjoint.com/

Ensuite tu colles le lien sur ce post

@+
0
tacounet Messages postés 28 Date d'inscription vendredi 23 mars 2018 Statut Membre Dernière intervention 22 octobre 2022 > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
28 juil. 2021 à 19:12
Voici mon fichier...
https://www.cjoint.com/c/KGCriUIw7HS


En te remerciant par avance, et en espérant réussir à comprendre tout ça un jour...

Stéphane
0
tacounet Messages postés 28 Date d'inscription vendredi 23 mars 2018 Statut Membre Dernière intervention 22 octobre 2022
27 juil. 2021 à 18:37
Rebonjour,

Préférant travailler étape par étape, afin de bien visualiser les différentes étapes et ainsi identifier facilement les problèmes, j'ai:

Créé une deuxième feuille, qui, via macro, va chercher les valeurs et format des cellules de ma feuille d'origine, (1ère macro), affiche les images qui correspondent à mes différentes données (2ème macro).
J'ai modifié la macro d'enregistrement en .xlsx pour que ce soient bien les éléments de cette 2ème feuille (valeurs + images) qui soient sauvegardées en.xlsx.
Mais là où le bas blesse, c'est que la mise en page (taille des cellules, polices, couleurs de remplissage) de cette feuille ne sont pas pris en compte dans cet .xlsx pourtant correctement créé, au bon endroit...
qu'ai-je loupé???

Je vais faire comme à mon habitude, laisser pour ce soir le PC de côté (au risque de m'énerver dessus), et espérer que la nuit me permettra d'y revenir demain, avec un regard neuf...
0