Enregistrer classeur XLTM en VBA avec Plusieurs variables

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 !

Regueiro

XLDnaute Impliqué
Bonsoir le Forum.
Voilà ma petite difficulté à résoudre.
J'ai un fichier Modèle type XLTM, après avoir rempli ce formulaire,
j'aimerais enregistrer ce fichier au format XLSM dans un répertoire défini.
J'ai essayé avec l'enregistreur de Macro et cela marche.

MAIS : j'aimerais pouvoir :
1. Sélectionner les sous-repertoires ? ...\CHANTIERS\Chantier1, Chantier2, etc qui sont déjà créer sur mon C:\
2. Le nom du fichier doit être CO + valeur de la cellule (L11) + (N11) avec une séparation entre les 2 cellules
et le format de fichier XLSM.

Je vous joint un b
HTML:
Sub ENREGISTRER_XLXM()
'ENREGISTRER_XLXM Macro
    ChDir "C:\ACHAT\PROCESSUS DEMANDE ACHAT\2012 ESSAI\CHANTIERS"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\ACHAT\PROCESSUS DEMANDE ACHAT\2012 ESSAI\CHANTIERS\FORM. COMMANDE ACHAT 2012_V004.xlsm" _
        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
 
Re : Enregistrer classeur XLTM en VBA avec Plusieurs variables

Bonjour tout le Monde et DoubleZero
Concernant ce bloquage, c'est résolu à grace à la formule de mapomme.
Pourriez-vous m'expliquer comment dire que cette discussion est Résolu.

Ma contre concernant mon problème ci-dessus auriez-vous une piste ?
Merci de votre réponse à tous et bonne journée
 
Re : Enregistrer classeur XLTM en VBA avec Plusieurs variables

Re-bonjour,

En ce qui concerne le problème de ce jour, je ne peux aider.

Pour ce qui est du « blocage » évoqué supra (#2), une simple réponse dans la discussion d'origine serait certainement appréciée.

A bientôt 🙂
 
Re : Enregistrer classeur XLTM en VBA avec Plusieurs variables

Bonjour le Forum et Yaloo
Ta formule marche parfaitement sur ton fichier attachés
je l'ai adapter à mon classeur Excel 2010
Voilà le code
HTML:
[Dim Liste() As String
Sub ChercherRépertoire()
Dim a As Integer
a = 0
MyPath = "W:\"
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
             ' Ignore le répertoire courant et le répertoire contenant le répertoire courant
    If MyName <> "." And MyName <> ".." Then
            ' Utilise une comparaison au niveau du bit pour vérifier que MyName est un répertoire.
        If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
            ReDim Preserve Liste(a)
            Liste(a) = MyName
            a = a + 1
        End If  '
    End If
    MyName = Dir    ' Extrait l'entrée suivante
    Loop
End Sub
Private Sub CommandButton1_Click()
Répertoire = MyPath & ListBox1.Text & "\"
fic = Répertoire & "CDE " & Cells(11, 12) & " " & Cells(11, 14) & ".xlsm"
FichierCible = Application.GetSaveAsFilename(fic, Filefilter:="Classeur Excel (*.xlsm), *.xlsm")
If FichierCible <> False Then
ActiveWorkbook.SaveAs FichierCible
MsgBox "Le fichier a été enregistré sous " & FichierCible
End If
Unload Me
End Sub
Private Sub UserForm_Initialize()
Call ChercherRépertoire
ListBox1.List = Liste
End Sub
/HTML]
Ca Marche parfaitement comme tu le vois sur l'image
[ATTACH]209798.vB[/ATTACH]
mais par contre dans la fenêtre Enregistrer sous ce n'est pas le W:\ qui apparait ?
[ATTACH]209799.vB[/ATTACH]
Je ne trouve pas l'erreur.
Merci de ton aide
 

Pièces jointes

  • ScreenShot001.png
    ScreenShot001.png
    7.8 KB · Affichages: 154
  • ScreenShot003.png
    ScreenShot003.png
    6.3 KB · Affichages: 80
Re : Enregistrer classeur XLTM en VBA avec Plusieurs variables

Bonjour Regueiro,

Si je comprends bien tu veux te servir aussi de "Enregistrer sous"

Si c'est bien ça, juste après :
Répertoire = MyPath & ListBox1.Text & "\"
---> dans CommandButton1_Click()

il suffit de mettre :
ChDir Répertoire
---> Le ChDir te permet de sélectionner le répertoire cible

Je suis au boulot et pas Excel10, donc j'ai pas testé mais ça devrait marcher. Je testerai chez moi vers 20h


A+
 
Re : Enregistrer classeur XLTM en VBA avec Plusieurs variables

Bonsoir le Forum et Yaloo
Après une absence de quelques jours j'ai repris mon fichier et tout est OK.
MyPath = "W:\" Ok
En fait j'avais 1 deuxième bouton de commande avec enregistrer et je l'ai supprimer et tout est OK !!
Par contre j'ai encore 2 questions.
1. J'aimerais imposé 2 disques soit le W et le I, Uniquement ces 2.
2. comment enregistrer mon fichier au format PDF dans la même procédure ?
Merci de votre aide.
 
Re : Enregistrer classeur XLTM en VBA avec Plusieurs variables

Bonsoir Regueiro, le forum,

1 - Comment ça "imposé 2 disques" ????? Tu veux enregistrer sur les 2 disques ?

2 - Voir ci-dessous, tu remplaces Private Sub CommandButton1_Click() par:

VB:
Private Sub CommandButton1_Click()
Répertoire = MyPath & ListBox1.Text & "\"
fic = Répertoire & "CO " & Cells(11, 12) & " " & Cells(11, 14) & ".pdf"
FichierCible = Application.GetSaveAsFilename(fic, Filefilter:="PDF (*.pdf), *.pdf")
If FichierCible <> False Then
ActiveWorkbook.SaveAs FichierCible
MsgBox "Le fichier a été enregistré sous " & FichierCible
End If
Unload Me
End Sub


A+
 
Re : Enregistrer classeur XLTM en VBA avec Plusieurs variables

Merci pour ta réponse.
En fait les chantier 2011 sont enregitrer sur W:\
et les chantier 2012 sur I:\
Je vais tester ton code.
j'aimerai que quand je lance Sub ChercherRépertoire() je puisse enregitrer le fichier au format xlsm dans le répertoire choisi
et également le même fichier avec (fic = Répertoire & "CDE " & Cells(11, 12) & " " & Cells(11, 14) & ".xlsm"), mais au format PDF
à la même place.
Merci de ton aide.
 
Re : Enregistrer classeur XLTM en VBA avec Plusieurs variables

Re,

Pour enregistrer aux 2 formats, il faut faire un truc comme ça :

VB:
Private Sub CommandButton1_Click()
 Répertoire = MyPath & ListBox1.Text & "\"
 fic = Répertoire & "CO " & Cells(11, 12) & " " & Cells(11, 14) & ".xlsm"
 FichierCible = Application.GetSaveAsFilename(fic, Filefilter:="Classeur Excel (*.xlsm), *.xlsm")
 FicPdf = Répertoire & "CO " & Cells(11, 12) & " " & Cells(11, 14) & ".pdf"
If FichierCible <> False Then
  ActiveWorkbook.SaveAs FichierCible
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        FicPdf, Quality:=xlQualityStandard, IncludeDocProperties:= _
        True, IgnorePrintAreas:=False, OpenAfterPublish:=False
 MsgBox "Le fichier a été enregistré sous " & FichierCible
End If
 Unload Me
End Sub

Pour enregistrer sous les 2 disques, il faudrait voir un peu la configuration de ton fichier. Il faut savoir où tu prends ta date de chantier.

Savoir si ce sont les même sous-répertoire etc.... il faut nous en dire plus 😀

Tu peux surement faire un truc du style :

If range("A1") = "2011" then --> enregistrement sous W

Elseif range("A1") = "2012" then --> enregistrement sous I

A+
 
Re : Enregistrer classeur XLTM en VBA avec Plusieurs variables

Bonsoir le Forum et Yaloo
j'ai utiliser ton code pour enregistrer au format PDF

Dim Liste() As String
Sub ChercherRépertoire()
Dim a As Integer
a = 0
'INDIQUER LE CHEMIN DU REPERTOIRE
MyPath = "C:\"
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
' Ignore le répertoire courant et le répertoire contenant le répertoire courant
If MyName <> "." And MyName <> ".." Then
' Utilise une comparaison au niveau du bit pour vérifier que MyName est un répertoire.
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
ReDim Preserve Liste(a)
Liste(a) = MyName
a = a + 1
End If '
End If
MyName = Dir ' Extrait l'entrée suivante
Loop
End Sub
Private Sub CommandButton1_Click()
Répertoire = MyPath & ListBox1.Text & "\"
Fic = Répertoire & "CDE N° " & Cells(11, 12) & " - " & Cells(11, 14) & ".xlsm"
FichierCible = Application.GetSaveAsFilename(Fic, Filefilter:="Classeur Excel (*.xlsm), *.xlsm")
'POUR ENREGISTRER LE FICHIER AU FORMAT PDF
FicPdf = Répertoire & "CDE N°" & Cells(11, 12) & " - " & Cells(11, 14) & ".pdf"
If FichierCible <> False Then
ActiveWorkbook.SaveAs FichierCible
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
FicPdf, Quality:=xlQualityStandard, IncludeDocProperties:= _
True, IgnoredPrinAreas:=False, OpenAfterPublish:=False
MsgBox "Le fichier a été enregistré sous " & FichierCible
End If
Unload Me
End Sub
Private Sub UserForm_Initialize()
Call ChercherRépertoire
ListBox1.List = Liste
End Sub

Message "Erreur d'exécution '1004':
Erreur définie par l'application ou par l'objet
Je n'arrive pas à trouver l'erreur.
Est-ce que je dois activer une référence supplémmentaire, laquelle ?
Merci de votre réponse
 
Re : Enregistrer classeur XLTM en VBA avec Plusieurs variables

Bonsoir Yaloo
Je vois que es le seul intéressé sur mon problème.
je te remercie encore.
voilà ou ca bug

Capture.PNG
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    10 KB · Affichages: 112
  • Capture.PNG
    Capture.PNG
    10 KB · Affichages: 105
- 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

Discussions similaires

Retour