Crer une macro de sauvegarde avec l'enregistreur de macro.

Angus

XLDnaute Junior
Bonsoir à tous,

Je ne peux pas vous transmettre le fichier en question, mais j'ai un bon exemple avec un menu.

Disons que dans mon document j'ai 4 feuilles:

Sur la 1ere se trouvent les entrées: Salade, Carottes, Tomate.
Sur la 2e les plats de résistances: Pavé de boeuf, Saumon, Saucisses
Et sur la 3e les dessert : Glaces, Mousse au chocolat, Pâtisserie.

Sur chacune de ces feuilles les plats proposés sont à cocher.

Sur la 4e feuille dois être composé (choix entrée, plat et dessert mi bout à bout) le menu choisit en entier.

Je voudrais avec un bouton intitulé "Créer le menu", que ce menu se compose selon les choix de l'utilisateur et qu'il n'ai plus qu'à rentrer un nom et un lieu de sauvegarde.

Voilà comment je procède:

J'enregistre une macro qui conditionnée par les choix, copie l'élément choisit de la page dessert en page quatre, puis l'élément choisit de la page Plat en 2e ligne de la page 4 et ainsi de suite...

Puis avec la macro, je sélectionne toute la page 4, puis "Copier", Je créer une nouvelle page Excel, "Colle" le contenu de la page 4 sur ce document vierge, ensuite enregistrer sous: .....

C'est à ce moment que je voudrais arrêter la macro, pour laisser à l'utilisateur le nom sous lequel enregistrer le menu et à quel endroit l'enregistrer.

Mais problème:
1) La macro est impossible à arrêter à ce moment précis.
2) la création d'une nouveau document Excel génère un fichier "Classeur 1" qui reste vide si l'utilisateur utilise un nom différent pour sauvegarder le menu créer...

J'aimerais une solution élégante pour remplir cet objectif.

Merci d'avance.
 

Staple1600

XLDnaute Barbatruc
Re : Crer une macro de sauvegarde avec l'enregistreur de macro.

Bonsoir

Je t'encourage à persévérer à utiliser l'enregistreur de macros.

Dans le cas présent, fais la manip jusqu'au bout.
Ensuite tu édites le code VBA généré (en te servant de l'aide de VBA et/ou de forum, du net etc...)

EDITION: ce qui donne a peu pres ceci

VB:
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 21/07/2011 par EXCEL
'

'
    Sheets("Feuil4").Select
    Sheets("Feuil4").Copy Before:=Sheets(1)
    ActiveWorkbook.SaveAs Filename:="C:\Temp\Test.xls", _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Crer une macro de sauvegarde avec l'enregistreur de macro.

Re

Maintenant voici une version modifiée du premier code
(il est vrai assez éloigné de la première mais c'est juste parce que ca fait un bail que je Vbaise ;)

Code:
Sub a()
Dim copie As Workbook
Set copie = Workbooks.Add(xlWBATWorksheet)
ThisWorkbook.Worksheets("Feuil4").Copy Before:=copie.Sheets(1)
Application.DisplayAlerts = False
copie.Sheets(2).Delete
Application.DisplayAlerts = True
End Sub

Dis-moi si tu me suis , jusque là ?
 

Angus

XLDnaute Junior
Re : Crer une macro de sauvegarde avec l'enregistreur de macro.

En fait, concrètement, j’essaie de créer une macro pour exporter des valeurs qui seront ensuite importés dans un logiciel pro.

Avec un bouton, je cherche à faire comme sur un logociel pro : Ficher==>Exporter==>Nom==>Adresse==>Enregistrer

Au final on créer une feuille excel qui ne contient que des valeurs correctement placé sur une page.

Voici ma macro, et la tienne

Code:
Sub Front_U_2()
'
' Front_U Macro
'

[code=vb] Je choisis le feuile et la plage de valeur qui m'interrese
Sheets("Front suspension").Select
Range("A1:H34").Select
Application.CutCopyMode = False
Selection.Copy

'
VB:
 Que je copie, dans l'equivalent de la feuille 4
Sheets("Labo").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

'
VB:
 Puis de nouveau je copie une plage de valeur dans la feuille 2
Sheets("ARB+Ref.pts+comments").Select
Range("A3:H9").Select
Application.CutCopyMode = False
Selection.Copy

'
VB:
 Que je copie, dans l'equivalent de la feuille 4
Sheets("Labo").Select
Range("A35").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

'
VB:
 Puis de nouveau je copie une plage de valeur dans la feuille 2
Sheets("ARB+Ref.pts+comments").Select
Range("A34:H53").Select
Application.CutCopyMode = False
Selection.Copy

'
VB:
 Que je copie, dans l'equivalent de la feuille 4
Sheets("Labo").Select
Range("A42").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

'
VB:
 La je coupe toute la feuille 4 avec les donné accumulé
Range("A1:H57").Select
Application.CutCopyMode = False
Selection.Cut
Workbooks.Add 'Je créer un nouveau fichier[/code]
ActiveSheet.Paste 'J'y colle le contenu de la feuille 4[/code]

'
VB:
 Je sauvegarde.
'
VB:
 Sauf que là, je ne maitrise ni le nom ni le lieu de sauvegarde
    ActiveWorkbook.SaveAs Filename:="C:\Users\Laurent\Documents\Front_U.xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close
    
'[code=vb] Ici ta macro
Dim copie As Workbook
Set copie = Workbooks.Add(xlWBATWorksheet)
ThisWorkbook.Worksheets("Feuil4").Copy Before:=copie.Sheets(1)
'
VB:
 Il ne faut pas recopier la feuille 4 dans le même classeur

Application.DisplayAlerts = False '
VB:
Est ce pour supprimer l'affichage?
copie.Sheets(2).Delete
Application.DisplayAlerts = True

End Sub[/CODE]

Bon pour la couleur on repassera....
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Crer une macro de sauvegarde avec l'enregistreur de macro.

Bonsoir


Ma macro est juste une macro de test à utiliser sur un classeur vierge
contenant 4 feuilles

lance alors ma macro (seule) pour voir ce qui se produit.

Elle fait ce que tu demandais ici:
Puis avec la macro, je sélectionne toute la page 4, puis "Copier", Je créer une nouvelle page Excel, "Colle" le contenu de la page 4 sur ce document vierge,
" sélectionner toute la page" je l'ai compris comme copier la feuille 4.

PS: Il ne faur entourer les balises highlight avec code mais faire cela:

[noparse]
VB:
[/noparse]Sub toto()
MsgBox "Toto"
End Sub
[noparse]
[/noparse]

Ce qui donne alors
VB:
Sub toto()
MsgBox "Toto"
End Sub
 
Dernière édition:

Angus

XLDnaute Junior
Re : Crer une macro de sauvegarde avec l'enregistreur de macro.

Ok, çà copie la feuille 4 sur un classeur à 1 page...appelé Feuille4

Mais est ce possible, de faire aller la macro jusqu'à la question du choix du nom et lieu d'enregistrement?
 

Angus

XLDnaute Junior
Re : Crer une macro de sauvegarde avec l'enregistreur de macro.

Bonjour,

Bon alors, j'ai copié la macro enregistré, j'ai juste supprimer les scrolldown, et voilà que la 1ere selection : Range("A1:H34").Select échoue...
Je n'ai quand même pas besoin du scroll???

VB:
Private Sub front_suspension_out_but_Click()

Dim copie As Workbook

    Sheets("Front suspension").Select
    Range("A1:H34").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Labo").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False

If F_choice = 1 Then ' Front_U Macro
    
    Sheets("ARB+Ref.pts+comments").Select
    Range("A3:H9").Select
    Application.CutCopyMode = False
    Selection.Copy
    
    Sheets("Labo").Select
    Range("A35").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
        
    Sheets("ARB+Ref.pts+comments").Select
    Range("A34:H53").Select
    Application.CutCopyMode = False
    Selection.Copy
    
    Sheets("Labo").Select
    Range("A42").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
End If
 

If F_choice = 2 Then ' Front_T Macro

    Sheets("ARB+Ref.pts+comments").Select
    Range("A11:H19").Select
    Application.CutCopyMode = False
    Selection.Copy
    
    Sheets("Labo").Select
    Range("A35").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
        
    Sheets("ARB+Ref.pts+comments").Select
    Range("A34:H53").Select
    Application.CutCopyMode = False
    Selection.Copy
    
    Sheets("Labo").Select
    Range("A44").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
End If
    
If F_choice = 3 Then ' Front_T_3rd Macro
        
    Sheets("ARB+Ref.pts+comments").Select
    Range("A21:H32").Select
    Application.CutCopyMode = False
    Selection.Copy
    
    Sheets("Labo").Select
    Range("A35").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
        
    Sheets("ARB+Ref.pts+comments").Select
    Range("A34:H53").Select
    Application.CutCopyMode = False
    Selection.Copy
    
    Sheets("Labo").Select
    Range("A47").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
End If

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


End Sub
 

Discussions similaires

Réponses
4
Affichages
225

Statistiques des forums

Discussions
312 472
Messages
2 088 714
Membres
103 932
dernier inscrit
clotilde26