Boucle et VBA

Fermé
Clem13 - 7 déc. 2011 à 14:57
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 - 9 déc. 2011 à 14:37
Bonjour,

Petit soucis.
J'ai fait des feuilles de jorunées pour des chauffeurs routiers. Une feuille de journée = une feuille exce, qui sont nommé de cette manière la :

L01 SC01 pour ligne 01, service 01.

J'ai ensuite fait un userforme regroupant toutes mes config ligne et service avec une zone de texte appelé SCXX permettant de commander le nombre de copie à faire.

Mon bouton "impression" est programmé de cette manière :

If Not IsNumeric(C01 Or C02 Or C04 Or C05 Or c06 Or c07 Or c08 Or C09 Or C11 Or C12 Or C14 Or C15 Or C16 Or C17 Or C18 Or C19) Then
rep = MsgBox("ATTENTION : Une valeure est érronée", vbCritical, "ERREUR !!!")

ElseIf C1 = True Then
Sheets("L01 SC01").Select
Application.ActivePrinter = "\\tfrmed-fi069230\TFRMED-PR069296 sur Ne06:"
ActiveWindow.SelectedSheets.PrintOut Copies:=SC01, ActivePrinter:= _
"\\tfrmed-fi069230\TFRMED-PR069296 sur Ne06:", Collate:=True


ElseIf C2 = True Then
Sheets("L02 SC02").Select
Application.ActivePrinter = "\\tfrmed-fi069230\TFRMED-PR069296 sur Ne02:"
ActiveWindow.SelectedSheets.PrintOut Copies:=SC02, ActivePrinter:= _
"\\tfrmed-fi069230\TFRMED-PR069296 sur Ne02:", Collate:=True
Loopwhile = False

ElseIf C4 = True Then
Sheets("L04 SC04").Select
Application.ActivePrinter = "\\tfrmed-fi069230\TFRMED-PR069296 sur Ne02:"
ActiveWindow.SelectedSheets.PrintOut Copies:=SC04, ActivePrinter:= _
"\\tfrmed-fi069230\TFRMED-PR069296 sur Ne02:", Collate:=True


Mon probème étant de faire une boucle pour pouvoir imprimer plusieurs services en un seul clique ...
Je l'ai eu fait pendant mes études ... Ca doit bien faire 7/8 ans que je n'ai plus fait de boucles .... et impossible à m'en souvenir.


Comment faire ?



3 réponses

C'est une boucle For Next.
Par exemple
For w = 1 to worksheets.count ' passe toutes les feuilles en revue
'Action

Next w
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
9 déc. 2011 à 14:28
Bonjour,

Et tu dois remplacer C01 à C19 par un tableau dim C(19) as boolean si tu veux les tester dans la boucle.

eric
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
9 déc. 2011 à 14:37
dim i as integer
dim ok as boolean
i=1
ok=true
while(range("C"&i)<>"")
i=i+1
if not(IsNumeric(range("C"&i))) then
ok=false
endif

wend

est ce que ce code te conviens ?
0