Une boucle dans une boucle (VBS)

Fermé
Aquhydro Messages postés 172 Date d'inscription mercredi 8 août 2012 Statut Membre Dernière intervention 26 mai 2020 - 9 août 2012 à 10:54
Aquhydro Messages postés 172 Date d'inscription mercredi 8 août 2012 Statut Membre Dernière intervention 26 mai 2020 - 13 août 2012 à 10:06
Bonjour,

Je cherche à créer une automatisation sous excel, à l'aide des macro, qui me permettrait la chose suivante :

Faire 140 fois 5 fois la même opération, avec entre chacune de mes 5 fois une attente d'une heure, voilà ce que j'ai fait, cela ne marche pas parce qu'on ne peut pas faire deux fois "for i =", puis je contourner le problème?

Sub Macro1
'
' Runs the executable ***, which is the
' ******* program
' Macro written *********
'

'
Set Base = ActiveWorkbook

For i = 1 To 140
For i = 1 To 5
[Application à faire tourner 140 fois, 5 par 5, avec compte à rebour d'une heure entre chacune]
Next

For i = 10 To 0 Step -1
If Application.Wait(Now + TimeValue("1:00:00")) Then
Range("A1").Value = i
End If
If i = 0 Then End Sub

Next

End Sub

Enfin, tout ce qui est du compte à rebour et tout ça, y a t'il une erreur?

Merci d'avance de vos réponses.

Aquhydro

4 réponses

chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 308
9 août 2012 à 11:15
Bonjour,

si je comprends ton problème, tu veux faire d'abord pour i de 1 à 5, attendre une heure, puis i de 6 à 10 attendre une heure, i de 11 à 15... et ainsi de suite ?

Cordialement.
0
Aquhydro Messages postés 172 Date d'inscription mercredi 8 août 2012 Statut Membre Dernière intervention 26 mai 2020 2
9 août 2012 à 11:16
Exactement, ça serait parfait.
0
bonjour

une proposition, mais pas sûr d'avoir tout compris:
For i = 1 To 140 ' on va faire 140 boucles
    For j = 1 To 5     'on va faire 5 boucles
        Range("A1").Value = i 'opération à effectuer 5 fois
    Next j
 Application.Wait (Now + TimeValue("1:00:00")) 'on attend 1 heure après les 5 boucles et on continue sur le i suivant
Next i

A+
0
Aquhydro Messages postés 172 Date d'inscription mercredi 8 août 2012 Statut Membre Dernière intervention 26 mai 2020 2
9 août 2012 à 14:06
Alors ça marche très bien c'est parfait sauf que j'ai eut deux petite erreurs, la première est corrigée mais je ne comprends pas la seconde, pourriez-vous m'aider?

:

Sub macro
'
' Runs the executable ******'

'
Set Base = ActiveWorkbook

For i = 1 To 140
For j = 1 To 5
Application.Run "******.xls'!CopierColler"
Range("I3").Select
Windows("en attendant.xlsx").Activate
Range("A3:T701").Select
Range("T3").Activate
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.ScrollRow = 653
ActiveWindow.ScrollRow = 652
ActiveWindow.ScrollRow = 650
ActiveWindow.ScrollRow = 648
ActiveWindow.ScrollRow = 644
ActiveWindow.ScrollRow = 642
ActiveWindow.ScrollRow = 637
ActiveWindow.ScrollRow = 629
ActiveWindow.ScrollRow = 621
ActiveWindow.ScrollRow = 611
ActiveWindow.ScrollRow = 602
ActiveWindow.ScrollRow = 591
ActiveWindow.ScrollRow = 575
ActiveWindow.ScrollRow = 562
ActiveWindow.ScrollRow = 548
ActiveWindow.ScrollRow = 535
ActiveWindow.ScrollRow = 522
ActiveWindow.ScrollRow = 509
ActiveWindow.ScrollRow = 493
ActiveWindow.ScrollRow = 476
ActiveWindow.ScrollRow = 450
ActiveWindow.ScrollRow = 422
ActiveWindow.ScrollRow = 396
ActiveWindow.ScrollRow = 367
ActiveWindow.ScrollRow = 338
ActiveWindow.ScrollRow = 312
ActiveWindow.ScrollRow = 286
ActiveWindow.ScrollRow = 260
ActiveWindow.ScrollRow = 237
ActiveWindow.ScrollRow = 211
ActiveWindow.ScrollRow = 183
ActiveWindow.ScrollRow = 162
ActiveWindow.ScrollRow = 139
ActiveWindow.ScrollRow = 118
ActiveWindow.ScrollRow = 97
ActiveWindow.ScrollRow = 77
ActiveWindow.ScrollRow = 60
ActiveWindow.ScrollRow = 43
ActiveWindow.ScrollRow = 25
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 1
Range("A2").Select
ActiveSheet.Paste
Range("C4").Select
Windows("*****.xls").Activate Premier problème qui j'ai résolu car en fait il ne trouvais plus le dossier ensuite, j'ai juste remis dans la bonne fênetre.
workingdir = Range("h24")
ChDir (workingdir)
Range("J12:Q19").Select
Selection.Copy
Set newbook = Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues
Selection.End(xlDown).Offset(1, 0).Select
Base.Activate
If Range("e13").Value > 0 Then
Range("b27").Select
Range(ActiveCell, ActiveCell.Offset(Range("e13").Value - 1, 7)).Select
Selection.Copy
newbook.Activate
Selection.PasteSpecial Paste:=xlPasteValues
Selection.End(xlDown).Offset(1, 0).Select
Base.Activate
End If

Range("B33:I33").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
newbook.Activate
Selection.PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.SaveAs Filename:="*******.csv", FileFormat:= _
xlCSV
ActiveWorkbook.Close SaveChanges:=False
Base.Activate
Range("a1").Select
Shell ("******.bat") Ici, le logiciel me dit qu'il ne retrouve plus le fichier en question, pourtant le fichier est toujours intègre, au même nom, et a la même place, est il possible qu'il y ait quelque chose qui bug dans mon script? Next j

Application.Wait (Now + TimeValue("1:00:00"))



Next i


End Sub

Merci beaucoup
0
peut être en rajoutant le chemin absolu dans la fonction shell
0
Aquhydro Messages postés 172 Date d'inscription mercredi 8 août 2012 Statut Membre Dernière intervention 26 mai 2020 2
13 août 2012 à 10:06
Bha pour l'instant ça ne fonctionne pas, je cherche d'autres techniques, si je résoud je pose ici...
0