Imprimer dans une boucle for

SAMWRC

XLDnaute Occasionnel
Bonjour,

Je n'ai pas trouve de reponse dans les anciennes conversations. Je souhaite lancer une impression dans une boucle For d'une macro. L'impression marche pour la premiere incrementation de la boucle mais apres celle ci, la macro s'arrete et ne continue pas. Comment puis-je faire ? Le mieux serait de pouvoir lancer l'impression et que la macro continue sans se soucier de savoir si le document a ete fini d'imprimer.

Merci d'avance




Sub Print_Schools()
'
' Print_Schools Macro
'

For row_nb = 2 To lastrow

Refresh 'Run the macro Refresh

Sheets("Detail").Select
Range("B1:K" & lastrow + 1).Select 'Select the printing area

Dim myRange As String
myRange = Selection.Address
ActiveSheet.PageSetup.PrintArea = myRange

With ActiveSheet.PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)" 'Print

Next row_nb

End Sub
 
G

Guest

Guest
Re : Imprimer dans une boucle for

bonjour Sam,

Voici un exemple possible avec les données mais, ce que tu veux imprimer n'est pas très clair dans ta macro.

Code:
Sub Print_Schools()
'
' Print_Schools Macro
'
    Dim lastrow As Long
    Dim row_nb As Long
 
    With Sheets("Detail")
        lastrow = 10
        For row_nb = 2 To lastrow
            Refresh                                       'Run the macro Refresh
 
            .PageSetup.PrintArea = .Range("B1:K" & row_nb).Address
            With .PageSetup
                .FitToPagesWide = 1
                .FitToPagesTall = 1
            End With
            .PrintOut
        Next row_nb
    End With
End Sub

A+
 

SAMWRC

XLDnaute Occasionnel
Re : Imprimer dans une boucle for

Code:
Sub Print_Schools()
'
' Print_Schools Macro
'
    Sheets("Settings").Select
    lastrow = Range("F2").End(xlDown).Row
    
    
    For row_nb = 2 To lastrow
    
        Sheets("Settings").Select
        Range("F" & row_nb).Select
        Selection.Copy
        Range("B1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        
        
        With Sheets("Detail")
        
            Refresh 'Run the macro Refresh
           
            .PageSetup.PrintArea = .Range("B1:K" & lastrow + 1).Address 
                With .PageSetup
                    .LeftHeader = "KM Furniture Ltd"
                    .CenterHeader = ""
                    .RightHeader = ""
                    .LeftFooter = "&A"
                    .CenterFooter = "&D"
                    .RightFooter = "&F"
                    .LeftMargin = Application.InchesToPoints(0.75)
                    .RightMargin = Application.InchesToPoints(0.75)
                    .TopMargin = Application.InchesToPoints(0.8)
                    .BottomMargin = Application.InchesToPoints(0.8)
                    .HeaderMargin = Application.InchesToPoints(0.5)
                    .FooterMargin = Application.InchesToPoints(0.5)
                    .Orientation = xlLandscape
                    .PaperSize = xlPaperA4
                    .FitToPagesWide = 1
                    .FitToPagesTall = 1
                End With
            .PrintOut ' Print
            
        End With
        
    Next row_nb
    
End Sub


Voici mon code. L'impression se passe bien pour les 2 premieres iterations de la boucle for. Apres le fichier plante ...

Je n'ai pas d'idee ... Peut etre la macro attend-elle un signal lui signifiant que l'impression s'est bien deroulee ? Est-il possible de lancer l'impression en arriere plan et que la macro continue de s'executer ?

Merci

A +
 
G

Guest

Guest
Re : Imprimer dans une boucle for

Re Sam,

Je ne vois pas pour le moment mais déjà essayons de simplifier la première partie:

Remplacer

Code:
        Sheets("Settings").Select
        Range("F" & row_nb).Select
        Selection.Copy
        Range("B1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False

Par:

Code:
        Sheets("Settings").Select
        Range("F" & row_nb).Copy Range("B1")
        Application.CutCopyMode = False

Si le collage se fait bien sur 'Settings' sinon

Code:
Sheets("Settings").Select
        Range("F" & row_nb).Copy Sheets(Nomdelafeuilledestination).Range("B1")
        Application.CutCopyMode = False

Que fais la macro 'Refresh'?

A+
 

wdjaid

XLDnaute Nouveau
Re : Imprimer dans une boucle for

Bonjour,

j'ai cette Macro, mais celle-ci elle parcourt une liste de numéro dans une feuille appelée "Data", et chaque numéro sera copier et coller dans une case qui se trouve dans la feuille que je veux imprimer, et une fois le numéro change toute les données de lafeuille que je veux imprimer change automatiquement et puis ça imprime et ça passe au deuxième numéro

Sub ImprimeScorCard()
Dim i As Integer
i = 2
Do While Sheets("Data").Cells(i, 1).Value <> ""


Sheets("Scores Cardstech").Cells(8, 3).Value = Sheets("Data").Cells(i, 1).Value
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

i = i + 1
Loop
End Sub



:cool:

Bonjour,

Je n'ai pas trouve de reponse dans les anciennes conversations. Je souhaite lancer une impression dans une boucle For d'une macro. L'impression marche pour la premiere incrementation de la boucle mais apres celle ci, la macro s'arrete et ne continue pas. Comment puis-je faire ? Le mieux serait de pouvoir lancer l'impression et que la macro continue sans se soucier de savoir si le document a ete fini d'imprimer.

Merci d'avance




Sub Print_Schools()
'
' Print_Schools Macro
'

For row_nb = 2 To lastrow

Refresh 'Run the macro Refresh

Sheets("Detail").Select
Range("B1:K" & lastrow + 1).Select 'Select the printing area

Dim myRange As String
myRange = Selection.Address
ActiveSheet.PageSetup.PrintArea = myRange

With ActiveSheet.PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)" 'Print

Next row_nb

End Sub
 

SAMWRC

XLDnaute Occasionnel
Re : Imprimer dans une boucle for

Bonjour,

Alors avant de vous envoyer mon fichier excel simplifie, je l'ai teste et il marche. La seule difference avec mon fichier original est que dans ma macro "Refresh", je ne rafraichis plus ma requete sur le serveur SQL. Pourquoi le rafraichissement de cette requete fait-il planter ma macro ?

Quelqu'un a une idee ? :(

Je vous envoie mon programme simplifie (un fichier sans macro et un autre fichier avec les macros a rajouter dans le premier fichier pour cause de poids limite depasse).

Merci

PS : Merci wdjaid mais ta macro ne repond pas vraiment a mes besoins sauf si j'ai mal compris
 

Pièces jointes

  • Macro.xls
    24 KB · Affichages: 91
  • SAMWRC sans macro.xls
    37 KB · Affichages: 50
  • Macro.xls
    24 KB · Affichages: 96
  • Macro.xls
    24 KB · Affichages: 103

Discussions similaires

Statistiques des forums

Discussions
312 238
Messages
2 086 491
Membres
103 234
dernier inscrit
matteo75654548