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.

Re

1)
super j'ai 10000 "as single" à taper.
Tu peux faire Edition/Remplacer dans VBE

2)
Les explications :
fs = nom feuille source
fd = nom feuille destination
source: adresse de la plage source
desti: adresse de plage destination

C'est donc une macro avec des paramètres
Mcopie "Feuil1", "A3:H9", "Feuil2", "A35"

qui veut dire:
copie la plage A3:H9 de la feuille 1 vers la feuille 2 dans la cellule A35


Before: cela veut dire avant en anglais

Mais la je vais au dodo,

Reste des explications demain.

PS: but de la macro: alléger le code (compare avec ta macro initiale)
 
Dernière édition:

Angus

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

Voici mon code,

VB:
 Private Sub front_suspension_out_but_Click()

Call drive_but_Click
Call arb_but_Click

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

End Sub
 

Staple1600

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

Bonjour


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

Ici le code est identique donc redondant, (seuls le nom des feuilles , les plages de cellules changent) et se répète n fois plus bas dans ton code d'où ma proposition de la macro Mcopie qui allège le code...

Tu vois que les Select peuvent se supprimer sans problème.
 

Discussions similaires

Réponses
4
Affichages
242

Statistiques des forums

Discussions
312 671
Messages
2 090 761
Membres
104 656
dernier inscrit
DAM2B42