Plante d'un code

Signaler
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour à tous,

J'ai créer un code pour sauvegarder une feuille excel d'un fichier après conversion en pdf sous un chemin d'accés bien précis.
J'ai défini auparavent trois variables: Refbon, Nomsave et Chemin qui définissent le nom du fichier selon certaines valeurs de cellules et l'endroit où le fichier sera enregistré.
Le problème est que mon code plante au moment de la sauvegarde. Par contre ci je remplace ma variable par le chemin en fixe dans le code, je n'ai pas de problème de plantage.
Est ce que quelqu'un aurais une idée?
Merci d'avance pour votre aide.
Voici mon code:
Dim Refbon As String
Dim Chemin As String
Dim Nomsave As String


Refbon = Sheets("Bon de Commande BL").Range("F13").Value & " " & Sheets("Bon de Commande BL").Range("G7").Value & " " & Sheets("Bon de Commande BL").Range("G8").Value & ".pdf"
Chemin = "S:\BusinessControl\Department\BUDGET CDES USINE\BUDGET\Commandes 2013\Responsable technique"
Nomsave = Chemin & Refbon

Sheets("Bon de Commande BL").Select
Sheets("Bon de Commande BL").Copy

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Nomsave, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True

Application.DisplayAlerts = False

ActiveWindow.Close

End Sub

6 réponses

Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
6
Bonjour,

Et ton code, il plante avec quel message d'erreur?
Quand tu postes, merci d'utiliser la coloration syntaxique pour ton code (3eme icone en partant de la droite) et de sélectionner le bon forum (vba)

Si tu affiches ta variable nomsave est-ce qu'elle a la fonne forme?


L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut

Catégorie modifiée Visual Basic 6 > Langages dérivés > VBA

Plus précisément, que vaut Refbon ?

Merci d'utiliser le coloriage syntaxique la pochaine fois quand tu colles du code (3ème icone à droite) = plus lisible.

Amélioration de présentation et de simplification d'écriture, donc de clarté :
With Sheets("Bon de Commande BL")
    Refbon = .Range("F13").Value & " " & _
             .Range("G7").Value & " " & _
             .Range("G8").Value & ".pdf" 
End With

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Au cas où ...
Méthode de débogage :
- F9 sur une ligne de code; elle change de couleur
Le programme s'y arrêtera au prochain passage.
Lors de l'arrêt, survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement
Bonjour Jack et lolokum,

Merci pour vos msg. C'est la première fois que je fais cette démarche et je vous promets de repecter les codes a respecter dans ces forums.
Grace à toi jack j'ai pu voir que j'avais un prb dans une variable. en effet, la cellule F13 contenait un caractére spécial "/" qui n'est pas accepté lors des sauvegardes!!!!
Autre petite question: je souhaite en plus de de sauvegarder ce document pdf, l'envoyer par mail dont l'adresse mail ce trouve dans la cellule G13 de ma feuille excel.
Auriez vous une idée?

Merci d'avance
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Tout dépend de ta version de Excel.

Un truc simple :
Option Explicit
Sub EnvoiMail()
    If IsNull(Application.MailSession) Then
        Application.MailLogon "toto@monFAI.fr", "secret", False
    End If
    If Not IsNull(Application.MailSession) Then
        ActiveWorkbook.SendMail Recipients:="kiki@ailleurs.fr", _
                                Subject:="Test envoi classeur", _
                                ReturnReceipt:=True
    End If
End Sub
Même pas sûr qu'il faille ouvrir une session.

Rappelle toi que les logiciels de mails sont sécurisés et qu'il faudra, à un moment ou un autre, valider l'interaction entre Excel et ton gestionnaire de mails.
Sinon, il faut s'adresser directement au serveur de mail et c'est largement plus complexe.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
PS : Ca enverra le classeur entier en pièce jointe.