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

Angus

XLDnaute Junior
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

  • dev_save_as.xlsm
    82.8 KB · Affichages: 54
  • dev_save_as.xlsm
    82.8 KB · Affichages: 62
  • dev_save_as.xlsm
    82.8 KB · Affichages: 63

Staple1600

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

Bonjour

Bonjour à tous,

Je suis débutant en programmation.

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

La macro se finit par une demande d'enregistrement.

Je voudrais faire quelques améliorations:

Le je est un peu abusif non ?

Gonflé le gars. :rolleyes:
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:

Angus

XLDnaute Junior
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?
 

Staple1600

XLDnaute Barbatruc
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:

Staple1600

XLDnaute Barbatruc
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:

Staple1600

XLDnaute Barbatruc
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 ?
 

Angus

XLDnaute Junior
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...
 

Staple1600

XLDnaute Barbatruc
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:

Staple1600

XLDnaute Barbatruc
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:

Discussions similaires