Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Création bouton avec macro enregistrer sous

Mel46

XLDnaute Nouveau
Bonjour,

J'aimerais avoir un peu d'aide afin de trouver la macro nécessaire pour enregistrer mon formulaire de soumission (modèle), avec un nom précis + les données d'une cellule précise, vers un emplacement précis! hihihihi

Je voudrais que cette action soit envoyée en cliquant sur un bouton formulaire active X.

Je n'y connais absolument rien en VBA! Sauf ce que j'ai lu ici...

Merci
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Mel46 (Bienvenue sur le forum)
Maintenant que tu as posé ta question, tu peux glisser ton regard tout en bas de la page
Et voir si tu ne trouves pas de quoi t'inspirer dans les discussions similaires.
Si tu ne trouves rien de probant, il reste le moteur de recherche interne du forum.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Mel46
Tu as suivi mon dernier conseil
Si oui, tu as du lire cette discussion (qui appartient aux discussions similaires)
 

Mel46

XLDnaute Nouveau

Oui, je suis le nez dedans en ce moment, mais je ne trouve pas la section de la formule pour faire enregistrer-sous sans impression
 

Staple1600

XLDnaute Barbatruc
Re

Voici un petit exemple
(Insères un CommanButton, contrôle ActiveX <= Onglet Développeur/Insérer/Bouton de Commande)
Puis clique sur Mode Création et clic-droit sur le bouton => Visualiser le code
Colle alors le code VBA ci-dessous
VB:
Private Sub CommandButton1_Click()
Dim NOM_PRECIS As String
Dim vEMPLACLEMENT As String
Dim vCELLULE As Range
NOM_PRECIS = "VALEUR_DE_TEST_"
vEMPLACEMENT = ThisWorkbook.Path & "\"
Set vCELLULE = Range("A1")
vCELLULE = vCELLULE.Address(0, 0)
ActiveWorkbook.SaveAs vEMPLACEMENT & NOM_PRECIS & vCELLULE & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
 

pat66

XLDnaute Impliqué
Bonjour Stapple1600,
j'ai testé ta macro qui fonctionne très bien, mais serait il possible de l'adapter pour n'exporter que certaines feuilles (feuil1, feuil2, feuil5, etc) et non tout le classeur au format xlsx, c'est à dire en vidant le code du workbook et supprimant les modules

un grand merci
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
Bonjour
un simple .copy d'un array de sheets a pour effet de créer un new classeur avec les sheets en question
ya plus ka
met les noms de sheets que tu veux dans l'array
VB:
Sub savearraysheet()
    Dim NOM_PRECIS$, vEMPLACLEMENT$, Nom$, messheets
    NOM_PRECIS = "VALEUR_DE_TEST_"
    vEMPLACEMENT = ThisWorkbook.Path & "\"
    messheets = Array("Feuil1", "Feuil2", "Feuil5")
    Sheets(messheets).Copy    ' a pour effet de copier les sheets dans un new classeur
    Nom = NOM_PRECIS & Sheets(1).Range("A1").Text
    With ActiveWorkbook
        Application.DisplayAlerts = False    'pour l’écrasement si déjà existant
        .SaveAs vEMPLACEMENT & Nom & ".xlsx"
        .Close
    End With
End Sub

si tu veux la boite de dialogue dis le
 

pat66

XLDnaute Impliqué
Çà alors, je n'ai pas osé te le demander car je ne voulais pas abuser, mais tu as exaucé mon vœu

non merci pas besoin de boite dialogue, j'ai un command bouton

voici mon code, serait ce trop te demander de l'adapter avec ton Sub savearraysheet()

Private Sub CommandButton5_Click()
Application.EnableEvents = False
Application.DisplayAlerts = False
If Sheets("V3").Range("G27") = "" Then
If MsgBox("Vous devez préciser le nom du client !", vbOKOnly + vbInformation, "vous informe") = vbAbort Then Exit Sub
Else
Dim NOM_PRECIS As String
Dim vEMPLACEMENT As String
NOM_PRECIS = Sheets("V3").Range("G27").Value
vEMPLACEMENT = ThisWorkbook.Path & "\"
ActiveWorkbook.SaveAs vEMPLACEMENT & NOM_PRECIS & "_" & Format(Now, "dd-mm-yyyy"), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End If
Application.DisplayAlerts = True
End Sub

merci
 

patricktoulon

XLDnaute Barbatruc
re
VB:
Private Sub CommandButton5_Click()
    Dim NOM_PRECIS$, vEMPLACEMENT$, messheets
    Application.EnableEvents = False
    messheets = Array("Feuil1", "Feuil2", "Feuil5")    'mettre les noms de sheets que tu veux ici
    
    If Sheets("V3").Range("G27") = "" Then
        If MsgBox("Vous devez préciser le nom du client !", vbOKOnly + vbInformation, "Patrick Lopez vous informe") = vbAbort Then Exit Sub
    Else
        NOM_PRECIS = Sheets("V3").Range("G27").Value & "_" & Format(Now, "dd-mm-yyyy") & ".xlsx"
        vEMPLACEMENT = ThisWorkbook.Path & "\"
        Sheets(messheets).Copy    ' a pour effet de copier les sheets dans un new classeur
        Application.DisplayAlerts = False
        With ActiveWorkbook
            .SaveAs vEMPLACEMENT & NOM_PRECIS
            .Close
        End With
    End If
    Application.DisplayAlerts = True
End Sub
 

pat66

XLDnaute Impliqué
c'est super il enregistre bien les feuilles désignées, le classeur xlsm reste ouvert et le classeur xlsx se ferme
peut on fermer aussi le xlsm sans fermer Excel ?

Précision : à l'ouverture le xlsx, me signale une liaison avec le classeur xlsm ? je crois que cela vient du mot de passe chripté à l'ouverture du classeur !
Précision : à l'ouverture le Xlsm ne s'ouvre plus sur la bonne feuille 'V3" comme si il avait été fermé sans tenir compte de before close ni de workbook open
un grand merci encore
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
VB:
Private Sub CommandButton5_Click()
    Dim NOM_PRECIS$, vEMPLACEMENT$, messheets
    Application.EnableEvents = False
    messheets = Array("Feuil1", "Feuil2", "Feuil5")    'mettre les noms de sheets que tu veux ici
    
    If Sheets("V3").Range("G27") = "" Then
        If MsgBox("Vous devez préciser le nom du client !", vbOKOnly + vbInformation, "Patrick Lopez vous informe") = vbAbort Then Exit Sub
    Else
        NOM_PRECIS = Sheets("V3").Range("G27").Value & "_" & Format(Now, "dd-mm-yyyy") & ".xlsx"
        vEMPLACEMENT = ThisWorkbook.Path & "\"
        Sheets(messheets).Copy    ' a pour effet de copier les sheets dans un new classeur
        Application.DisplayAlerts = False
        With ActiveWorkbook
            .SaveAs vEMPLACEMENT & NOM_PRECIS
            .Close
        End With
    End If
    'peut on fermer aussi le xlsm <<!!sans fermer Excel ?>>!!
'ben...
ThisWorkbook.Close
Application.DisplayAlerts = True
End Sub
 

pat66

XLDnaute Impliqué
ok tout se ferme c'est nickel sauf que à l'ouverture le Xlsm ne s'ouvre plus sur la bonne feuille 'V3" comme si il avait été fermé sans tenir compte de before close ni de workbook open , peut être finir avec
ThisWorkbook.saved ?

Saurais tu pourquoi le xlsx me demande encore d'activer les macros alors qu'on a vidé tout le contenu vba ?
 

patricktoulon

XLDnaute Barbatruc
JE n'en ai aucune idée chez moi ca ne le fait pas
peut etre que dans ton vrai fichier il y a des formules en relation avec des feuilles qui ne sont pas prises dans l'array des noms

tu pourrais faire un .value=.value a tout tes sheets usedrange sur la copy avant de sauver
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…