Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille ("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" & nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" <noone@micro.com> a écrit dans le message de news:
O07H$8yPJHA.1144@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille ("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" & nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille ("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" & nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille ("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" & nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" <noone@micro.com> a écrit dans le message de news:
O07H$8yPJHA.1144@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille ("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" & nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille ("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" & nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" a écrit dans le message de news:
usC1I$
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" a écrit dans le message de news:Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" <noone@micro.com> a écrit dans le message de news:
usC1I$zPJHA.576@TK2MSFTNGP06.phx.gbl...
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
eIhLnqzPJHA.4008@TK2MSFTNGP02.phx.gbl...
Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" <noone@micro.com> a écrit dans le message de news:
O07H$8yPJHA.1144@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" a écrit dans le message de news:
usC1I$
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" a écrit dans le message de news:Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Sur chaque écran, as-tu les données que tu désires imprimer ?
Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" a écrit dans le message de news:
usC1I$
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" a écrit dans le message de news:Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Sur chaque écran, as-tu les données que tu désires imprimer ?
Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" <noone@micro.com> a écrit dans le message de news:
usC1I$zPJHA.576@TK2MSFTNGP06.phx.gbl...
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
eIhLnqzPJHA.4008@TK2MSFTNGP02.phx.gbl...
Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" <noone@micro.com> a écrit dans le message de news:
O07H$8yPJHA.1144@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Sur chaque écran, as-tu les données que tu désires imprimer ?
Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" a écrit dans le message de news:
usC1I$
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" a écrit dans le message de news:Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Sur chaque écran, as-tu les données que tu désires imprimer ?
Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" a écrit dans le message de news:
usC1I$
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" a écrit dans le message de news:Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Sur chaque écran, as-tu les données que tu désires imprimer ?
Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" <noone@micro.com> a écrit dans le message de news:
usC1I$zPJHA.576@TK2MSFTNGP06.phx.gbl...
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
eIhLnqzPJHA.4008@TK2MSFTNGP02.phx.gbl...
Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" <noone@micro.com> a écrit dans le message de news:
O07H$8yPJHA.1144@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Sur chaque écran, as-tu les données que tu désires imprimer ?
Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" a écrit dans le message de news:
usC1I$
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" a écrit dans le message de news:Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on passe
au
suivant de la boucle. En éxécution normale, la macro plante sur PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag +
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Une dernère suggestion :
Insère la ligne de commande suivante "DoEvents" avant ".PrintOut..."
DoEvents
.PrintOut Copies:=1
"zappy" a écrit dans le message de news:
up$
j'ai oublié de répondre à la 2e question :Sur chaque écran, as-tu les données que tu désires imprimer ?
oui.
(je rappelle qu'en execution pas à pas, tout marche à merveille, les
données s'insèrent, les colonnes se règlent à la bonne largeur, la page
s'imprime, les données s'effacent puis on recommence et ça boucle sans
pb.)
merci,
zappy.
"michdenis" a écrit dans le message de news:Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" a écrit dans le message de news:
usC1I$
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" a écrit dans le message de news:Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on
passe
au
suivant de la boucle. En éxécution normale, la macro plante sur
PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag
+
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Une dernère suggestion :
Insère la ligne de commande suivante "DoEvents" avant ".PrintOut..."
DoEvents
.PrintOut Copies:=1
"zappy" <noone@micro.com> a écrit dans le message de news:
up$iIb0PJHA.1516@TK2MSFTNGP03.phx.gbl...
j'ai oublié de répondre à la 2e question :
Sur chaque écran, as-tu les données que tu désires imprimer ?
oui.
(je rappelle qu'en execution pas à pas, tout marche à merveille, les
données s'insèrent, les colonnes se règlent à la bonne largeur, la page
s'imprime, les données s'effacent puis on recommence et ça boucle sans
pb.)
merci,
zappy.
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
OQlWSG0PJHA.764@TK2MSFTNGP05.phx.gbl...
Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" <noone@micro.com> a écrit dans le message de news:
usC1I$zPJHA.576@TK2MSFTNGP06.phx.gbl...
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
eIhLnqzPJHA.4008@TK2MSFTNGP02.phx.gbl...
Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" <noone@micro.com> a écrit dans le message de news:
O07H$8yPJHA.1144@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on
passe
au
suivant de la boucle. En éxécution normale, la macro plante sur
PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag
+
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
Une dernère suggestion :
Insère la ligne de commande suivante "DoEvents" avant ".PrintOut..."
DoEvents
.PrintOut Copies:=1
"zappy" a écrit dans le message de news:
up$
j'ai oublié de répondre à la 2e question :Sur chaque écran, as-tu les données que tu désires imprimer ?
oui.
(je rappelle qu'en execution pas à pas, tout marche à merveille, les
données s'insèrent, les colonnes se règlent à la bonne largeur, la page
s'imprime, les données s'effacent puis on recommence et ça boucle sans
pb.)
merci,
zappy.
"michdenis" a écrit dans le message de news:Remplace .PrintOut Copies:=1 par .PrintPreview
est-ce que cela boucle sans problème ?
Sur chaque écran, as-tu les données que tu désires imprimer ?
"zappy" a écrit dans le message de news:
usC1I$
Bonjour et merci,
C'est sympa pour la réécriture (j'omets toujours de déclarer, entre
autres)
mais bon rien ne change. Non seulement la macro plante, mais "excel
rencontre un pb ..." (quel que soit le style...)
Je me demande si ça vient pas du choix de l'imprimante, mais alors
pourquoi
ça fonctionnerait en mode pas à pas ? je vais regarder cela ...
merci
Zappy
"michdenis" a écrit dans le message de news:Essaie ceci :
J'ai juste réécrit ton code... ça me semble visuellement
plus facile à lire ! (pas tester)
'--------------------------------------------------
Sub test()
Dim Wk As Workbook, NumMag As Integer
Dim Rg As Range, Dep As Integer, Mag As Range
Set Wk = Workbooks.Open(Filename:= _
"C:listeMagasinstotoliste_magasins.xls")
'Remplace l'index "1")par le nom de la feuille
Set Rg = Wk.Worksheets(1).Range("d3:d311")
NumMag = 5
For Dep = 0 To 99
If tabldepartement(Dep, 0) <> "" Then
With Wk.Worksheets("Imp")
For Each Mag In Rg
If UCase(Left(Mag, 2)) = _
UCase(Left(tabldepartement(Dep, 0), 2)) Then
.Range("a" & NumMag) = Mag.Offset(0, -2)
.Range("b" & NumMag) = Mag.Offset(0, -1)
.Range("c" & NumMag) = Mag
.Range("d" & NumMag) = Mag.Offset(0, 1)
.Range("e" & NumMag) = Mag.Offset(0, 2)
NumMag = NumMag + 1
End If
Next
.Range("a5:e" & NumMag - 1).Borders.LineStyle = xlContinuous
.Columns("A:A").ColumnWidth = 60
.Columns("B:B").ColumnWidth = 42.71
.Columns("C:C").ColumnWidth = 8.57
.Columns("D:D").ColumnWidth = 13.57
.Range("a" & NumMag + 1) = "Vous pouvez aussi les retrouver " & _
"sur le site www.toto.fr"
.PrintOut Copies:=1
.Range("a5:e" & NumMag + 1).Delete
NumMag = 5
End If
MsgBox Dep
Next Dep
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub
'--------------------------------------------------
"zappy" a écrit dans le message de news:
O07H$
Bonjour à tous,
Je rencontre le problème suivant :
Lors d'une boucle for each, j'insère des données dans une feuille
("imp"),
lance une impression de ladite feuille, efface ces données, puis on
passe
au
suivant de la boucle. En éxécution normale, la macro plante sur
PrintOut,
tandis qu'en mode pas à pas (F8), cela fonctionne (en éxécution normale,
si
je remplace PrintOut par un msgbox, cela fonctionne aussi).
Avez-vous une idée du pb ? ci-dessous le bout de code...
merci d'avance et bonne journée,
Zappy.
sub tata()
'déclarations et instructions précédentes...
Workbooks.Open Filename:="C:listeMagasinstotoliste_magasins.xls"
Application.Wait Now + TimeValue("0:00:05")
nummag = 5
For DEP = 0 To 99
If tabldepartement(DEP, 0) <> "" Then
For Each mag In
Workbooks("liste_magasins.xls").Sheets(1).Range("d3:d311")
If Left(mag, 2) = Left(tabldepartement(DEP, 0), 2) Then
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" &
nummag) = mag.Offset(0, -2)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("b" &
nummag) = mag.Offset(0, -1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("c" &
nummag) = mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("d" &
nummag) = mag.Offset(0, 1)
Workbooks("liste_magasins.xls").Sheets("Imp").Range("e" &
nummag) = mag.Offset(0, 2)
nummag = nummag + 1
End If
Next mag
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag - 1).Borders.LineStyle = xlContinuous
Columns("A:A").ColumnWidth = 60
Columns("B:B").ColumnWidth = 42.71
Columns("C:C").ColumnWidth = 8.57
Columns("D:D").ColumnWidth = 13.57
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a" & nummag
+
1) = "Vous pouvez aussi les retrouver sur le site www.toto.fr"
Application.Wait Now + TimeValue("0:00:03")
Workbooks("liste_magasins.xls").Sheets("Imp").PrintOut Copies:=1
Application.Wait Now + TimeValue("0:00:03")
MsgBox DEP
Workbooks("liste_magasins.xls").Sheets("Imp").Range("a5:e" &
nummag
+ 1).Delete
Application.Wait Now + TimeValue("0:00:03")
nummag = 5
End If
Next DEP
Application.StatusBar = "Terminé. inscrire le nombre de colis"
End Sub