Probleme boucle PDF

bonjour , la macro que j'ai developee elle permet a creer un fichier PDF a partir d'un template ( j"utilise l"object wordapp) et elle remplace la variable par les experences qui manque pour chaque condidat et apres elle le enregistre le fichier pour chaque condidat : mon probleme c"est que j"arrive a creer les fichiers pour chaque condidats mais , la macro prend toujours le premier resultat pour tout le monde voici mon code

merci pour votre temps

Public Sub Edit_Word_Document()
    Dim wordApp As Word.Application
    Set wordApp = CreateObject("word.Application")

    Dim wordDocument As Word.Document
     '''change path

    Dim experience As String
    '''Change this part, loop through excel, replace mytext

    Dim i As Integer

    For i = 2 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row

        bodymessage = ""
        bodymessage1 = ""
        bodymessage2 = ""
        bodymessage3 = ""

        If LCase(ActiveSheet.Cells(i, 8)) = "dnm" And ActiveSheet.Cells(i, 1) <> "" Then
            wordApp.documents.Open "C:\Users\riadh.said@cic.gc.ca\Desktop\Template.docx"

            Set wordDocument = wordApp.ActiveDocument

            Set wordDocument = wordApp.ActiveDocument

                 If LCase(Cells(i, "D").Value) = "dnm" Then

                    bodymessage = vbNewLine & Sheets("lien").Range("B9").Value

                End If

         If LCase(Cells(i, "E").Value) = "dnm" Then

                bodymessage1 = vbNewLine & Sheets("lien").Range("B10").Value

             End If

            If LCase(Cells(i, "F").Value) = "dnm" Then

                bodymessage2 = vbNewLine & Sheets("lien").Range("B11").Value

             End If

            If LCase(Cells(i, "G").Value) = "dnm" Then

                bodymessage3 = vbNewLine & Sheets("lien").Range("B12").Value

              End If

              experience = bodymessage & bodymessage1 & bodymessage2 & bodymessage3

            wordDocument.Content.Find.Execute FindText:="VariableToReplace", ReplaceWith:=experience, Replace:=wdReplaceAll

            wordDocument.SaveAs "C:\Users\riadh.said@cic.gc.ca\Desktop\" & ActiveSheet.Cells(i, 1).Value & ", " & ActiveSheet.Cells(i, 2).Value & ".pdf", 17

        End If

    Next

End Sub

Bonjour

j"ai un tableau il contient nom , prenom , email , experience 1 experience 2 experience 3, experience 4, Decison

donc chaque condidat on l'evalue selon ces experiences si il aura un seul (DNM = DOES NOT MEET ) dans l'une de ces experiences la decision sera DNM

apres on envoie un email pour chaque condidat qui contient les experiences qui lui manque ( toutes les experiences sont ecrites dans une une autre feuille )

j'ai utilise une variable dans un document world qui remplace ces experiences apres je la convertit en PDF

donc mon probleme c'est que j'aurais les resultats et j'arrive a creer les fichiers pdf mais il contiennent les memes resultats .

-- j"ai un probleme de boucle quelque part

voici mon code

Public Sub Edit_Word_Document()
 Dim i As Integer
 Dim wordDocument As Word.Document
 Dim experience As String
 Dim wordApp As Word.Application

 Set wordApp = CreateObject("word.Application")

 For i = 2 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row

    If LCase(ActiveSheet.Cells(i, 8)) = "dnm" And ActiveSheet.Cells(i, 1) <> "" Then
         wordApp.documents.Open "C:\Users\riadh.said@cic.gc.ca\Desktop\Template.docx"
         Set wordDocument = wordApp.ActiveDocument

     bodymessage = ""
     bodymessage1 = ""
     bodymessage2 = ""
     bodymessage3 = ""

         If LCase(Cells(i, "D").Value) = "dnm" Then bodymessage = vbNewLine & Sheets("lien").Range("B9").Value
         If LCase(Cells(i, "E").Value) = "dnm" Then bodymessage1 = vbNewLine & Sheets("lien").Range("B10").Value
         If LCase(Cells(i, "F").Value) = "dnm" Then bodymessage2 = vbNewLine & Sheets("lien").Range("B11").Value
         If LCase(Cells(i, "G").Value) = "dnm" Then bodymessage3 = vbNewLine & Sheets("lien").Range("B12").Value

         experience = bodymessage & bodymessage1 & bodymessage2 & bodymessage3

         wordDocument.Content.Find.Execute FindText:="VariableToReplace", ReplaceWith:=experience, Replace:=wdReplaceAll

         wordDocument.SaveAs "C:\Users\riadh.said@cic.gc.ca\Desktop\" & ActiveSheet.Cells(i, 1).Value & ", " & ActiveSheet.Cells(i, 2).Value & ".pdf", 17

     End If

Next i

End Sub

Bonjour Saïd

Normal, tu ne mets jamais à jour ton "experience"

bodymessage = vbNewLine & Sheets("lien").Range("B9").Value

bodymessage = la cellule B9 systématiquement, même chose pour les autres

experience = bodymessage & bodymessage1 & bodymessage2 & bodymessage3

ta variable "experience" = tes bodymessage

A+

je dois l"initialiser a 0 ?

Re,

Nous ne savons pas comment est fait ton tableau, donc impossible de te donner la bonne réponse

A+

jpourrais vs joindre le fichier

comment faire??

Bonjour,

Ci dessous ... ton code à tester ...

Public Sub Edit_Word_Document()
Dim i As Integer
Dim wordApp As Word.Application
Dim wordDocument As Word.Document                 '''change path
Dim experience As String                          '''Change this part, loop through excel, replace mytext

  Set wordApp = CreateObject("Word.Application")

  For i = 2 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
      bodymessage = ""
      bodymessage1 = ""
      bodymessage2 = ""
      bodymessage3 = ""

      If LCase(ActiveSheet.Cells(i, 8)) = "dnm" And ActiveSheet.Cells(i, 1) <> "" Then

          wordApp.documents.Open "C:\Users\riadh.said@cic.gc.ca\Desktop\Template.docx"

          Set wordDocument = wordApp.ActiveDocument

                If LCase(Cells(i, "D").Value) = "dnm" Then
                  bodymessage = vbNewLine & Sheets("lien").Range("B" & i + 7).Value
                End If

                If LCase(Cells(i, "E").Value) = "dnm" Then
                  bodymessage1 = vbNewLine & Sheets("lien").Range("B" & i + 8).Value
                End If

                If LCase(Cells(i, "F").Value) = "dnm" Then
                  bodymessage2 = vbNewLine & Sheets("lien").Range("B" & i + 9).Value
                End If

                If LCase(Cells(i, "G").Value) = "dnm" Then
                  bodymessage3 = vbNewLine & Sheets("lien").Range("B" & i + 10).Value
                End If

            experience = bodymessage & bodymessage1 & bodymessage2 & bodymessage3

          wordDocument.Content.Find.Execute FindText:="VariableToReplace", ReplaceWith:=experience, Replace:=wdReplaceAll
          wordDocument.SaveAs "C:\Users\riadh.said@cic.gc.ca\Desktop\" & ActiveSheet.Cells(i, 1).Value & ", " & ActiveSheet.Cells(i, 2).Value & ".pdf", 17
      End If

  Next i

End Sub

Bonjour,

Attention ... Attention ... au multipostage ...!!!

https://forum.excel-pratique.com/posting.php?mode=quote&f=2&p=370486

P.S. Salut Bruno ...

Re,

Dans la mesure où tu poses la même question dans plusieurs sujets à la fois ...

https://forum.excel-pratique.com/excel/probleme-boucle-pdf-t65332.html

Perso, je passe la main ...

Bon Courage pour la suite ...

pk vs dites ca , sinon la solution que vous m"avez propose , elle fonctionne pas

merci pour votre temps

Bonjour,

C'est dommage ...

Mais de toutes les manières sans fichier construire une macro devient de la voyance !!!

Bonjour r4944,

Merci d'arrêter de créer plusieurs sujets pour une même question (si ton problème n'est pas résolu, il faut poster à la suite du premier sujet).

Pour cette fois, j'en ai fusionné 2 et supprimé les autres.

Cordialement,

Bonjour Sébastien,

Merci pour ton intervention ...

Cdlt

Rechercher des sujets similaires à "probleme boucle pdf"