|
Sujet : erreur de compilation caractère incorrect |
| courriertv |
kiki29 a écrit :
Salut, peut-être que l'usage de ces fonctions te faciliteront la tâche ? en les adaptant à ton contexte.
Private Function NomFichierValide(sChaine As String) As Boolean
Dim i As Long
Const sCaracInterdits As String = """*/:<>?[\]|"
NomFichierValide = True
If Len(sChaine) = 0 Then
NomFichierValide = False
Exit Function
End If
For i = 1 To Len(sCaracInterdits)
If InStr(sChaine, Mid$(sCaracInterdits, i, 1)) > 0 Then
NomFichierValide = False
Exit Function
End If
Next i
End Function |
ainsi que :
Option Explicit
Private Declare Function FoldString Lib "kernel32.dll" Alias _
"FoldStringA" (ByVal dwMapFlags As Long, ByVal lpSrcStr As Long, _
ByVal cchSrc As Long, ByVal lpDestStr As Long, ByVal cchdest As Long) As Long
Function SupprimerAccentsAPI(ByVal sStr As String) As String
Dim i As Long
SupprimerAccentsAPI = Space(Len(sStr))
For i = 0 To (Len(sStr) - 1) * 2 Step 2
FoldString &H40, StrPtr(sStr) + i, 1, StrPtr(SupprimerAccentsAPI) + i, 1
Next i
End Function
|
ou
Function SupprimerAccents(ByVal sChaine As String) As String
Dim sTmp As String, i As Long, p As Long
Const sCarAccent As String = "ÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöùúûüýÿ"
Const sCarSansAccent As String = "AAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy"
sTmp = sChaine
For i = 1 To Len(sTmp)
p = InStr(sCarAccent, Mid(sTmp, i, 1))
If p > 0 Then Mid$(sTmp, i, 1) = Mid$(sCarSansAccent, p, 1)
Next i
SupprimerAccents = sTmp
End Function |
|
Merci des scripts à conserver précieusement, plus qu'utiles.
Bonne semaine à vous tous.
David |
| courriertv |
kiki29 a écrit :
Salut, peut-être que l'usage de ces fonctions te faciliteront la tâche ? en les adaptant à ton contexte.
Private Function NomFichierValide(sChaine As String) As Boolean
Dim i As Long
Const sCaracInterdits As String = """*/:<>?[\]|"
NomFichierValide = True
If Len(sChaine) = 0 Then
NomFichierValide = False
Exit Function
End If
For i = 1 To Len(sCaracInterdits)
If InStr(sChaine, Mid$(sCaracInterdits, i, 1)) > 0 Then
NomFichierValide = False
Exit Function
End If
Next i
End Function |
ainsi que :
Option Explicit
Private Declare Function FoldString Lib "kernel32.dll" Alias _
"FoldStringA" (ByVal dwMapFlags As Long, ByVal lpSrcStr As Long, _
ByVal cchSrc As Long, ByVal lpDestStr As Long, ByVal cchdest As Long) As Long
Function SupprimerAccentsAPI(ByVal sStr As String) As String
Dim i As Long
SupprimerAccentsAPI = Space(Len(sStr))
For i = 0 To (Len(sStr) - 1) * 2 Step 2
FoldString &H40, StrPtr(sStr) + i, 1, StrPtr(SupprimerAccentsAPI) + i, 1
Next i
End Function
|
ou
Function SupprimerAccents(ByVal sChaine As String) As String
Dim sTmp As String, i As Long, p As Long
Const sCarAccent As String = "ÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöùúûüýÿ"
Const sCarSansAccent As String = "AAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy"
sTmp = sChaine
For i = 1 To Len(sTmp)
p = InStr(sCarAccent, Mid(sTmp, i, 1))
If p > 0 Then Mid$(sTmp, i, 1) = Mid$(sCarSansAccent, p, 1)
Next i
SupprimerAccents = sTmp
End Function |
|
Merci des scripts à conserver précieusement, plus qu'utiles.
Bonne semaine à vous tous.
David |
| kiki29 |
Salut, peut-être que l'usage de ces fonctions te faciliteront la tâche ? en les adaptant à ton contexte.
Private Function NomFichierValide(sChaine As String) As Boolean
Dim i As Long
Const sCaracInterdits As String = """*/:<>?[\]|"
NomFichierValide = True
If Len(sChaine) = 0 Then
NomFichierValide = False
Exit Function
End If
For i = 1 To Len(sCaracInterdits)
If InStr(sChaine, Mid$(sCaracInterdits, i, 1)) > 0 Then
NomFichierValide = False
Exit Function
End If
Next i
End Function |
ainsi que :
Function SupprimerAccents(ByVal sChaine As String) As String
Dim i As Long, p As Long
Const sCarAvecAccent As String = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöùúûüýÿ"
Const sCarSansAccent As String = "AAAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy"
For i = 1 To Len(sChaine)
p = InStr(sCarAvecAccent, Mid(sChaine, i, 1))
If p > 0 Then Mid$(sChaine, i, 1) = Mid$(sCarSansAccent, p, 1)
Next i
SupprimerAccents = sChaine
End Function |
ou
Option Explicit
Private Declare Function FoldString Lib "kernel32.dll" Alias _
"FoldStringA" (ByVal dwMapFlags As Long, ByVal lpSrcStr As Long, _
ByVal cchSrc As Long, ByVal lpDestStr As Long, ByVal cchdest As Long) As Long
Function SupprimerAccentsAPI(ByVal sStr As String) As String
Dim i As Long
SupprimerAccentsAPI = Space(Len(sStr))
For i = 0 To (Len(sStr) - 1) * 2 Step 2
FoldString &H40, StrPtr(sStr) + i, 1, StrPtr(SupprimerAccentsAPI) + i, 1
Next i
End Function
|
SupprimerAccents peut demander des ajouts à sCarAvecAccent / sCarSansAccent contrairement à SupprimerAccentsAPI ( ici pour Office 32 bits )
Courriertv : Inutile de fonctionner par psittacisme cela n'apporte rien d'autant plus que le code à évolué depuis. |
| courriertv |
Bonjour à tous,
C'est mon premier post ici, avant, j'ai bien pris le soin de vérifier si je trouvais des réponses ici, il se peut que du fait de mon peu d'expérience, je sois passé à coté.
Je bute sur une macro dont une partie s'exécute de temps en temps mais me renvoie dans 99 % des cas un message d'erreur de compilation avec la mention caractère incorrect.
Si l'un de vous peut m'éclairer, peut être est ce juste dans la manière de lancer la macro? (Je suis un vrai néophyte)
Le but du script est de créer à partir d'un publipostage word un export de chaque feuille (Attestation de sortie) en PDF en le nommant individuellement
Dans un deuxième je chercherais à automatiser l'envoi par mail.
Merci pour vos lumières qui me sortiront de mon impasse.
Voici le script :
Code :
- Sub Impression()
- '
- ' Impression Macro
- '
- '
- NbPage = ActiveDocument.Windows(1).Panes(1).Pages.Count
- For i = 1 To NbPage
- Dim nom
- nom = ActiveDocument.Sections(i).Range.Paragraphs(16).Range.Words(3)
- prenom = ActiveDocument.Sections(i).Range.Paragraphs(17).Range.Words(3)
- ActiveDocument.ExportAsFixedFormat OutputFileName:= _
- "C:\Users\10012055U\Desktop\Test\Attestation Ligue1 " & nom & prenom & ".pdf", _
- ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
- wdExportOptimizeForPrint, From:=i, To:=i, Range:=wdExportFromTo, _
- Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
- CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
- BitmapMissingFonts:=True, UseISO19005_1:=False
- ChangeFileOpenDirectory "C:\Users\10012055U\Desktop\Test\"
-
- Next
-
-
- End Sub
|
David. |