Code VBA - Problème

Bonjour à tous,

Voici le code que j'ai pour enregistrer un fichier PDF dans mon dossier automatiquement:

Sub pdf()

SousDossier = "Ecart de tri"
nomdossier = Application.InputBox("Dossier d'enregistrement", "Enregistrer en PDF....!", "Bon de livraison")

dossier = ThisWorkbook.Path & "/" & nomdossier & "/" & SousDossier & "/"

On Error Resume Next

If dossier = True Then

GetAttr (dossier) And vbDirectory

Else

MkDir (dossier)

End If

ActiveSheet.ExportAsFixedFormat Type:=xltypdf, _
Filename:=dossier & Range("F2").Value & "_" & "BL N°" & " " & Range("F3").Value & ".pdf", _
quality:=xlQualityStandard, ignoreprintareas:=False, _
includedocproperties:=True, _
from:=1, to:=1, _
openafterpublish:=False


Toutefois, lorsque j'ai apporté certaines modifications à mon document, désormais, il crée toujours un sous-dossier: Bon de livraison avec le sous-dossier nommé en "ecart de tri".

J'ai déjà le dossier Bon de livraison, j'ai seulement besoin qu'il enregistre le document dans le sous-dossier approprié. Ça fonctionnait bien avant que je fasses mes modifications.

Quelqu'un peut m'aider svp?

Aussi, j'aimerais que mon (filename) soit nommé seulement: BL N° & Range ("F3"). Si j'efface : dossier & Range ("F2").Value & "_" &, ça ne fonctionne pas.

Merci pour votre aide c'est très apprécié!

Bonjour,

Est-ce que le dossier existe ...

Tout ce qu'il faut ici ...

https://excel-malin.com/codes-sources-vba/vba-verifier-si-dossier-existe/

ric

BOnjour,

Merci pour votre lien, toutefois, Excel est encore un peu du chinois pour moi.

Je n'arrive pas à comprendre les VBA, surtout que celui montré ci-haut a été créer par quelqu'un d'autre.

Bonjour smercier,

S'il n'y a pas un autre forumeur qui passe avant ... je te fais cela demain ... je suis un autre projet en ce moment ...

ric

Sub Save_Workshet_PDF()

ThisWorkbook.ExportAsFixedFormat xlTypePDF, "C:\Users\TonNomUtilisateur\Desktop\" & ThisWorkbook.Name & ".pdf"

End Sub

Je ne sais pas si sa t'aidera mais moi je fais avec cette macro, actuellement elle t'enregistra sur le bureau

Bonjour smercier, le fil, le forum,

Sur ma machine, ton code fonctionne bien ...

Par contre, les "/" m'intriguent et mes connaissances à ce sujet sont manquantes ...

Essai donc ceci : dossier = ThisWorkbook.Path & "\" & nomdossier & "\" & SousDossier & "\"

Au lieu de : dossier = ThisWorkbook.Path & "/" & nomdossier & "/" & SousDossier & "/"

Dis-nous si cela change quelque chose ...

Note : Ton profil mentionne pour la version de Excel : Français, 2205 ... je ne connais pas cette version ...

ric

Je n'avais pas mise à jour la version de excel. j'ai Office 2016.

Je viens de l'essayer, ça ne fonctionne toujours pas, ça me créer toujours le même sous-sous-dossier....

et de plus , il ne prend plus en considération le nom du fichier que je veux:(

Bonjour smercier, le forum,

Voici ton code agrémenté ...

Note : Quelque soit le dossier qui contient ton fichier ... il doit aussi contenir le sous-dossier Dossier d'enregistrement et le sous-sous-dossier "Ecart de tri" ...

Ce qui impose que les sous-dossier et sous-sous-dossier doivent être dans le même emplacement que ton fichier ... c'est ThisWorkbook.Path ... c'est-à-dire : le chemin de mon fichier Excel ...

Exemple : C:\ExcelVba\"ici est mon fichier"

Ce dossier sera construit ainsi : C:\ExcelVba\Bon de livraison\Ecart de tri\

Sub pdf()
Dim SousDossier As String, NomDossier As String, Dossier As String
  SousDossier = "Ecart de tri"
  NomDossier = Application.InputBox("Dossier d'enregistrement", "Enregistrer en PDF....!", "Bon de livraison")

  Dossier = ThisWorkbook.Path & "\" & NomDossier & "\" & SousDossier & "\"

  On Error Resume Next

  If Dossier = True Then
    GetAttr (Dossier) And vbDirectory
  Else
    MkDir (Dossier)
  End If

  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
      Filename:=Dossier & Range("F2").Value & "_" & "BL N°" & _
      " " & Range("F3").Value & ".pdf", _
      Quality:=xlQualityStandard, IgnorePrintAreas:=False, _
      IncludeDocProperties:=True, _
      OpenAfterPublish:=False

End Sub

ric

Bonjour smercier,

Je constate que les dossiers de se créent pas ...

Je reviens ...

ric

Merci Ric pour votre aide.

Toutefois, voici le répertoire des dossiers :

image

Mon dossier d'origine est "BONS DE LIVRAISON" (ci-haut). Le dossier d'enregistrement doit-être : "Bons de livraison" juste après et ensuite j'ai mes sous-dossiers.

Cependant, dans le sous-dossier, il crée toujours les mêmes dossiers "Bon de livraison > Ecart de tri".

Aussi, mon enregistrement de fichier ne prend pas en considération le "range G3" (voir ci-dessous, le fichier enregistrer):

image

N.B. Je voudrais seulement que ça s'enregistre comme : BL N° "Case F3-G3"

Merci beaucoup pour ton aide, c'est vraiment super apprécié!

Bonjour,

Si c'est sur OneDrive ... je ne pourrai pas tester ... je ne veux pas utiliser OneDrive ...

Par contre, ce que j'ai constaté ... à partir du dossier contenant ton fichier ... j'ai dû créer chacun des sous-dossiers indépendamment ...

Si ton fichier excel est dans le dossier Public ... créer "Bon de livraison" ... puis créer "Ecart de tri" ...

Les dossiers et sous-dossiers ne seront créés que s'il n'existe pas ...

Sub pdf()
Dim SousDossier As String, NomDossier As String, Dossier As String
Dim test As String

  NomDossier = Application.InputBox("Dossier d'enregistrement", "Enregistrer en PDF....!", "Bon de livraison")

  SousDossier = "Ecart de tri"

  Dossier = ThisWorkbook.Path & "\" & NomDossier

  On Error Resume Next

  If Dossier = True Then MkDir (Dossier)  ' créer le premier niveau

  Dossier = Dossier & "\" & SousDossier  ' ajouter un second niveau dans la variable

  If Dossier = True Then MkDir (Dossier)    ' créer le second niveau 

  On Error GoTo 0    ' annuler la commande "On error Resume Next"

''' ici il faudra corriger au besoin les cellules contenant les infos sur le nom du fichier créé
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
      Filename:=Dossier & "\" & Range("F2").Value & "_" & "BL N°" & _
      " " & Range("F3").Value & ".pdf", _
      Quality:=xlQualityStandard, IgnorePrintAreas:=False, _
      IncludeDocProperties:=True, _
      OpenAfterPublish:=False

End Sub

ric

Merci, je viens de tester, toutefois, lors de mon enregistrement, ça me dit: incompatibilité de type.

Bonjour smercier,

Clique n'importe où dans le code ... puis frappe la touche "F8" ... le code va avancer d'une ligne ... à nouveau F8 ... doucement ... puis rendu sur l'erreur ... le message va apparaître ... sur quelle ligne l'erreur survient-elle ?

ric

Sub pdf()
Dim SousDossier As String, NomDossier As String, Dossier As String
Dim test As String

  NomDossier = Application.InputBox("Dossier d'enregistrement", "Enregistrer en PDF....!", "Bon de livraison")

  SousDossier = "Ecart de tri"

  Dossier = ThisWorkbook.Path & "\" & NomDossier

  If Dossier = True Then MkDir (Dossier) --Sur cette ligne

  Dossier = Dossier & "\" & SousDossier -- ou sur cette ligne

  If Dossier = True Then MkDir (Dossier)

  On Error GoTo 0

  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
      Filename:=Dossier & "\" & Range("F2").Value & "_" & "BL N°" & _
      " " & Range("F3").Value & ".pdf", _
      Quality:=xlQualityStandard, IgnorePrintAreas:=False, _
      IncludeDocProperties:=True, _
      OpenAfterPublish:=False

End Sub

Bonjour smercier,

ric

Bonjour smercier,

Je présume que les chemins sur Onedrive ... tu peux y créer des dossiers ...

Ces dossiers sont-ils seulement sur Onedrive ? Ou il y a une copie localement sur ta machine avec synchronisation?

Sinon, il y a à cette adresse https://excel-malin.com/codes-sources-vba/creation-dossiers-et-sous-dossiers-en-vba/

Il y a une fonction qui pourrait aider ... il y a la fonction et un peu plus bas ... il y a un exemple comment l'utiliser ...

Est-ce que tu veux tester cela ?

ric

Effectivement, le dossier est uniquement sur le Onedrive afin que tout administrateur puissent y avoir accès.

Je viens d'ouvrir le lien afin d'essayer, et vu je ne connais rien dans tout ça, je préfère ne pas toucher à ce que j'ai déjà. surtout que ce qui fonctionnait au départ, ne fonctionne plus

Bonjour smercier,

Effectivement, le dossier est uniquement sur le Onedrive afin que tout administrateur puissent y avoir accès.

Si tu te rends sur OneDrive ... sur le dossier concerné ... est-ce que tu peux créer des dossiers et sous dossiers manuellement ?

C'est pour savoir si tu as bien les droits en écriture à ces endroits ...

ric

Oui, je peux créer le nombre de dossier et de sous-dossiers que je veux.

Rechercher des sujets similaires à "code vba probleme"