Boucle d'export PDF (avec données variable) en VBA

Bonjour,

Nous cherchons à réaliser une sorte du publipostage dans excel.

Nous avons un feuille excel (joliment mis en page qui va être la page a exporte en pdf). Les données de cette feuille changent en fonction d'un nombre tapé dans une case de cette même feuille (0 puis 1 puis 2 puis 3... de 0 à 26).

Je cherche donc à faire une boucle pour exporter toutes les variantes possibles de 0 à 26.

La VBA doit donc dans l'ordre :

  1. Remplacer la valeur de la cellule J3 par 0
  2. Définir des variables
  3. Exporter le document
    1. Remplacer la valeur de la cellule J3 par 1
    2. Définir des variables
    3. Exporter le document
      1. Remplacer la valeur de la cellule J3 par 2
      2. Définir des variables
      3. Exporter le document

(puis 3 puis 4 puis 5.... Jusqu'à 26)

La macro tourne en boucle jusqu'à avoir exporté les 26 documents. Attention, les variables doivent être redéfinies à chaque fois que la cellule J3 est modifiée .

Pourriez-vous m'aider ? Quelle serait la structure générale de la macro ?

Nous avons déjà écris les variables à définir, et le code d'exportation. La première étape est un simple "Cells(x, y0).Value = 0 (puis 1 puis 2 puis 3...) mais nous sommes copier /coller le code des variables et de l'export ce qui rends illisible notre macro...

Je ne peux pas joindre un document, car le fichier utilisé est très lourd, confidentiel et difficile à reproduire simplement, mais si vraiment, c'est indispensable à la compréhension, je m'y attellerais :p

Bonjour MalanZach,

En général et pour aider au mieux, nous demandons un fichier

Ceci dit, pour ce que vous souhaitez, le code peut être simple
1) Une boucle de 0 à 26
https://www.excel-pratique.com/fr/vba/boucles

2) Définir les variables : je ne sais pas ce que vous voulez dire

3) Exporter, le forum regorge de post où l'on parle de ça, il y ajuste à faire une recherche

image

A+

Bonjour BrunoM45,

Effectivement j'ai déjà regardé bcq de topics sur les sujets. J'ai déjà une macro d'export sauf que je n'arrive pas à la boucler pour exporter toutes mes factures. Je n'arrive pas non plus à conditionner l'export aux factures supérieur à 0€.

J'ai pris le temps de faire un fichier qui copie mon problème. En gros, c'est une sorte de publipostage directement dans Excel.

En espérant être clair et que quelqu'un pourra m'aider :)

Bonjour MalanZach,

Je pense que vous devriez commencer par apprendre les base de VBA et la programmation Objets

Sheets("BDD").Select
  client = Range("A2").Value

Il n'y a pas besoin de sélectionner la feuille pour récupérer une valeur

Client = Sheets("BDD").Range("A2").Value

Ensuite, je ne vois aucune boucle dans votre fichier... alors forcément

Corrigez votre code, ajouter une boucle et revenez nous voir

A+

Sub Boucle_Export_CST()
     Dim Lot, Art, Chemin_Comp, Client, Date_Info, Chemin

     With Sheets("BDD")
          Client = .Range("A2").Value
          Date_Info = .Range("B2").Value
          Chemin = .Range("C2").Value
     End With

     'If Application.UserName = "BSA" Then Chemin = ThisWorkbook.Path & "\"     'cette ligne est pour moi pour tester avec un autre chemin

     With Sheets("FRAIS FINANCIERS")
          For i = 1 To 26
               .Range("J3").Value = i
               Lot = .Range("D3").Value
               Art = .Range("D4").Value
               On Error Resume Next 'continuer en cas d'erreur
               Chemin_Comp = "" 'RAZ
               Chemin_Comp = Chemin & Date_Info & " " & Client & " - CST - " & Lot & " " & Art & ".pdf" 'en cas d'erreur cette ligne fera rien
               On Error GoTo 0
               If Len(Chemin_Comp) = 0 Then 'si le chemin est vide, c'est parce que il y avait un erreur
                    MsgBox "erreur avec Chemin_Comp" & vbLf & "i=" & i
               Else
                    .Range(.PageSetup.PrintArea).ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin_Comp, OpenAfterPublish:=True
               End If
          Next
          .Range("J3").Value = 1
     End With

End Sub

Attention avec la construction With ... End With le point avant "Range(...) indique qu'on doit regarder vers ce paramètre de "With"

C'est ce que j'essaye de faire en parrallèle de nombreuses autres choses BrunoM45 ;) Mais merci pour tes conseils.

Merci beaucoup BsAlv, c'est exactement ce que je n'arrivais pas réaliser. J'avais de la peine à appliquer les tuto et comprendre la logique des boucles ! Mais avec ton code appliqué à mon problème, je comprends mieux comment fonctionne les boucles !

J'ai rajouté un "If Prix >0 then" avant l'export et le tour est joué ! Merci :D

Rechercher des sujets similaires à "boucle export pdf donnees variable vba"