Enregistrer sous format XLSB et variable du chemin
Bonjour,
Je souhaiterai enregistrer mon fichier xlsm, via une macro reprenant 2 variables : code article & ligne de conditionnement.
Ça j'ai réussi, mais je rencontre 2 problèmes :
- Le premier problème est qu'elle enregistre sous format PDF, alors que je souhaiterai sous format XLSB.
- Le second problème concerne le dossier cible. Actuellement le chemin est U:\Ordo\Dossiers individuels\1 Guillaume\Approvisionnements\Book Nomenclature
Peut-on faire un codage indiquant si erreur du chemin U, alors chemin V?
Merci à vous,
Guillaume
bonjour AhAh
voici le code que j'utilise pour la sauvegarde automatique de mes fichier
Private Sub Workbook_Open()
Dim Nomcomplet
Dim chemin
Dim dossier
Dim path
chemin = Workbooks(ActiveWorkbook.Name).path
'****************direction du dossier de sauvegarde*****************************
chemin = chemin & "nom du dossier"
On Error Resume Next
ChDir chemin
'***************resulat de 'ChDir = "C:\Users\Desktop\nom du dossier****************"
On Error GoTo 0
'*****attachement de la feuille au chemin*******
dossier = chemin & "nom du classeur"
'-***********attachement de l'extention**************
path = dossier
Nomcomplet = path & ".xlsb"
'***********************résulat finale '"C:\Users\Desktop\dossier\classeur.xlsb*********************
ThisWorkbook.SaveCopyAs Nomcomplet
end sub
en esprant avoir répondu a ta question
formule en module 2
Bonjour,
xlsb est un fichier Excel, s'enregistre avec SaveAs comme tous les classeurs.
Si tu veux n'enregistrer ainsi qu'une feuille, tu commences par la copier dans un nouveau classeur :
ActiveSheet.Copy
la feuille étant copiée dans un nouveau classeur, devenu le classeur actif, tu peux poursuivre :
ActiveWorkbook.SaveAs sFilename, xlExcel12
Pour ton chemin, tu peux essayer de voir si ça fonctionne avec un chemin réseau : \\Ordo\Dossiers...
(s'il s'agit d'un chemin réseau, comme il semble...)
Cordialement.
Bonjour,
Merci pour votre aide.
Mon 1er problème est résolu grâce à vous, à savoir l'enregistrement au format XSLB.
En revanche je n'ai pas réussi à appliquer une macro changeant le chemin d'enregistrement en fonction du serveur...
A bientôt,
Guillaume
bonjour ahah
Essaye le code ci dessous bien sur il faut que tu le personnalise
ce code me permet de récupérer les adresse réseau ainsi que le nom des dossier et les nom des classeur
Option Explicit
Declare Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean
Declare Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean
Dim NbFichiers As Long, NbDossiers As Long
Dim Dep As Currency, fin As Currency, Freq As Currency
Private Sub Liste(ByVal sChemin As String, ByVal bSousDossier As Boolean)
Dim FSO As Object, Dossier As Object, SousDossier As Object, FICHIER As String
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dossier = FSO.GetFolder(sChemin)
FICHIER = Dir$(sChemin & "\*.*")
Do While Len(FICHIER) > 0
NbFichiers = NbFichiers + 1
With ShFichiers
.Cells(NbFichiers, 1) = sChemin
.Cells(NbFichiers, 2) = FICHIER
End With
FICHIER = Dir$()
Application.StatusBar = "Dossiers : " & NbDossiers & " Fichiers : " & NbFichiers
Loop
If bSousDossier Then
For Each Dossier In Dossier.SubFolders
NbDossiers = NbDossiers + 1
Liste Dossier.path, True
Next Dossier
End If
Set Dossier = Nothing
Set FSO = Nothing
End Sub
Sub Tst()
Dim sChemin As String
sChemin = ThisWorkbook.path
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = sChemin & "\"
.Title = "Sélectionner un Dossier"
.AllowMultiSelect = False
.InitialView = msoFileDialogViewDetails
.ButtonName = "Sélection Dossier"
.Show
If .SelectedItems.Count > 0 Then
ShFichiers.Cells.Clear
Application.ScreenUpdating = False
Application.StatusBar = ""
DoEvents
QueryPerformanceCounter Dep
NbFichiers = 0: NbDossiers = 0
Liste .SelectedItems(1), True
Application.ScreenUpdating = True
QueryPerformanceCounter fin: QueryPerformanceFrequency Freq
Application.StatusBar = "Dossiers : " & NbDossiers & " Fichiers : " & NbFichiers & " / " & Format(((fin - Dep) / Freq), "0.00 s")
End If
End With
'Range("A1:B32").Copy
Range("A1:B1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("BD").Select
Range("A" & Range("A65536").End(xlUp).Row + 1).PasteSpecial (xlPasteValues)
Sheets("recup fichier").Select
End Sub
ensuite j'utilise le code ci-desous pour ouvrir les fichier avec une petite liste déroulante
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
CHEMIN = Range("A3")
On Error Resume Next
ChDir CHEMIN
On Error GoTo 0
Dossier = CHEMIN & "\" & Range("A4")
path = Dossier
Application.ScreenUpdating = False
Workbooks.Open Filename:=path, ReadOnly:=True
End Sub
Bonjour,
Si V: et U: sont des lecteurs réseaux, ils remplacent une adresse réseau. S'ils permettent d'atteindre le même dossier partagé selon les personnes, c'est que cette adresse réseau est la même.
Il faut donc remplacer V: et U: par l'adresse commune qu'ils représentent.
Actuellement tu as : \Ordo\Dossiers individuels\1 Guillaume\Approvisionnements\Book Nomenclature
, précédé de U: ou V: que tu enlèves et remplaces par l'adresse réseau qui se présente sous la même forme d'arborescence de dossiers (séparés par des \) et qui débute par : \\
Pour affecter une lettre de lecteur à une adresse réseau on passe par l'Explorateur Windows : menu Outils > Connecter un lecteur réseau... Vas-y donc voir !
[ ou plus simple, tu demandes à ton administrateur réseau : il te le fournira ! ]
Cordialement.