Incrémentation dans une boucle for imbriquée

LM.2g -  
LM.2g Messages postés 1 Statut Membre -
Bonjour,

J'ai beau avoir cherché, je n'arrive pas à trouver de solution à mon problème.
J'ai une macro où j'ai à un endroit deux boucle for imbriquées. La première parcourt une ligne composée d'heures (représentant des heures). La deuxième parcourt une colonne elle aussi composée d'heures et note dans une autre ligne quand les heures de la ligne correspondent aux heures de la colonne.
Ma macro fonctionne, mais seulement seulement très lentement et donc non exportable pour des centaines lignes comparées aux valeurs de la colonne...
J'aimerai que lorsque la valeur de la première ligne de la colonne de la deuxième boucle for soit trouvée elle ne soit plus cherchée dans toute la ligne associée à la première boucle for.
Bref, j'aimerai écrire :

l as long, k as long
k=0
For l=1 To...
For k=0 To...
...
k=k+1

Merci beaucoup d'avoir lu jusque ici !

Le code est assez compliqué ailleurs, j'ai essayé de formuler le plus clairement possible même si j'ai peur que ça ne soit pas le cas.

3 réponses

  1. michelmmm Messages postés 90 Statut Membre 2
     
    Bonjour,
    Je te propose cela, (si j'ai bien compris ton problème)

    De la 1ière cellule à la dernière cellule de la ligne
    Valeur à chercher reçoit cellule de la ligne
    De la 1ière cellule de la colonne à la dernière cellule de la colonne
    Si Valeur à chercher égale cellule de la colonne
    alors
    Écrire Valeur à chercher
    sinon
    Finsi
    Cellule de la colonne suivante
    Cellule de la ligne suivante
    1
  2. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonsoir LM, Bonsoir le forum,

    Une boucle For... Next s'incrémente seule. Quand tu veux sortir de la boucle il suffit d'utiliser Exit For. Ça donnerait un code du type :

    For I = 1 To ...
         For J = 1 To ...
              If Cells(1, I).Value = Cells(J, 2).Value Then 
                   '... ton code
                   Exit For
              End If
         Next J
    Next I

    0
  3. LM.2g Messages postés 1 Statut Membre
     
    Bonjour,

    Je vous remercie pour vos réponses elle m'ont déjà aider à gagner du temps !

    Je vais cependant essayer de reformuler ma question (le lundi étant plus clair que le vendredi).

    J'ai une colonne A de données horaires ( associées à une colonne B), qui correspondes aux heures auxquelles des maintenances doivent être réalisées dans un onglet 1.
    Une ligne 2 correspondant aux heures de service réelle d'un système selon la date dans un onglet 2.
    Une ligne 4 affichant la valeur de la colonne B de l'onglet 1 si la valeur de la colonne A vaut celle de la ligne 2, toujours selon la date.

    J'aimerai que quand une valeur de A est trouvée (et donc reportée dans la ligne 4) elle ne soit plus recherchée par la suite. Je cherche donc à réduire le nombre de cellules/ligne de A parcourues si une valeur de A et de 2 correspondes.

    J'espère que cela clarifie ma question.

    Merci beaucoup pour votre aide.
    0