Enregistrer sous mais écrire le nom du fichier a enregistrer

Bonjour à tous,

J'ai une macro qui m'enregistre automatiquement ma feuille en format pdf avec le nom exacte que je veux, c'est à dire la valeur d'une cellule_Valeur d'une autre cellule. Tout ceci est parfait pour mon application (c'est a dire un appareil unique). voici le code:

Sub enregistrerRU227()
Dim nompdf As String

On Error GoTo erreur

    nompdf = "\\server2016\QUALITE\1 - METROLOGIE\CERTIFICATS\RUGOSIMETRE\RU 227\Certificat\" & Range("A9").Value & "_" & Format([I9], "dd_mm_yy")
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nompdf & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

Exit Sub

erreur:

    MsgBox "Erreur : " & Err.Number & vbLf & Err.Description
End Sub

Cependant, cette fois j'aimerai une macro bouton, ou lorsque j'appuie sur le bouton, il commence l'étape d'enregistrer sans la finir, c'est à dire qu'il va sur le chemin prédéfini \\server2016\QUALITE\1 - METROLOGIE\CERTIFICATS\TAMPON LISSE\ il choisie le fomat .pdf et j'aurai juste à rentrer/taper le nom que je désire pour le fichier.

Je ne sais pas si c'est réalisable. Si non, ben je me démerderai .

Je vous joins la feuille excel en question. Merci d'avance!

Je pense que sa peu bloqué sur le fait qu'on prédéfinisse le .pdf, si sa bloque sur ce sujet on peut passer outre le .pdf et "juste" prédéfinir le chemin pour enregistrer.

Bonjour

as tu essayé avec

Application.FileDialog(msoFileDialogSaveAs)

exemple : enregistrer sous d'un xlsx a adapter en conséquence....

    Dim REP As FileDialog
    Set REP = Application.FileDialog(msoFileDialogSaveAs)
    With REP
        .AllowMultiSelect = False
        .InitialFileName = CurDir 
       .Title = "Choix du dossier" & libdos
        If .Show = -1 Then
           ThisWorkbook.SaveAs Filename:=.SelectedItems(1)
        End If
    End With

fred

Bonjour fred,

Merci pour ta réponse hyper rapide !

Ta macro fonctionne parfaitement, cependant il est possible de prédéfinir un chemin et un type de fichier sans enregistrer le fichier?

Modifier ce qui est entouré sur la photo que je viens de joindre mais automatiquement?

Merci.

capture

Re

pour le chemin initiale ceci par exemple :

au lieu de ceci :

      .InitialFileName = CurDir

mettre par exemple

 .InitialFileName = "C:\Users\PC-Fred-W7\Downloads\SSI F\" 

pour le filtre pdf il faut utiliser

.FilterIndex = XX

mais je ne sais plus quel nombre il faut pour les pdf...

je vais faire une rapide recherche


edit : voici

.FilterIndex = 25

Fred

donc le code complet :

    Dim REP As FileDialog
    Set REP = Application.FileDialog(msoFileDialogSaveAs)
    With REP
        .FilterIndex = 25
        .AllowMultiSelect = False
        .InitialFileName = "C:\Users\PC-Fred-W7\Downloads\SSI F\" 'Mettre ici le chemin avec le nom
       .Title = "blabla"
        If .Show = -1 Then
           ThisWorkbook.SaveAs Filename:=.SelectedItems(1)
        End If
    End With

fred

Merci Fred sa fonctionne pour le .PDF tu es un génie!

Hélas, il ne me prend pas mon chemin :/ \\server2016\QUALITE\1 - METROLOGIE\CERTIFICATS\TAMPON LISSE\

En effet ce fichier excel sera amener à être dans un disque de partage et nous n'avons pas tous la même lettre pour le disque.

Moi le server2016 se trouve en Y: , Mon collègue en Z:

Désolé de te compliqué la vie Comment faire?

pourquoi ne pas uniformisé les lecteurs réseaux ???

pourquoi les lecteurs ne sont pas mappé par GPO serveur ??? ce qui aurait comme avantage que tous les users soient identiques...

sinon peut-être faire un petit code qui vérifie tous les lecteurs réseaux et vérifier que le dossier existe.... de destination existe....

mais est-ce que tous les users pointe sur le même dossier partager sur le serveur ??

fred

ou prévoir un mappage de lecteur commun a tout le monde ...par code ... (pas tester sous VBA)

Dim WshNetwork As Object
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "P:", "\\MaMachineSurLereseau\UnDossierpartage"

fred

Oula trop de chamboulement d'un coup petite boite donc on fait à l'ancienne avec ce qui existe déjà en gros .. (hélas)

Je veux bien le code qui vérifie et trouve la destination oui si tu as

Les users pointe? c'est à dire?

Edit: j'ai pas tout compris a ton dernier code la :/

Bon on va reprendre....

Je veux bien le code qui vérifie et trouve la destination oui si tu as

ca j'ai pas en stock....

pour etre plus clair (enfin peut-etre....)

cette partie de code permet de connecter un lecteur réseau : ( a vérifier....pas tester)

Dim WshNetwork As Object
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "P:", "\\server2016\QUALITE\1 - METROLOGIE\CERTIFICATS\TAMPON LISSE\"

la lettre de lecteur mappé : "P" a adapter à la lettre que tu veux...

le chemin du partage : \\server2016\QUALITE\1 - METROLOGIE\CERTIFICATS\TAMPON LISSE\

ainsi tu es sur que tout le monde travail sur la même lettre de lecteur réseau... (donc traduction du les users pointent tous au meme endroit)

mais si petite société avec peu de users (=> Utilisateurs du reseau), le plus simple est peut-etre de passé sur les quelques postes pour uniformiser les lettres des lecteurs mappés...

perso je refléchi a plus grande échelle.. je m'occupe d'un établissement scolaire...3000 usagers, qui change d'ordi toutes les deux heures... et plus de 1000 machines....donc forcément on réfléchi autrement niveau serveur....

Fred

Merci pour tes explications très complètes !

Je vais tester et je reviens pour dire ce qu'il en est.

Me revoila, message d'erreur suivant : (voir image) 2 eme image

Lorsque je change Le "P:" il m'affiche ça : 1 eme image

Ne t’embête pas sa me suffit amplement le fait qu'il sélectionne directement en .PDF.

Merci beaucoup en tout cas!

capture1 capture2

oui je comprends... en fait on ne peut pas mappé deux lecteurs différentes vers la même destination.....

donc soit on supprime le mappage avant et on refait....

la question est combien de lecteur réseau sont connectés sur chaque utilisateur..??

sinon on revient toujours au fait qu'il faut uniformisé les lettres de lecteur... sur les différents postes informatique...

Fred

[Quote]la question est combien de lecteur réseau sont connectés sur chaque utilisateur..??[/Quote]

Sa dépend des utilisateurs et de leurs responsabilités...

sinon on revient toujours au fait qu'il faut uniformisé les lettres de lecteur... sur les différents postes informatique...

Sur le papier oui... mais la impossible ...

Merci beaucoup pour ton temps en tout cas !

re sinon je viens de faire une petite recherche, pour parcourir tous les lecteurs réseau c'est ceci :

Sub test()
'necessite référence microsoft scripting runtime
 Dim GestionFichier As New Scripting.FileSystemObject
    ' On déclare une variable de type Objet (Qui représentera un lecteur)
    Dim Lecteur As Object
    ' Pour (for) Chaque (Each) Lecteur dans la collection des Lecteurs (Drives)
    For Each Lecteur In GestionFichier.Drives
         ' On affiche la le lettre de lecteur  de cet objet Lecteur (Drive)
        Debug.Print Lecteur.DriveLetter
    Next
    Set GestionFichier = Nothing
End Sub

maintenant il faudrait tester l'existence d'un fichier / dossier qui ne se trouve que dans ce lecteur Réseau....et uniquement celui là... et tour peut-être joué...

Fred

Rechercher des sujets similaires à "enregistrer ecrire nom fichier"