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

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

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

Il n'est presque jamais utile d'utiliser les Select en VBA
(Cela alourdit le code)

PS: si tu joins un fichier exemple qui reprend la structure de ton classeur
(agencement des données et nom des feuilles) avec quelque données exemples, il serait plus simple de faire des tests, non ?
 
Dernière édition:

Staple1600

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

Re


Personnellement, je ferai un truc dans ce genre là
(ce n'est qu'en exemple inachevé)
A TESTER SUR UN CLASSEUR VIERGE
VB:
Sub test()
Dim copie As Workbook, choix
'///////////CREATION DONNEES TEST//////
 With Range("A3:H30")
    .FormulaArray = "=COLUMN()*ROW()"
    .Value = .Value
    .Borders.LineStyle = xlContinuous
    .Interior.ColorIndex = 6
    .Font.Bold = True
End With
'/////////FIN CREATION DONNEES TEST /////
choix = InputBox("Choix?", "Test", 1)
Application.ScreenUpdating = False
Select Case choix
Case 1
Mcopie "Feuil1", "A3:H9", "Feuil2", "A35"
Case 2
Mcopie "Feuil1", "A11:H19", "Feuil2", "A35"
Case 3
Mcopie "Feuil1", "A20:H30", "Feuil2", "A35"
End Select
Set copie = Workbooks.Add(xlWBATWorksheet)
ThisWorkbook.Worksheets("Feuil2").Copy Before:=copie.Sheets(1)
Application.DisplayAlerts = False
copie.Sheets(2).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

VB:
Sub Mcopie(fs$, source$, fd$, desti$)
Sheets(fs).Range(source).Copy
Sheets(fd).Range(desti).PasteSpecial 12 '*
End Sub


PS:
'*Ceci est l'écriture classique que j'ai raccourci dans mon code
Code:
Sheets(fd).Range(desti).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
       ' xlNone, SkipBlanks:=False, Transpose:=False
 
Dernière édition:

Staple1600

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

Re


Tu as bien copié les 2 codes VBA dans les classeurs ?
(Car dans mon message il y a 2 macros: test et Mcopie)

PS: je teste toujours mes macros avant de les poster, et elles fonctionnent en général
C'est la cas ici ;)
 

Angus

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

Re

Je ne vois pas à quoi fait référence F_choice dans ton code ??

exact,

F c'est front

1 c'est U arb dans la page ARB+comments...
2 c'est T arb dans la page ARB+comments...
3 c'est T arb+3rd spring dans la page ARB+comments...

cette valeur appartient à une cellule d'une feuille que je n'ai pas fourni
 

Staple1600

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

Re

Alors tu avais tout copié ou pas ?

Et maintenant cela fonctionne ? (je parle de mes macros )

PS: Si tu joins un fichier exemple tronqué, on aura du mal à tester dans de bonnes conditions ;)
 

Angus

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

Re

Alors tu avais tout copié ou pas ?

Et maintenant cela fonctionne ? (je parle de mes macros )

PS: Si tu joins un fichier exemple tronqué, on aura du mal à tester dans de bonnes conditions ;)

Navré mais le fichier fais plus de 1Mo, même compressé...

Et l'exemple est suffisant, en fixant F_choice=1 ou 2 ou 3...
 

Staple1600

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

Re

Prends ton temps ;)

Tu me diras plus tard si cela marche chez toi.

PS1: Il suffit juste d'enlever les fioritures (qui ne servent à rien) en période de test
Donc sans format, sans couleurs, avec simplement les données et les feuilles utilisés par le code VBA
ton fichier devrait être beaucoup plus léger.

Enfin c'est ton projet, c'est toi qui sais si tu as besoin ou pas de plus de conseils...

PS2: Ton F_choice n'étant déclaré nulle part, je ne peux pas deviner à quoi il servait.
 
Dernière édition:

Angus

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

Merci Staple,

Je ne comprend pas pourquoi pour le fichier déposé, la macro tourne, mais pas sur mon fichier original de 1Mo...

Mais je devrais pouvoir corriger celà, après ce que je voudrais c'est arriver jusqu'au moment ou l'utilisateur click sur enregistrer...

Sais-tu comment éviter l'ouverture du classeur "personnel" à chaque ouverture?
 

Discussions similaires

Réponses
7
Affichages
315
Réponses
10
Affichages
380
Réponses
4
Affichages
418

Statistiques des forums

Discussions
315 289
Messages
2 118 057
Membres
113 420
dernier inscrit
Mourad Ben Ghazela