Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Enregistrer un workbook en valeur

  • Initiateur de la discussion Initiateur de la discussion Carnage029
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Carnage029

XLDnaute Occasionnel
Bonjour à tous 🙂

Je cherche à enregistrer un workbook en valeur par simple exécution de macro (par exemple bouton cliquable) mais plusieurs contraintes m'ennuient...

Le bouton qui permet l’exécution de la macro ne doit pas apparaître dans le fichier enregistré en valeur.
Le fichier "d'origine" ne doit pas être altéré (les formules, le texte et tout et tout)
Le fichier doit s'enregistrer dans un répertoire bien spécifique (qui ne change pas d'un jour à l'autre) sous le format : dd mm yy.xlsx

Aucune "pop-up" ne doit apparaître, demandant une confirmation au autre...

j'avais crée un truc que j'ai malheureusement perdu, mais même avec le désactivateur d'event, j'avais toujours la pop-up disant que le fichier perdait du contenu (la macro, car le fichier d'origine était un .xlsm et la macro l'enregistrait en .xlsx)


Merci beaucoup 🙂
 
Re : Enregistrer un workbook en valeur

Bonsoir Carnage029,

Sans exemple de fichier, difficile d'être affirmatif, mais que donnerait, dans un module standard de ton .xlsm, quelque chose comme:
VB:
Sub copierValeurs()
    chemin = "E:\Carnage029\" 'que tu modifieras, bien sûr à ta guise!
    Set src = ThisWorkbook
    Workbooks.Add
    Set cible = ActiveWorkbook
    src.Sheets(1).Cells.Copy
    cible.Sheets(1).[A1].PasteSpecial Paste:=xlPasteValues
    cible.SaveAs chemin & Format(Date, "dd mm yy") & ".xlsx"
    cible.Close
End Sub
 
Re : Enregistrer un workbook en valeur

Merci beaucoup à toi 🙂

EDIT : après avoir réellement testé j'ai un peu soucis, (que je n'avais pas précisé c'est donc entièrement de ma faute 🙁 )

Je souhaiterai conserver toutes la mise en page (mon workbook n'a qu'un seul onglet) c'est à dire le format des nombre, les largeurs de colonnes et ainsi de suite... savez vous quel argument il faut spécifier ?


Bonne journée 🙂
 
Dernière édition:
Re : Enregistrer un workbook en valeur

Bonjour Carnage029,

Prenons le temps d'être certains de bien nous comprendre:
- en définitive, tu souhaites récupérer quoi? Les valeurs (parce qu'il y a des formules au départ), mais aussi les formats d'origine (bordures, couleurs de remplissage, formats et attributs des polices, largeurs des colonnes, etc.)?
- dans la feuille à copier, il n'y a (en plus du contenu des cellules) que ton seul bouton ou il y aurait d'autres objets? S'il s'agit toujours du même fichier, on peut trouver le nom du bouton en question (pour pouvoir le supprimer, dans la copie de la feuille)
- le code dont tu disais qu'il se recopiait, figure dans un module standard ou dans le code de la feuille?

Tu peux toujours tester cette nouvelle variante (mais si ce n'est pas OK, il faudra que tu répondes aux questions ci-dessus)
VB:
Sub copierLaFeuille()
    chemin = "Z:\XLD\Carnage029\" 'que tu modifieras, bien sûr à ta guise!
    Set src = ThisWorkbook
    src.Sheets(1).Copy
    Set cible = ActiveWorkbook
    cible.Sheets(1).Shapes("Bouton 1").Delete 'Bouton 1 est à modifier, le cas échéant
    cible.SaveAs chemin & Format(Date, "dd mm yy") & ".xlsx"
    cible.Close
End Sub
 
Re : Enregistrer un workbook en valeur

Merci de passe du temps sur mon problème :

Pour répondre aux questions je souhaite avoir un "pdf" de mon excel mais en excel... en effet il est envoyé à l'extérieur et les formules sont accessibles qu'avec un abonnement.

L'excel comporte un seul onglet, avec des cellules parfois fusionnées, de la mise en forme (bordures, remplissage, couleur, format des nombres alignements) et surtout une textbox.

Le but est de copier l'excel avec tout identique mais en valeur, à savoir les bordures de page (la zone d'impression) les couleurs les bordures, la textbox etc etc...

J'ai trouvé une solution qui "fonctionne" mais vraiment à force d'utiliser l'enregistreur de macro et en reprenant du code par ci par là...

mon code est le suivant :

Code:
Sub copierValeurs()
Dim my_year As String
    my_year = Year(Now())
    chemin = "P:\DTFC\User\COMMUN\INFO\" & my_year & "\"
   Set src = ThisWorkbook
    Workbooks.Add
    Set cible = ActiveWorkbook
    src.Sheets(1).Cells.Copy
    cible.Sheets(1).[A1].PasteSpecial Paste:=xlPasteValues
    Cells.Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.PageSetup.PrintArea = "$A$1:$M$66"
    ActiveWindow.SmallScroll Down:=3
    ActiveSheet.PageSetup.PrintArea = "$A$1:$M$61"
    ActiveWindow.Zoom = 85
    ActiveWindow.SmallScroll Down:=-6
    cible.Sheets(1).VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
    cible.Sheets(1).HPageBreaks(1).DragOff Direction:=xlDown, RegionIndex:=1
    cible.SaveAs chemin & Format(Date, "dd mm yy") & ".xlsx"
    cible.Close
End Sub


voilà un peu archaïque mais ça fonctionne (sauf pour la textbox qui n'est pas recopiée du tout... de même que pour le bouton d'exécution de la macro mais ça c'est tant-mieux !)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…