Incrémentation dans une boucle for imbriquée
LM.2g
-
LM.2g Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
LM.2g Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- Incrémentation dans une boucle for imbriquée
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Instagram for pc - Télécharger - Divers Communication
- Microsoft store download for pc - Guide
3 réponses
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
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
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 :
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
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.
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.