Une boucle dans une boucle (VBS)

Aquhydro Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   -  
Aquhydro Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   -
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. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    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
  2. Aquhydro Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   2
     
    Exactement, ça serait parfait.
    0
  3. Paf
     
    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
  4. Aquhydro Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   2
     
    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. Paf
       
      peut être en rajoutant le chemin absolu dans la fonction shell
      0
    2. Aquhydro Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   2
       
      Bha pour l'instant ça ne fonctionne pas, je cherche d'autres techniques, si je résoud je pose ici...
      0