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

Améliorer une macro d'enregistrement "save as"

  • Initiateur de la discussion Initiateur de la discussion Angus
  • 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 !

A

Angus

Guest
Bonjour à tous,

Je suis débutant en programmation.

Voilà j'ai créer une macro qui export des valeurs issuent de plusieurs pages sous une feuille simple

La macro se finit par une demande d'enregistrement.

Je voudrais faire quelques améliorations:

-Conserver le format de couleur et bordure des cellules
-Ne jamais faire apparaître la feuille nouvellement créer, seulement la sauvegarder. (Pour l'instant elle apparait au moment de la sauvegarde et rest ouverte ensuite.)
-Faire commencer par [Front] le nom de sauvegarde, mais laisser à l'utilisateur le nom final et l'adresse.

Voici le code et le fichier

Code:
Private Sub front_suspension_out_but_Click()

Dim F_choice As Single

F_choice = 1

Dim copie As Workbook

Application.ScreenUpdating = False

    Worksheets("Front suspension").Range("A1:H34").Copy
    Worksheets("Double A-Arm").Range("A1").PasteSpecial 12

If F_choice = 1 Then ' Front_U Macro
    Worksheets("ARB+Ref.pts+comments").Range("A3:H9").Copy
    Worksheets("Double A-Arm").Range("A35").PasteSpecial 12
       
    Worksheets("ARB+Ref.pts+comments").Range("A34:H53").Copy
    Worksheets("Double A-Arm").Range("A42").PasteSpecial 12
End If
 
If F_choice = 2 Then ' Front_T Macro
    Worksheets("ARB+Ref.pts+comments").Range("A11:H19").Copy
    Worksheets("Double A-Arm").Range("A35").PasteSpecial 12
           
    Worksheets("ARB+Ref.pts+comments").Range("A34:H53").Copy
    Worksheets("Double A-Arm").Range("A44").PasteSpecial 12
End If
    
If F_choice = 3 Then ' Front_T_3rd Macro
    Worksheets("ARB+Ref.pts+comments").Range("A21:H32").Copy
    Worksheets("Double A-Arm").Range("A35").PasteSpecial 12
    
    Worksheets("ARB+Ref.pts+comments").Range("A34:H53").Copy
    Worksheets("Double A-Arm").Range("A47").PasteSpecial 12
End If

Set copie = Workbooks.Add(xlWBATWorksheet)
ThisWorkbook.Worksheets("Double A-Arm").Copy Before:=copie.Sheets(1)
Application.DisplayAlerts = False
copie.Sheets(2).Delete
Application.DisplayAlerts = True

Application.ScreenUpdating = True

Application.Dialogs(xlDialogSaveAs).Show

End Sub
 

Pièces jointes

Re : Améliorer une macro d'enregistrement "save as"

Bonjour


Le je est un peu abusif non ?

Gonflé le gars. 🙄
Les précédentes améliorations ne serait pas moi qui te les ai pondu par hasard ?

Et pourquoi créer un second fil de discussion ?
Le premier suffisait

Tu n'a pas lu la charte du forum ?

PS: je vois que tu suis mes conseils: tu as bien pensé à poster un xls plutôt qu'un xlsm.
 
Dernière édition:
Re : Améliorer une macro d'enregistrement "save as"

Bonjour
a essayer
a+

Bonjour jpb,

Merci pour ta réponse,

C'est bien plus élégant comme çà

Par contre, j'ai oublier de préciser que lors de la copie des cellules ARB+ref+comments vers la page Double A-Arm, les cellules de la page ARB+ref+comments contiennent des formules et qu'en les collant sur une autre page à une autre ligne ou colonne, les calculs deviennent faux. C'est pour cette raison que la copie ne prenait que les valeurs et leur forme.
En tout cas Staple à modifier çà en "12" peut être qu'un autre type garde les valeur et format des cellules?

J'ai aussi oublier de préciser qu'il fallait sauvegarder en format .xls, j'ai essayé ceci sans succès.

Code:
fileSaveName = Application.GetSaveAsFilename(fileFilter:="Fichiers excel 2007 (*xls;*.xlsx;*.xlsm),*xls;*.xlsx;*.xlsm")

Aussi, est il possible d'introduire [Front] dans le "label" de la fenêtre de sauvegarde?
 
Re : Améliorer une macro d'enregistrement "save as"

Bonjour

...
En tout cas Staple à modifier çà en "12" peut être qu'un autre type garde les valeur et format des cellules?

12 veut dire: xlPasteValuesAndNumberFormats

Ce qu'il y avait dans ton code initial.

Donc je n'ai rien modifié à ce niveau ...

C'est bien plus élégant comme çà
Les gouts et les couleurs ca se discute pas

Néanmoins, tu remarqueras que beaucoup de tes lignes de codes se répètent
D'ou ma proposition de simplication en créant une sous-procédure (Mcopie)
Mais effectivement rien n'empêche de répéter des lignes de codes dans une macro
 
Dernière édition:
Re : Améliorer une macro d'enregistrement "save as"

Code:
fileSaveName = Application.GetSaveAsFilename(fileFilter:="Fichiers excel 97 2003 (*.xls),*.xls")

ok comme ceci çà fonctionne!
 
Re : Améliorer une macro d'enregistrement "save as"

Re

Aussi, est il possible d'introduire [Front] dans le "label" de la fenêtre de sauvegarde?
Oui

Code:
fileSaveName = Application.GetSaveAsFilename(fileFilter:="Fichiers excel 97 2003 (*.xls),*.xls",Title:="[Front]")
PS: As-tu lu mon précédent message concernant le 12 ?
 
Dernière édition:
Re : Améliorer une macro d'enregistrement "save as"

Re


Relis ta question, tu verras qu'elle n'a pas de sens puisque les deux écritures sont équivalentes.
12=xlPasteValuesAndNumberFormats
Je n'ai donc rien modifié

Sinon pour ta dernière question [Front], c'est ce que tu voulais ?
 
Re : Améliorer une macro d'enregistrement "save as"

tu as modifié xlPasteValuesAndNumberFormats en 12...

et

Code:
fileSaveName = Application.GetSaveAsFilename(fileFilter:="Fichiers excel 97 2003 (*.xls),*.xls",Title:="[Front]")

Ne fonctionne pas...
 
Re : Améliorer une macro d'enregistrement "save as"

Re

C'est la même chose
12 est une autre écriture pour dire
xlPasteValuesAndNumberFormats
comme -4163 veut dire xlPasteValues

J'ai testé : [Front] apparait en haut à gauche de la boite de dialogue de sauvegarde
Mais peut-être que ce n'est pas cela que tu voulais ?
 
Dernière édition:
Re : Améliorer une macro d'enregistrement "save as"

C'est la même chose
12 est une autre écriture pour dire
xlPasteValuesAndNumberFormats
Je n'ai pas dit le contraire.

Exact, je voudrais le faire apparait en début de nom de fichier, c'est dejà le cas mais celui ci n'est pas visible dans cette boite.
 
Dernière modification par un modérateur:
Re : Améliorer une macro d'enregistrement "save as"

Re


Ne rajoute pas dans mes citations des choses que je n'ai pas écrites, stp.

Pour conclure: 12 est ce qu'on appelle la constante numérique de : xlPasteValuesAndNumberFormats.

Modifie ainsi dans ce cas
Code:
fileSaveName = Application.GetSaveAsFilename("toto.xls", fileFilter:="Formats97 2003 (*.xls),*.xls", Title:="Saisir le nom de votre fichier, svp")
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

N
Réponses
10
Affichages
5 K
Nicocotte125
N
D
Réponses
9
Affichages
2 K
DanyJee
D
B
Réponses
4
Affichages
2 K
benoitoleron
B
N
Réponses
1
Affichages
958
L
  • Question Question
Réponses
0
Affichages
1 K
lycan54
L
S
Réponses
6
Affichages
1 K
S
Réponses
2
Affichages
660
D
  • Question Question
Réponses
6
Affichages
2 K
D
Réponses
4
Affichages
860
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…