• Initiateur de la discussion Initiateur de la discussion RONIBO
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

RONIBO

XLDnaute Impliqué
Bonjour,

J'ai un macro qui me permet de créer une copie de mes factures en PDF,

Il s'enregistre dans un dossier bien précis et se nomme automatiquement grâce à des données qui se trouve dans des cellules.

Voici les cellules que j'utilise pour créer les fichier :

A12:C12 = pour le nom du client
G10 = pour le numéro de facture
F14:G14 = pour le nom du chantier

Mon problème est que parfois (en général c'est une erreur de frappe) je saisie des caractères comme ; ! / etc
dans les cellules A12:C12 et F14:G14

Lorsque je veux créer le fichier PDF, je bloque sur cette ligne du macro : If Dir(LePath) <> "" Then
Pourquoi? Car dans Windows on ne peut pas nommer un fichier avec tel caractères.

Pour éviter se problème, j'aimerais pouvoir afficher un msgbox lorsque un ou plusieurs caractères saisie dans les cellules citées au dessus (A12:C12 et F14:G14)

Voici un exemple de msgbox : Veuillez vérifier le nom du client et du chantier

Je vous mets un fichier pour mieux comprendre.

Merci d'avance et à bientôt

Ronibo
 

Pièces jointes

Dernière édition:
Re : Erreur dans code suite aux caractères ; : ?

bonsoir,

exemple pour tester un nom de fichier (ou autres caractères !?)

Code:
NomFich$ = "mon fichier < /"

For I = 1 To 9
  Car$ = Choose(I, "<", ">", "\", "/", "|", "?", ":", "*", Chr(34))
  If InStr(NomFich$, Car$) Then MsgBox "le caractère suivant est interdit !" & vbLf & Car$, vbCritical, "Info"
Next
 
Dernière édition:
Re : Erreur dans code suite aux caractères ; : ?

Bonjour,

Merci pour le code,

Mais je n'arrive pas à le faire fonctionner
Voici s'que j'ai fait :
Sub BoutonImpressionPDF()
Dim LePath$
Dim Chemin$

Dim NomFich$

Range("F1:G1").Select
Chemin = "C:\Users\" & Application.UserName & "\Desktop\Factures - Devis en PDF"
On Error Resume Next
ChDir (Chemin)
If Err Then MkDir Chemin
On Error GoTo 0
LePath = Chemin & "\" & [F10] & [G10] & " - " & [A12] & " (" & [F14] & ").pdf"
If [G10] = "" Or [A12] = "" Or [F14] = "" Then Call MessageCelluleVide: Exit Sub
LePath = "C:\Users\" & Application.UserName & "\Desktop\Factures - Devis en PDF\" & [F10] & [G10] & " - " & [A12] & " (" & [F14] & ").pdf"
If Dir(LePath) <> "" Then If MsgBox("Un fichier nommé '" & LePath & "' " & "existe déjà à cet emplacement." & vbCr & _
"Voulez-vous le remplacer ?", vbYesNo + vbQuestion, "Voulez-vous écraser le fichier PDF existant ?") = vbNo Then Exit Sub
On Error Resume Next
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=LePath, OpenAfterPublish:=True

NomFich$ = "mon fichier < /"
For I = 1 To 9
Car$ = Choose(I, "<", ">", "\", "/", "|", "?", ":", "*", Chr(34))
If InStr(NomFich$, Car$) Then MsgBox "le caractère suivant est interdit !" & vbLf & Car$, vbCritical, "Info"
Next
End Sub

Sub MessageCelluleVide()
MsgBox "Veuillez compléter les cellules suivantes afin d'obtenir le fichier PDF :" & vbCr & _
"- Numéro du document" & vbCr & _
"- Nom du client" & vbCr & _
"- Nom du chantier", vbInformation, "Attention"
End Sub
 
Re : Erreur dans code suite aux caractères ; : ?

re

il s'agit d'un exemple avec NomFich$ = "mon fichier < /" pour voir s'afficher le message !
mais NomFich$ doit bien entendu être le nom de ton fichier perso !
ensuite cet exemple doit être placer dans une fonction pour avoir une réponse et la tester !
exemple:
Code:
Sub BoutonImpressionPDF() '< dans cette routine 
'...
'...ton code
'...
'...il faut avoir le Nom de ton fichier seul, exemple ici NomFich$
'...
'.. puis appel de la fonction
If FTestNomFichOK(NomFich$) = False Then 
   'ici à toi de voir ce que tu souhaites pour la suite puisque le nom n'est pas correcte !
   '...
End If 
'...
'...
End Sub


' la Fonction en question
Function FTestNomFichOK(NomFich$) As Boolean
FTestNomFichOK = True
For I = 1 To 9
 Car$ = Choose(I, "<", ">", "\", "/", "|", "?", ":", "*", Chr(34))
 If InStr(NomFich$, Car$) Then MsgBox "le caractère suivant est interdit !" & vbLf & Car$, vbCritical, "Info": FTestNomFichOK = False
Next
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
521
  • Question Question
XL 2019 B
Réponses
10
Affichages
658
Réponses
15
Affichages
788
Réponses
10
Affichages
567
Retour