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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

Pierrick66

Guest
Bonjour,

Le fichier suivant me permet de créer des devis automatiquement.
Sur la feuille "DEVIS" le bouton "ENREGISTRER SOUS" me permet d'enregistrer le fichier avec le nom contenue en cellule C6.

Je souhaiterai que dans les fichiers crée le bouton "ENREGISTRER SOUS" ainsi que la macro correspondante sous effacé.

Est-ce possible

PS: La macro doit toujours rester dans le fichier ci-joint mais plus dans les fichiers crée via le bouton "ENREGISTRER SOUS"

Merci
 

Pièces jointes

Hello

Ci dessous un bout de code que j'avais réalisé dans un autre projet
à adapter à ton besoin
VB:
Application.DisplayAlerts = False 'on désactive les messages d'alerte pour éviter d'avoir à confirmer la sauvegarde au format xlsx qui ne contient plus les macros
'on enregistre sous le nom constitué du chemin complet et nomfichier + extension .xlsx pour supprimer les macro
ActiveWorkbook.SaveAs Filename:=CheminCompletNomFichier & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

'*************************************************************************************
'supprimer dans la nouvelle feuille les boutons
For Each sh In ActiveSheet.Shapes 'Boutons qui portent un nom contenant BT
    If sh.Name Like "BT*" Then sh.Delete
Next sh
'**************************************************

ActiveWorkbook.Close savechanges:=True 'on ferme la demande
Application.DisplayAlerts = True 'on REACTIVE les messages d'alerte
[code]
 
Malheureusement ce n'est pas exactement ça que je cherche.

Je vais esssayer de m'expliquer clairement

Dans la Feuille DEVIS le bouton "ENREGISTRER SOUS" me permet d'enregistrer un fichier en fonction du contenu de C6.
Ce que je souhaiterai c'est que ce bouton et la macro associé soit supprimer dans chaque nouveau fichier qui sera enregistré.

Est ce possible ?

Cordialement
 
Hello
il me semble que cette partie répond à ton besoin..
VB:
Sub Supprimer_Macro_Precise()
Dim Debut As Integer, Lignes As Integer
Dim NomMod As String, NomMacro As String

NomMod = "Module3"
NomMacro = "Macro1"

With ThisWorkbook.VBProject.VBComponents(NomMod).CodeModule
    Debut = .ProcStartLine(NomMacro, 0)
    Lignes = .ProcCountLines(NomMacro, 0)
    .DeleteLines Debut, Lignes
End With

End Sub
evidemment. tu auras pris le soin de modifier
NomMod
NomMacro
ET remplacer ThisWorkbook par le nom du classeur nouvellement créé
 
Dernière édition:
Hello

Sub Supprimer_Macro_Precise()
Dim Debut As Integer, Lignes As Integer
Dim NomMod As String, NomMacro As String

NomMod = "Module1"
NomMacro = "EnregistrerSous"

With Filename="C\Users\Desktop\DEVIS" & Range("C6").VBProject.VBComponents(NomMod).CodeModule
Debut = .ProcStartLine(NomMacro, 0)
Lignes = .ProcCountLines(NomMacro, 0)
.DeleteLines Debut, Lignes
End With

End Sub

Si je suis le truc je doit faire ceci? Et l'affecter a un bouton ou non ?
 
je pense que ton with filename=... ne va pas plaire à VBA

essaie plutot un truc du genre
VB:
Sub Supprimer_Macro_Precise()
Dim Debut As Integer, Lignes As Integer
Dim NomMod As String, NomMacro As String

NomMod = "Module3"
NomMacro = "Macro1"
set Wb=workbooks("NOMNOUVEAUCLASSEUR.xls")

With Wb.VBProject.VBComponents(NomMod).CodeModule
    Debut = .ProcStartLine(NomMacro, 0)
    Lignes = .ProcCountLines(NomMacro, 0)
    .DeleteLines Debut, Lignes
End With

End Sub

et oui, pour le bouton
 
J'ai un collègue qui m'a fait ce code
Code:
Sub EnregistrerSous()
    Dim nWb$, chDos$
    nWb = ActiveSheet.Range("C6") & ".xlsm"
    chDos = "C:\Users\oem\Desktop\DEVIS\"
    ThisWorkbook.SaveCopyAs chDos & nWb
    With Workbooks.Open(chDos & nWb)
   With .VBProject.VBComponents
            .Remove .Item("Module2")
        End With
        .Worksheets("Devis").Shapes("Rectangle 1").Delete
        .Close True
    End With
    Application.Quit
End Sub

Le problème c'est que j'ai une erreur sur la ligne
Code:
With VBProject.VBComponents

Pouvez vous m'aider ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2021 Macro
Réponses
6
Affichages
242
Retour