|
|
|
|
Bonjour,
Je voudrais pouvoir enregistrer un programme Excel en automatique, sous un autre nom et la condition suivante :
- L’utilisateur est sur un ordi relié à un serveur dont l’enregistrement doit être effectué sous le chemin « L:\Dossier utilisateurs\Archives offres »
- L’utilisateur est sur un ordi autonome (dans ce cas, l’enregistrement se fera directement dans C:\)
A ce jour, j’arrive en un clic à enregistrer automatiquement le programme sous un autre nom grâce à la macro ci-dessous :
Sub enregistreroffre()
If Sheets("Offre").Range("AO19") = "2" Then Application.Run "miseenpageimpclient"
Sheets("Offre").Select
Sheets("Offre").Copy
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A17").Select
Dim Chemin
Chemin = "C:\"
Dim MonFichier
MonFichier = Chemin & Range("AH1").Value & "_" & Range("AH2").Value & ".xls"
ActiveWorkbook.SaveAs Filename:=MonFichier, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
MsgBox ("Fichier créé dans C:\")
End Sub
Mon problème est que par défaut, l’enregistrement se fait dans C:
Est-il possible de créer une 2ème macro similaire :
Sub enregistreroffreserveur()
If Sheets("Offre").Range("AO19") = "2" Then Application.Run "miseenpageimpclient"
Sheets("Offre").Select
Sheets("Offre").Copy
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A17").Select
Dim Chemin
Chemin = " L:\Dossier utilisateurs\Archives offres"
Dim MonFichier
MonFichier = Chemin & Range("AH1").Value & "_" & Range("AH2").Value & ".xls"
ActiveWorkbook.SaveAs Filename:=MonFichier, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
MsgBox ("Fichier créé dans L:\Dossier utilisateurs\Archives offres ")
End Sub
Dans ce cas, quelle macro faire pour que si l’utilisateur n’a pas le chemin « L:\Dossier utilisateurs\Archives offres » prend la macro « Sub enregistreroffre() »
Dans l’esprit Excel ma requête est :
Si(L:\Dossier utilisateurs\Archives offres=VRAI ; Sub enregistreroffreserveur()
; Sub enregistreroffre())
Si vous avez une solution, merci d’avance…
Je réponds OUI mais je pense que tu devras tester l'existence du fichier
|
A quel endroit se produit l'erreur?
|
Bonjour,
Function dire_lecteur()
Dim fso As Object
Dim lecteur As Object
Set fso = CreateObject("Scripting.FileSystemObject")
For Each lecteur In fso.Drives
Select Case lecteur.drivetype
Case 2
dire_lecteur = "local"
Exit For
Case 3
dire_lecteur = "reseau"
Exit For
End Select
Next
End Function
pouur essayer la fonction sub test msgbox lire_lecteur end if Cordialement, Michel |
Tu dis :
|
Bonjour,
Sub EnregistrerOffre()
Dim Chemin As String, MonFichier As String
Dim NomDossier As String, Message As String
If Sheets("Offre").Range("AO19") = "2" Then
Application.Run "miseenpageimpclient"
End If
Sheets("Offre").Select
Sheets("Offre").Copy
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A17").Select
Chemin = " L:\Dossier utilisateurs\Archives offres"
MonFichier = Chemin & Range("AH1").Value & "_" & Range("AH2").Value & ".xls"
NomDossier = Left(MonFichier, InStrRev(MonFichier, "\"))
If DossierExiste(NomDossier) Then
ActiveWorkbook.SaveAs Filename:=MonFichier, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Message = "Fichier créé dans L:\Dossier utilisateurs\Archives offres\"
Else
Chemin = "C:\"
MonFichier = Chemin & Range("AH1").Value & "_" & Range("AH2").Value & ".xls"
ActiveWorkbook.SaveAs Filename:=MonFichier, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Message = "Fichier créé dans C:\"
End If
MsgBox Message
End Sub
'
Function DossierExiste(ByVal NomDossier As String) As Boolean
Dim objFS As Object, objDossier As Object
Set objFS = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set objDossier = objFS.GetFolder(NomDossier)
If Error = "Chemin d'accès introuvable" Then
DossierExiste = False
Else
DossierExiste = True
End If
End Function
'
Lupin |
La suggestion de Lupin fonctionne. Merci beaucoup.
|