Comment dépasser la limite de 255 caractères
Bonjour voici mon code qui sert a envoyer des courriels d'une maniére automatique à travers outlook qui contiennent les experiences qui manque chaque condidat , j'utilise un modele word où j'ai mis une variable 'VariableToReplace' cette variable doit etre remplacé par la variable experience dans le code , (le choix du modèle se fait à partir d'un user form wordApp.Documents.Open "txtExcelDatasheet = vaFiles(i)" (txtExceDatasheet c'est le chemin de mon fichier word ))
une fois la variable 'VariableToReplace' est remplacé , on enregistre une copie PDF du courriel et apres on envoie le courriel avec le fichier PDF en piéce jointe.
mon probléme c'est que j'arrive pas à compiler à cause de ce message d'erreur (Next without for ) en plus Word n'accepte pas plus de 255 caractéres alors que parfois je dois dèpasser cette limite.
est ce que quelqu'un peut m'aider ?
vos suggestions seront les bienvenue
voici mon code ;
Private Sub CommandButton3_Click()
Dim OutApp As Object
Dim OutMail As Object
Dim i As Integer
Dim Exp As Byte
Dim wordDocument As Word.Document
Dim experience As String
Dim experience_part As String
Dim wordApp As Word.Application
Dim bodymessage(0 To 9) As String
Dim fr(1 To 10) As String
Set wordApp = CreateObject("word.Application")
Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")
On Error GoTo cleanup
For i = 8 To Sheets("SBR").Cells(ActiveSheet.Rows.Count, 1).End(xlUp).row
If Sheets("SBR").Cells(i, 44) = "OUT" And ActiveSheet.Cells(i, 1) <> "" Then
wordApp.Documents.Open "txtExcelDatasheet = vaFiles(i)"
Set wordDocument = wordApp.ActiveDocument
bodymessage(0) = ""
bodymessage(1) = ""
bodymessage(2) = ""
fr(1) = ""
fr(2) = ""
fr(3) = ""
If Sheets("SBR").Cells(i, 3).Text Like "?*@?*.?*" And _
LCase(Cells(i, "AR").Value) = "OUT" Then
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
' .SentOnBehalfOfName = Sheets("Screening-email results").Range("T14")
.To = ActiveSheet.Cells(i, 3).Text
.Subject = " Screening results / "
.Attachments.Add "C:\Users\xx\Desktop\TEST\" & ActiveSheet.Cells(i, 1).Value & ", " & ActiveSheet.Cells(i, 2).Value & ".pdf", 17
For Exp = 1 To 10
Select Case Exp
Case 1 To 10
'Abilities/ capacities'
If LCase(Cells(i, 23 + Exp).Text) = "DNM" And Sheets("SBR").Cells(4, 23 + Exp) = "Educ" Then
bodymessage(Exp - 1) = vbNewLine & " ** " & Sheets("Process Info").Range("B19").Text
fr(Exp) = vbNewLine & " ** " & Sheets("Process Info").Range("E19").Text
End If
If LCase(Cells(i, 23 + Exp).Text) = "DNM" And Sheets("SBR").Cells(4, 23 + Exp) = "EX1" Then
bodymessage(Exp - 1) = vbNewLine & " ** " & Sheets("Process Info").Range("B25").Text
fr(Exp) = vbNewLine & " ** " & Sheets("Process Info").Range("E25").Text
End If
If LCase(Cells(i, 23 + Exp).Text) = "DNM" And Sheets("SBR").Cells(4, 23 + Exp) = "EX2" Then
bodymessage(Exp - 1) = vbNewLine & " ** " & Sheets("Process Info").Range("B26").Text
fr(Exp) = vbNewLine & " ** " & Sheets("Process Info").Range("E26").Text
End If
If LCase(Cells(i, 23 + Exp).Text) = "DNM" And Sheets("SBR").Cells(4, 23 + Exp) = "EX3" Then
bodymessage(Exp - 1) = vbNewLine & " ** " & Sheets("Process Info").Range("B27").Text
fr(Exp) = vbNewLine & " ** " & Sheets("Process Info").Range("E27").Text
End If
Next Exp
experience = bodymessage(0) & bodymessage(1) & bodymessage(2) & fr(0) _
& fr(1) & fr(2)
If Len(experience) > 200 Then
Do While Len(experience) >= 200
experience_part = Left(experience, 200) & "VariableToReplace"
experience = Right(experience, Len(experience) - 200)
wordDocument.Content.Find.Execute FindText:="VariableToReplace", ReplaceWith:=experience_part, Replace:=wdReplaceAll
Loop
wordDocument.Content.Find.Execute FindText:="VariableToReplace", ReplaceWith:=experience, Replace:=wdReplaceAll
Else
wordDocument.Content.Find.Execute FindText:="VariableToReplace", ReplaceWith:=experience, Replace:=wdReplaceAll
End If
wordDocument.Content.Find.Execute FindText:="VariableGroupe", ReplaceWith:=ActiveSheet.Cells(i, i + 1).Text, Replace:=wdReplaceAll
wordDocument.SaveAs "C:\Users\xx\Desktop\TEST" & ActiveSheet.Cells(i, 1).Value & ", " & ActiveSheet.Cells(i, 2).Value & ".pdf", 17
'set placeholder variable back
wordDocument.Content.Find.Execute FindText:=experience, ReplaceWith:="VariableToReplace", Replace:=wdReplaceAll
'End If
Next i
cleanup:
Set OutApp = Nothing
Application.ScreenUpdating = True
Call wordDocument.Close(Word.wdDoNotSaveChanges)
wordDocument.Save
wordDocument.Close
Set wordDocument = Nothing
Call wordApp.Quit
End Subbonjour
si j'ai bien compris tu te sert de Word j'utilise un modele word
ici c'est un Forum Excel.
mais peut être que je me trompe dans ce cas envoi un fichier test que l'on puisse regarder
Mets le texte dans un onglet excel, sur plusieurs lignes si besoin.
Tu exportes alors en pdf et envoies par mail.
Le remplacement de champs variables est encore plus facile avec excel !
MERCI BEAUCOUP POUR VOTRE INITIATIVE
la taille maximum autorisée est 300 kio actuellement avez vous des idées ?
bonjour
pour mettre a disposition un fichier plus de 300ko utilise
et met ensuite le lien de Téléchargement dans le post
fred
Merci Fred ,
Voici le lien du mon fichier excel ;
https://www.cjoint.com/c/FCdsuoLRrwn
l'accès à la user from se fait à partir de la feuille send results , essayer de créer un Fichier word qui contient 'VariableToReplace' sur votre bureau et l'enregistrer sous le format (Word 97-2003 Document )
je vous ai déja préparé un exemple qui se trouve dans la feuille SBR avec un nom , prenom , email et les experiences qui se trouvent dans la partie screening (''X'' to ''AG'') ce condidat doit recevoir un courriel avec les experiences qui lui manquent ; exemple pour EX1 , EX4 il a eu un DNM (Does not meet) donc la décision est OUT (''AR''), le sysétme devrait chercher la définition de l'ex1 et ex2 qui se trouvent dans la feuille (Process Info)
--> aussi le choix du path se fait a partir du boutton browse
Merci beaucoup pour votre temps