Code VBA - Problème

Bonjour smercier,

Ouvre le fichier situé à l'endroit où il doit être si tout allait bien avec la création des PDF ... va sur le code de la macro ... ajoute ces 2 lignes au début ... sous les "Dim" ...

MsgBox ThisWorkbook.Path
Exit Sub

Fais un pas-à-pas (touche F8) ... un messagebox va s'ouvrir donnant le chemin contenu dans "ThisWorkbook.Path" ... quel est ce chemin ?

Si ce chemin révèle des infos sensibles ... tu peux me le donner en message privé ...

Une fois de plus la touche F8 et la macro va se terminer ... rien ne sert de tout exécuter le code ...

ric

image

Voici le chemin que ça me donne. Si je me fies à ça, c'est ce qui est bon. Sauf que si j'enregistre, ça crée un nouveau dossier (Bon de livraison) dans le dossier (Ecart de tri).

Bonjour smercier,

Je suis passablement embêté ... l'on vient de m'aviser que tu poses la même question sur au moins un autre forum ...

Ne postez pas la même question sur un autre forum pour éviter de faire perdre bêtement du temps aux membres sur un problème qui peut être déjà résolu sur l'autre forum. L'inverse est également valable, si vous avez déjà posé votre question sur un autre forum, ne créez pas un doublon sur ce forum (à moins d'avoir clôturé le sujet sur l'autre forum).

Est-ce que tu avais lu la charte ?

https://forum.excel-pratique.com/excel/a-lire-avant-de-poster-charte-du-forum-et-informations-utiles...

Malheureusement, je vais devoir mettre fin à notre conversation ...

C'est dommage ...

Cordialement ...

ric

Bonjour smercier,

Un dernier mot pour t'informer que la source de ton souci provient très probablement de https ://d.docs.live.net

Il semblerait qu'il faille utiliser ...

    'ouverture d'un fichier par boite FileDialog
'********************************************************************************
    'Declaration d'une variable comme objet FileDialog
    Dim fd As FileDialog

    'Creation d'un objet FileDialog comme un File Picker dialog box.
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

Perso, je n'ai aucune expertise en ce domaine ...

Bonne continuité ...

ric

Bonjour smercier, le forum,

Étant quand même une bonne personne et souvent aussi têtu que peut être un âne ...

Voici ton code qui devrait fonctionner ... si ton fichier est bien dans le dossier ...

BONS DE LIVRAISON\Bon de livraison\Ecart de tri\smercier.xlsm << le nom de ton fichier

Il va créer les sous-dossiers Bon de livraison et Ecart de tri ... avec un résultat donnant cette structure ...

BONS DE LIVRAISON\Bon de livraison\Ecart de tri\ mercier.xlsm << le nom de ton fichier

BONS DE LIVRAISON\Bon de livraison\Ecart de tri\Bon de livraison\

BONS DE LIVRAISON\Bon de livraison\Ecart de tri\Bon de livraison\Ecart de tri\

BONS DE LIVRAISON\Bon de livraison\Ecart de tri\Bon de livraison\Ecart de tri\Smercier_BL N° TestPdf

Le nom du fichier sera ... exemple : le contenu de F2 est Smercier et le contenu de F3 est TestPdf

Sub pdf()
Dim SousDossier As String, NomDossier As String, Dossier As String
Dim test As String
Dim Entrepot_Imp_Rep As String, Entrepot_Rep As String
Dim Fic
' --------------------------------------------------- initialisation des fichiers import et export
    ''Entrepot_Imp_Rep = Entrepot_Rep & "\Import\"
    Entrepot_Imp_Rep = Entrepot_Rep & "\BONS DE LIVRAISON\Bon de livraison\Ecart de tri\"  '' << ici, il faut le chemin où est situé ton fichier Excel  ... (chemin source du fichier Excel) ...
'********************************************************************************
    'Creation d'un objet FileDialog comme un File Picker dialog box.
    Set Fic = Application.FileDialog(msoFileDialogFilePicker)

    With Fic

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

      Dossier = ThisWorkbook.Path & "\" & NomDossier

      On Error Resume Next

      If Dossier = True Then MkDir (Dossier)

      Dossier = Dossier & "\" & SousDossier

      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 With

End Sub

ric

Bonjour smercier, le forum,

Si tu voulais déplacer ton fichier excel dans le premier "BONS DE LIVRAISON" ... il faudrait adapter le chemin source au début du code ainsi ...

Entrepot_Imp_Rep = Entrepot_Rep & "\BONS DE LIVRAISON\"  ' << ici, le chemin source un fois modifié ...

ric

Bonjour,

Je suis désolé, je n'avais pas lu la charte, car mon problème était urgent (pour le travail).

J'avais besoin de trouver une solution rapide, car notre saison d'emballage approche et sans nos bons de livraison, nous ne pouvons pas vendre!

Merci pour ton aide, je fais les tests et te reviens au courant de la journée!

Définitivement, il y a quelque chose qui ne fonctionne pas.

J'ai suivi les étapes et ça me crée encore des sous-sous-dossiers :(

Bonjour smercier,

Mais au moins ça fonctionne sur OneDrive ... n'est-ce pas ?

J'ai suivi les étapes et ça me crée encore des sous-sous-dossiers :(

Les sous-sous-dossiers sont créés une fois ou à chaque exécution de la macro ??

Ce ne serait pas des dossiers créés lors des autres tests ? As-tu bien fait le ménage des mauvais dossiers avant ?

Ici je n'ai pas ce genre de problème ... j'ai même réinstallé OneDrive pour simuler un environnement identique ...

Est-ce que tu es sûr d'avoir suivi toutes les étapes et le lien de ton fichier Exel mène bien dans le bon dossier ?

Pas de doublon ?

N'y a-t-il pas un tech dans ton entreprise pour ce dernier bout ?

ric

Merci, je crois avoir trouvé le problème!

J'ai finalement compris ce que vous disiez par " le fichier doit être dans X dossier". J'ai mis mes fichiers d'origines dans mon dossiers Bons de livraison et désormais, tout est ajusté!

Toutefois, lors de mon enregistrement de fichier, le # du bon de livraison n'apparait toujours pas dans le nom du fichier:

image

Ce qui est plutôt important afin de se retrouver...

Merci beaucoup pour votre aide! Ma boss va être bien heureuse du résultat!

Bonjour smercier,

Ce # du bon de livraison ... où est-il situé dans ton fichier ? Dans quelle cellule ?

Selon le code que tu as fourni au début ... ce numéro n'est-il pas dans Range("F3").Value ??

ric

image

Voilà où il est situé.

Bonjour smercier,

Tu en profites pour faire de la pub ????

Tu n'as pas masqué les coordonnées ...

Selon l'image ... ce serait un vilain champ fusionné ...

F2 et F3 sont bien situés sur la même feuille que les données exportées en PDF ?

Essai ainsi ...

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

ric

Wouhou!

Merci! ça a fonctionné! Et si je veux que le nom du fichier soit simplement: BL No: ****

Est-ce que je dois seulement :

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

Retirer:

Dossier & "\" &

Bonjour smercier,

Non Non, c'est & Range("F2").Text la cellule qui contient "Bon de livraison" qu'il faut enlever ...

Dossier est la variable qui contient le chemin nécessaire, lequel mène au fichier pour l'exportation en PDF ...

& Range("F3").Text quant à lui ... c'est la cellule qui contient le numéro ...

Est-ce que tu as remarqué tout au haut de ce forum ? Cours Excel ... Cours VBA ... etc.

Pour occuper ton temps libre au lieu de regarder des annonces à la télé ...

ric

1
Rechercher des sujets similaires à "code vba probleme"