Une boucle dans une boucle (VBS)

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

  1. Contributeur
    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
    1. Exactement, ça serait parfait.
      0
      1. 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
        1. 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
          1. peut être en rajoutant le chemin absolu dans la fonction shell
            0
          2. Bha pour l'instant ça ne fonctionne pas, je cherche d'autres techniques, si je résoud je pose ici...
            0