Condition d'arret boucle VBA

Hello,

Je tente d'ameliorer une saisi de donnée pour mon travail, je suis vraiment debutant en vba mais je suis assez content jusque la de ce que j'ai compris.

Donc j'ai mis en C2 et E2 mes date/heure de debut et fin de recherché sous le format 09/11/2016 01:35

J'ai creer ma macro pour qu'elle affecte aux cellules ciblées la date en colonne C et en colonne D grace a un add-in l'etat de mon unite Durant son cycle.

Cependant j'aimerais que ma macro s'arrete lorsque ma date en cellule (i,3) est egale a E2 ou lorsque cells(i,4)<>cells(i-1,4)

Mais cela ne marche pas et ma macro continuait son increment de 5min indefinimement, j'ai donc ajouter une condition juste pour mes tests.

Bref en gros je seche sur comment faire arreter ma macro proprement en function de ma date/heure ou du texte d'état

Ci-joint le fichier. Cependant il vous faudra remplacer les reference a l'add in par autre chose si vous testez.

Aussi comme mon unite effectue un cycle elle reste parfois pendant plusieurs heure sous le meme etat, remplissant parfois 100lignes, j'aimerais seulement afficher les date/heure ou l'etat change. Si jamais vous avez des pistes pour ca je prends car je seche un peu mais je poursuis mes tests dessus.

Merci beaucoup !

bonsoir ,

Hum... Pour éclaircir j'ai viré ce qui considère Aspen pour ne garder que la boucle.

par sécurité j'ai mis Inférieur ou égal mais ça fonctionne aussi avec =

En principe YAPUKA glisser ta super FonctionDeLaMort la dedans ...

Private Sub CommandButton1_Click()
Dim i As Integer, k
i = 5
k = Cells(2, 3)
   Do While k + 1 / 288 <= Cells(2, 5)
           Cells(i, 3) = k + 1 / 288
           'Cells(i, 4) = ATGetTimeVal("xxx_STEP", "", "", Cells(i, 3), 66576, 0, 0, 0)
           i = i + 1
           k = k + 1 / 288
   Loop
End Sub

[Edit]... Après tu pourras toujours rajouter des conditions supplémentaires sur la colonne 4 par exemple, mais j'ai voulu isoler la condition principale afin de circonscrire le problème. (Il m'est difficile de simuler tes conditions d'exploitations)

Si j'ai bien compris, in fine ça peut peut-être te donner quelque chose comme ça :

Private Sub CommandButton1_Click()
Dim i As Integer, k
i = 5
k = Cells(2, 3)
   Do While k + 1 / 288 <= Cells(2, 5)
         'in fine...? :
            If (Condition / ATGetTimeVal) Then
               Cells(i, 3) = k + 1 / 288
               Cells(i, 4) = ATGetTimeVal("xxx_STEP", "", "", Cells(i, 3), 66576, 0, 0, 0)
               i = i + 1
            End If
         k = k + 1 / 288
   Loop
End Sub

A+

Merci Galopin,

Je vais essayer ca.

Je crois que j'etais tellement plonger dedans que je ne l'avais pas vu sous cet angle.

J'apporte bientot des nouvelles.

Tout roule,

J'ai meme reussi l'extra que je cherchais.

Maintenant je me demande si il est possible que la macro ne debute qu'a la prochaine case vide.

Si ma Date de fin est 10/11/2016 22:55 alors ma macro a tournée et tout remplie.

Le lendemain j'aimerais remplir juste la suite jusqu'a ma nouvelle date de fin.

SI y'a des pistes je prends mais je vais chercher de mon cote.

PS desole pour les accents, clavier qwerty

Quelque chose comme ça peut-être :

Private Sub CommandButton1_Click()
Dim i As Long, k
i = Range("C" & Range("C" & Rows.Count).End(3).Row + 1).Row
'la suite sans changement...

A+

J'ai suivi une autre voie qui function:

Dim Lig As Long

Lig = 4 'première ligne à vérifier

Do While Not IsEmpty(Range("C" & Lig))

Lig = Lig + 1

Loop

Dim i As Integer, k

i = Lig - 1

k = Cells(Lig - 1, 3)

Happy Days !

Bon ma macro marche super.

Maintenant j'ai juste un souci avec une formule Index

EN feuille 1

J'ai A9: LOT1 et en B3:Transfer

Je cherche a metre en B9 la date auxquel Transfer de LOT1 debute

Sachant que mes données sont en Feuille 2 sous la forme

Colone A Colone B Colonne C

10/11/2016 14:05:00 LOT1 Transfer

10/11/2016 15:05:00 LOT1 Seche

10/11/2016 23:05:00 LOT1 Test

11/11/2016 00:35:00 LOT1 Dechargement

10/11/2016 08:05:00 LOT2 Transfer

J'ai essayé la formule suivante {=INDEX(Feuille2!A:A;MATCH(1;(Feuille 2!C:C=Feuille 1!B3)*(Feuille 2!B:B=Feuille 1!A9);0))}

Mais je me retrouve avec un message d'erreur d'excel me disant formule incorrecte

Rechercher des sujets similaires à "condition arret boucle vba"