Impression automatique

Bonjour,

Je souhaiterais pouvoir imprimer plusieurs fois (en pdf) et automatiquement la même feuille de calcul en changeant la valeur d'une cellule pour chaque impression.

Il faudrait également pouvoir choisir les valeurs à positionner dans cette cellule pour les différentes impression.

Pour expliquer un peu plus le contexte, il s'agit de bordereau récapitulatif qui vont chercher les informations nécessaires en fonction du numéro de bordereau que j'indique dans la cellule.

Je voulais donc pouvoir imprimer une série de bordereau, par exemple de 10 à 30, soit une vingtaine d'impression en changeant le numéro de bordereau à chaque fois. C'est un peu fastidieux de le faire manuellement.

Je fais donc appel à votre aide pour pouvoir gagner un peu de temps dans cette tâche :) et n'hésitez pas à revenir vers moi si vous avez des questions complémentaires

Pour info, je ne gère pas le VBA, mais je souhaites m'y mettre, et je crois que je n'ai pas le choix pour faire ce que je veux faire ci-dessus.

Merci d'avance

Valentin

Petit Up, si quelqu'un a un peu de temps pour répondre.

Je peux également apporter des informations complémentaire si vous avez besoins.

Bonjour,

Il vaudrait mieux pour vous de mettre en ligne un fichier exemple sans données confidentielles.

Voici un extrait de ce que souhaite imprimer.

Le tableau original est bien plus complet que ça et j'ai près de 3000 bordereaux qui peuvent être édités.

Je souhaite donc pouvoir imprimer une plage de bordereaux, par exemple de 2112 à 2123, sans avoir à modifier manuellement le numéro du bordereau et à lancer une impression PDF à chaque.

Je voudrais pouvoir en quelques cliques lancer l'impression de l'ensemble des bordereaux en choisissant la plage à imprimer

Merci d'avance pour votre retour

20classeur1.xlsx (12.77 Ko)

Je pense qu'avec ce votre fichier vous pourrez avoir des réponses.

Vous n'avez pas joint de fichier à votre réponse. pourriez-vous le transmettre.

Merci d'avance

Bonjour ci joint une proposition

18val42.xlsm (22.08 Ko)

le nom du fichier est le contenu de la colonne A + colonne B de la feuille liste des remarques... car il faut un nom unique pour chaque fichier

exemple :

image

Fred

Merci pour votre retour.

Cependant ce n'est pas tout à fait le fonctionnement que je souhaite.

Sur l'exemple que vous avez fait il n'y a que 2 bordereaux PDF qui doivent être éditer. le bordereau 2112 et le 2113.

Dans l'onglet "liste des remarques", il s'agit uniquement d'un extrait. mais j'ai des remarques pour près de 3000 bordereaux

Je souhaite également pourvoir choisir la plage de bordereau imprimer. je voudrais pouvoir choisir d'éditer par exemple les bordereaux 2503 à 2509

Re bonjour...

soyons un peu plus clair... vous voulez que 2 bordereaux a partir de l'exemple fournit... OK ça j'ai compris... et donc j'ignore les informations de la colonne B ??

Fred

en prenant comme hypothèse que j'ignore les infos de la colonne B...

Nouvel essai... on sélectionne d'abord les lignes que l'on souhaite traiter... et on clique sur le bouton...

9val42-v2.xlsm (23.38 Ko)

Fred

Parfait ! Merci beaucoup !

J'ai juste déplacé l'objet associé à la macro dans la page du bordereau avec une zone pour saisir les bordereau que je souhaite imprimer.

Et la colonne B (feuil2) n'est pas forcément ignorée, elle est appelée en modifiant le numéro de bordereau de la cellule E2 grâce à la fonction filtre de la cellule B11

J'ai 2 dernières petites questions :

  • Je voudrais enregistrer les documents dans un dossier spécifique qui est sur mon bureau. je ne sais pas trop comment modifier le chemin.
  • Je souhaiterais également ajouter la date du bordereau, qui est dans la cellule E3, au nom du fichier :
    • Sous la forme : Bordereau N°XXXX - 26.04.22
    • Il faut bien des " . " dans la date, les " / " ne sont pas accepté dans le nom des fichiers
    • Je ne sais pas si ça peut avoir une importance, mais la date est automatiquement rempli à l'aide d'une autre feuille du fichier avec une fonction RECHERCHEV

et merci encore pour votre aide

Valentin

3val42-v2.xlsm (22.71 Ko)

Une petite adaptation supplémentaire (désolé je débute en VBA...)

Je voudrais que la sélection soit automatiquement le cadre vert. l'ensemble des cellules ne serait pas forcément rempli mais ça laisse la possibilité d'imprimer une quinzaine de bordereau.

6val42-v2.xlsm (22.84 Ko)

Bonsoir

nouvelle version, le nom du dossier sur le bureau est à personnaliser sur cette ligne :

        chemin = Environ("USERPROFILE") & "\Desktop\" & "Test"

Il faut donc remplacer "Test" par le nom du dossier voulu. il y a une vérification que le dossier existe, si il n'existe pas il est créé

Fred

11val42-v2.xlsm (23.61 Ko)

Bonsoir

Un retour ??

Fred

Bonjour,

Je n'avais pas eu le temps de me remettre dedans.

Tout fonctionne presque parfaitement :)

Il y a juste la plage de sélection figé que je n'arrive pas à adapter ..

Dans mon tableau original, je voudrais que la plage de sélection pour "tb" soit la colonne de W5 à W35. sachant que j'utilise en règle générale une dizaine de cellule.

Vous aviez codé de la manière ci-dessous, mais je n'arrive pas l'adapter pour que ça fonctionne.

'tb = shs.[W5].CurrentRegion

Pour le moment, je suis donc revenu avec 'tb=Selection.Value

Sub impression()
Dim shs As Worksheet
Dim shData As Worksheet
Dim i As Integer
Dim tb As Variant
Set shs = Sheets(2)
Set shData = Sheets(2)
Application.ScreenUpdating = False
'tb = shData.Range(shData.Cells(1, "A"), shData.Cells(shData.Cells(shData.Rows.Count, "A").End(xlUp).Row, "B")).Value
tb = shs.[W5].CurrentRegion
'tb = Selection.Value
If IsEmpty(tb) Then Exit Sub

chemin = Environ("USERPROFILE") & "\Bureau\" & "Impression Fiche Visa"
If Dir(chemin, vbDirectory) = "" Then MkDir chemin

For i = LBound(tb, 1) To UBound(tb, 1)

    'copie dans la cellule O2 le num bordereau

    If memoire <> tb(i, 1) And tb(i, 1) <> "" Then
        memoire = tb(i, 1)
        shs.[O2] = tb(i, 1)
        shs.Copy
        Set destwb = ActiveWorkbook
        With destwb

        nom = "BORDEREAU N°" & memoire & " - " & Format(shs.[O5], "DD.MM.YY") & ".pdf"
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & "\" & nom, Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False        ' sauvegarde du fichier au format pdf
            .Close False
        End With
    End If
Next
End Sub

BOnsoir

Dans ce cas utiliser :

tb = shData.Range(shData.Cells(1, "A"), shData.Cells(shData.Cells(shData.Rows.Count, "A").End(xlUp).Row, "B")).Value

En adaptant quelque chose comme cela :

tb = shs.Range(shs.Cells(5, "W"), shs.Cells(shs.Cells(shs.Rows.Count, "W").End(xlUp).Row, "W")).Value

Fred

Bonjour,

J'étais en vacances fin de semaine dernière et je n'avais pas eu le temps de tester cette adaptation.

ça fonctionne parfaitement pour 4 bordereaux ou +

Cependant, il y avait une erreur que je n'avait pas repérée pour l'impression de 1 à 3 bordereaux. C'est également le cas avec tb=selection.value

Si je n'ai que 1 ou 2 bordereaux, j'ai une erreur sur la ligne de code ci-dessous (incompatibilité de type)

For i = LBound(tb, 1) To UBound(tb, 1)

Quelle adaptation faudrait-il faire ?

Encore merci pour le temps que vous m'avez accorder.

Valentin

Bonjour

Je suis aussi en congés...

Mais je regarderais quand je rentre... mais pour cela faudrait redonner un fichier test avec la même structure qui pose problème et sans informations sensibles..

Fred

Voici le fichier avec le bug

Merci d'avance
5val42-v2-1.xlsm (25.75 Ko)

Bonjour

Nouvelle version

Fred

28val42-v2-2.xlsm (25.98 Ko)
Rechercher des sujets similaires à "impression automatique"