[VBA] Impression après filtre

R@chid

XLDnaute Barbatruc
Bonsoir @ tous,
Sur ce forum, des amis (qui je remercie) m'ont beaucoup aidé sur un code VBA..
Je livre le fichier.
Maintenant je veux que je quand je fais un filtre sur le tableau, je peux lancer l'impression des devis filtrés, mais attention c'est pas encore fini, il y a un autre critère à prendre en compte..
si j'imprime normalement un devis ses pages vont être numérotées comme suite 1/1 si il contient une seule page et 1/3 2/3 3/3 si il contient 3 pages, mais si je veux imprimer 3 devis dans ce dernier fait partie, c'est normal que la numérotation de pages deviendra 1/5 2/5 3/5 4/5 5/5 ce que je veux c'est de garder la numérotation comme elle-est :
1/1 pour le premier
1/3 2/3 3/3 pour le deuxième
1/1 pour le troisième

J’espère être clair..

N’hésitez pas de demander plus d'explication en m'appelant sur le numéro vert : UnPostSurCeFil :p;)
 

Pièces jointes

  • BJ_R@chid.xlsm
    68.1 KB · Affichages: 122
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Impression après filtre

Bonsoir l'ami R@chid ;-)

Voici le code à lier à ton bouton
Code:
Sub ImpressionDevis()
  Dim DLig As Long, Lig As Long
  ' Avec la feuille
  With Sheets("TableauDeBord")
    ' Récupérer la dernière ligne du tableau
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne
    For Lig = 3 To DLig
      ' Si la ligne est visible donc dans le filtre
      If .Range("A" & Lig).EntireRow.Hidden = False Then
        ' Imprimer le devis en question
        Worksheets(.Range("A" & Lig).Value).PrintOut
      End If
    Next Lig
  End With
End Sub

A+
 

R@chid

XLDnaute Barbatruc
Re : Impression après filtre

Bonsoir BrunoM45,
Merci encore pour ton retour,
J'ai essayé avec imprimante PDF (Universal Document Coverter), il me sort cette fenêtre..
BrunoM45_Impr.png

@ te relire


Edit :
Après plusieurs test, j'ai remarqué que cette fenêtre n'apparait que si je ne filtre pas par Situation et quand je n'utilise pas de filtre ça veut dire qu'il doit tout imprimer il imprime 3 ou 4 et il s’arrête

@ + +
 
Dernière édition:

kingfadhel

XLDnaute Impliqué
Re : Impression après filtre

bonsoir l'ami r@chid ;-)

voici le code à lier à ton bouton
Code:
sub impressiondevis()
  dim dlig as long, lig as long
  ' avec la feuille
  with sheets("tableaudebord")
    ' récupérer la dernière ligne du tableau
    dlig = .range("a" & rows.count).end(xlup).row
    ' pour chaque ligne
    for lig = 3 to dlig
      ' si la ligne est visible donc dans le filtre
      if .range("a" & lig).entirerow.hidden = false then
        ' imprimer le devis en question
        worksheets(.range("a" & lig).value).printout
      end if
    next lig
  end with
end sub

a+


code fonctionnel exactement comme tu as demande r@chid
 

R@chid

XLDnaute Barbatruc
Re : Impression après filtre

Bonsoir @ tous,
Salut Kingfadhel,
Comme je l'ai signalé, je n'ai pas d'imprimante à la maison, je vais faire un essai au bureau demain incha'allah, sur mon PC je me sers de Universal Document Converter pour imprimer en PDF..
merci pour ton passage

@ + +
 
C

Compte Supprimé 979

Guest
Re : Impression après filtre

Salut l'ami R@chid ;)

Re,
Peut-être car j'ai supprimé un onglet et je l'ai gardé sur le tableau..
@ + +
C'est tout à fait ça, une erreur d'exécution 9 L'indice n'appartient pas à la sélection
VBA tente d'imprimer une feuille qui n'existe pas

Pour parer à ce problème, tu peux mettre une gestion d'erreur
Code:
On Error Resume Next' imprimer le devis en question
Worksheets(.Range("a" & lig).Value).PrintOut
' Vérifier si erreur
If Err.Number <> 0 Then
 Err.Clear
  MsgBox "Le devis " & .Range("A" & lig).Value & " n'existe pas dans le classeur"
End If
On Error GoTo 0

A+
 

R@chid

XLDnaute Barbatruc
Re : Impression après filtre

Bonjour @ tous,
Salut BrunoM45,
Merci pour ton retour :)
Mais où je vais ajouter ce code?? le premier de l'impression je l'ai ajouté dans le module sous celui de l'ajout de devis, mais pour ce dernier je vais te dire que je sèche.

@ te relire
 
C

Compte Supprimé 979

Guest
Re : Impression après filtre

Re,

Désolé, je pensais être clair ;)
Dans le premier code donné pour l'impression, tu remplace la simple ligne
Code:
Worksheets(.Range("a" & lig).Value).PrintOut
Par toutes celles là
Code:
' En cas d'erreur on continue
On Error Resume Next
' imprimer le devis en question
Worksheets(.Range("a" & lig).Value).PrintOut
' Vérifier si erreur
If Err.Number <> 0 Then
 Err.Clear
  MsgBox "Le devis " & .Range("A" & lig).Value & " n'existe pas dans le classeur"
End If
On Error GoTo 0

A+
 

Discussions similaires

Réponses
31
Affichages
528
Réponses
8
Affichages
465

Statistiques des forums

Discussions
312 271
Messages
2 086 688
Membres
103 372
dernier inscrit
BibiCh