Programmer l'affectation d'une macro à un bouton
Bonjour à l'ensemble de la communauté, et merci par avance pour l'aide que vous pouvez m'apporter. Je débute depuis quelque temps le VBA.
Mon soucis est le suivant : Je possède un fichier Excel pour passer une commande à un fournisseur. J'ai installé 2 boutons sur ce fichier
- 1 bouton pour imprimer la commande (Nom de la macro : IMPRESSION)
- 1 bouton pour enregistrer la commande (en PDF et en xlsm) et la réinitialiser (Nom de la macro : EnregistrementCommande)
L'inconvénient c'est qu'il m'arrive de devoir modifier une commande déjà enregistré. Donc il faut que je modifie la fonction des boutons de la commande enregistré. J'ai introduis dans ma macro EnregistrementCommande des commandes pour exporter puis importer un module contenant l'ensemble des modification que nécessite mes boutons. L'exportation et l'importation se passe bien, sauf que je n'arrive pas affecter ces macros aux boutons de ma commande enregistré.
Les macros sont bien présentes dans mes commandes enregistré mais elles ne sont pas affectés à un bouton.
Le "Module3" contient l'ensemble des macros nécessaires pour modifier l'utilisation de mes boutons. La macros qui doivent être affecté à mes boutons une fois la commande enregistré sont "Export_Fichier" et "IMPRESSIONMODIF"
Donc pour résumer mon souhait : J'appuie sur un bouton qui enregistre ma commande, exporte et importe le "Module3" vers le nouveau fichier Excel qui se créé pour ma commande (Jusque là aucun problème) et affecte les macros du "Module3" aux boutons concernés (c'est à partir de là que je bloque)
Comptant sur votre aide,
Cordialement
Julien
'ENREGISTREMENT FORMAT EXCEL
Dim CheminBis As String
Dim NomFichier As String
Application.ScreenUpdating = False
NomFichier = Sheets("Liste Fournisseurs").Range("K1")
CheminBis = "C:\Archive Commande\EXCEL\" & NomFichier & "\"
On Error Resume Next
MkDir CheminBis
On Error GoTo 0
'Copie de la feuille COMMANDE
Application.ScreenUpdating = False
ThisWorkbook.Sheets(Array("COMMANDE", "MATERIELS DU FOURNISSEUR", "Liste Fournisseurs", Sheets("Liste Fournisseurs").Range("K1").Value, "FOURNISSEURS")).Copy
'EXPORT DU MODULE3 POUR MODIFIER LES PROGRAMMES DES BOUTONS
Dim srcWB As Workbook
Dim destWb As Workbook
Const sStr2 As String = "C:\Archive Commande\File.bas"
Set srcWB = Workbooks("COMMANDE FOURNISSEURS")
Set destWb = ActiveWorkbook
srcWB.VBProject.vbcomponents("Module3").Export Filename:=sStr2
destWb.VBProject.vbcomponents.Import Filename:=sStr2
Kill sStr2
ActiveSheet.Shapes("Bouton 1").OnAction = "Export_Fichier"
ActiveSheet.Shapes("Bouton 2").OnAction = "IMPRESSIONMODIF"
'ENREGISTREMENT DE LA COPIE
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=CheminBis & "Commande N°_" & Sheets("Liste Fournisseurs").Range("H4").Value & " " & Sheets("Liste Fournisseurs").Range("K1").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Application.DisplayAlerts = True
'Fermeture de la copie une fois enregistré
ActiveWorkbook.CloseBonjour,
Il me semble que tu te compliques bien inutilement la vie.
Pour gérer tes commandes fournisseurs, (et modifications), tu n'as pas besoin "d'embarquer" toutes tes macros dans chaque classeur de commandes.
Utilise un classeur de gestion des commandes qui contiendra toutes les macros et boutons dont tu as besoin.
Et tu n'enregistrera que les feuilles de commandes proprement dites (sans aucune macro). Ainsi quand quand tu viendras à en réouvrir tu utiliseras toujours ton classeur de gestion polyvalent qui lui seul contient les macros...
A+
Bonjour galopin01
Tout d'abord merci de t'être intéressée à mon sujet.
Je comprends l'ingéniosité de ta réponse, et je suis d'accord que ce serait beaucoup plus simple pour moi de simple créer un classeur de gestion de commande.
Sauf qu'il y a un inconvénient chaque commande fournisseur est enregistré sur un serveur de mon entreprise qui peut être consulté par l'ensemble des employés. Donc, par exemple si mon responsable souhaite voir une commande passé chez Intel (fournisseur quelconque) ils ont besoin d'avoir accès à ces commandes. De plus, l'intérêt de cette macro serait de pouvoir changer les prix/négocié avec les fournisseurs sur nos commandes. Donc le but est de pouvoir avoir un accès simple, efficace et rapides à toutes ces commandes passaient, mais aussi qu'une quelconque personne modifié/négocie les prix établies.
Je suis bien d'accord que je me complique la vie, mais on ne me laisse pas le choix ^^. De plus, le projet est pratiquement finaliser donc faire une marche arrière en étant si proche de la fin serait contre productif pour tout le monde.
Mais je te remercie tout de même pour cette solution astucieuse apporté.
Cordialement
Julien