Sortir boucle for VBA
Résolu
Kaddour Jilali
Messages postés
161
Date d'inscription
Statut
Membre
Dernière intervention
-
Kaddour Jilali Messages postés 161 Date d'inscription Statut Membre Dernière intervention -
Kaddour Jilali Messages postés 161 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Sortir d'une boucle vba
- Comment sortir une application d'un dossier - Accueil - Guide Android
- Comment sortir du bios - Forum BIOS
- Mon ordi démarre dans le bios et impossible de sortir ✓ - Forum PC portable
- Excel compter cellule couleur sans vba - Guide
- Comment sortir du mode sans echec ps4 - Guide
11 réponses
Bonjour
Je ne comprend pas que ça demande beaucoup de temps! Chez moi ca ne fonctionne pas du tout.
Quelle version utilises-tu ?
Je ne comprend pas que ça demande beaucoup de temps! Chez moi ca ne fonctionne pas du tout.
Quelle version utilises-tu ?
Bonjour,
Pour sortir de la boucle dès que la condition If est trouvée :
Bonne continuation.
;o)
Pour sortir de la boucle dès que la condition If est trouvée :
If Sheets("1").Range("H" & j).Value = Sheets("2").Range("C" & i).Value Then Sheets("2").Range("B" & i).Value = Sheets("1").Range("G" & j).Value Exit Sub End If
Bonne continuation.
;o)
Salut,
J'ai testé ton code, mais ma macro n'a plus d'effet.
Voilà à quoi elle ressemble maintenant.
Sub g()
Dim i As Integer
Dim j As Integer
For i = 3 To 100
For j = 3 To 100
If Sheets("1").Range("H" & j).Value = Sheets("2").Range("C" & i).Value Then
Sheets("2").Range("B" & i).Value = Sheets("1").Range("G" & j).Value
Exit Sub
End If
Next j
Next i
End Sub
J'ai testé ton code, mais ma macro n'a plus d'effet.
Voilà à quoi elle ressemble maintenant.
Sub g()
Dim i As Integer
Dim j As Integer
For i = 3 To 100
For j = 3 To 100
If Sheets("1").Range("H" & j).Value = Sheets("2").Range("C" & i).Value Then
Sheets("2").Range("B" & i).Value = Sheets("1").Range("G" & j).Value
Exit Sub
End If
Next j
Next i
End Sub
Bonjour,
Le problème vient des conditions que tu met dans ton IF, elle n'ont probablement pas les bonnes coordonées !!
Quand tu met Sheets("1") ton "1" c'est le nom que tu a mis sur l'onglet ?? parce qu si tu travail avec l'index de la feuille c'est Sheets(1), sans guillemet
A+
Le problème vient des conditions que tu met dans ton IF, elle n'ont probablement pas les bonnes coordonées !!
Quand tu met Sheets("1") ton "1" c'est le nom que tu a mis sur l'onglet ?? parce qu si tu travail avec l'index de la feuille c'est Sheets(1), sans guillemet
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui, c'est le nom de mon onglet. La macro initiale fonctionne, le problème c'est que comme je n'arrive pas à l'arrêter quand ma cellule est remplie, elle continue.
Comme dit, tes conditions ne sont probablement pas bonnes parce que le code est bon.
Met un STOP avant le exit sub, quand le code s'arrète sur le stop promène la souris sur les valeurs pour voir ce qu'il y à dans les cellules et voir à quelle valeur sont i et j
Si la bulle des valeur ne s'affiche pas tu peu travailler avec la fenêtre Exécution.
et tu tape par exemple Print J >> Enter
pour voir la valeur de j
etc.. pour les autres données.
Met un STOP avant le exit sub, quand le code s'arrète sur le stop promène la souris sur les valeurs pour voir ce qu'il y à dans les cellules et voir à quelle valeur sont i et j
Si la bulle des valeur ne s'affiche pas tu peu travailler avec la fenêtre Exécution.
et tu tape par exemple Print J >> Enter
pour voir la valeur de j
etc.. pour les autres données.
J'ai mis des msgbox i et j juste avant le if. Ca fonctionne comme je le souhaite, c'est à dire i=3 et j=3 puis i=3 et j=4, i=3 et j=5 etc....
Quand j est arrivé à 100, ça recommence avec i=4 et j=3, i=4 et j=4, etc....
Quand j est arrivé à 100, ça recommence avec i=4 et j=3, i=4 et j=4, etc....
Vu que tu balaie tout, J'ai peut-être une petite idée...
remplace par
A+
remplace par
Sub g() Dim i As Integer Dim j As Integer For i = 3 To 100 For j = 3 To 100 If Sheets("1").Range("H" & j).Value <> "" Then If Sheets("1").Range("H" & j).Value = Sheets("2").Range("C" & i).Value Then Sheets("2").Range("B" & i).Value = Sheets("1").Range("G" & j).Value Exit Sub End If End If Next j Next i End Sub
A+
Merci pour ton code, je l'ai testé.
A la place de <>, j'ai mis =. Ca marche bien, c'est beaucoup plus rapide, mais ça reste dépendant du For.
Je m'explique :
Pour For i = 3 To 100 le résultat est instantané
Pour For i = 3 To 5000 j'ai un blocage pendant 5-6 secondes alors que le texte s'affiche immédiatement.
Est-ce normal ?
Merci encore.
A la place de <>, j'ai mis =. Ca marche bien, c'est beaucoup plus rapide, mais ça reste dépendant du For.
Je m'explique :
Pour For i = 3 To 100 le résultat est instantané
Pour For i = 3 To 5000 j'ai un blocage pendant 5-6 secondes alors que le texte s'affiche immédiatement.
Est-ce normal ?
Merci encore.
pourquoi...
A la place de <>, j'ai mis =. ????
Non, ça ne sait pas aller comme ça, en mettant égal ça ne fonctionne que quand
Sheets("1").Range("H3").Value ="" et je suppose que ce n'est pas ça que tu veux, si quelque chose s'inscrit c'est pas normal.
et regarde si c'est bien les bonne adresses tel que tu les veux...
en supposant i=3 et j=3 tu teste
If Sheets("1").Range("H3").Value = Sheets("2").Range("C3" ).Value Then
'Alors tu met dans
Sheets("2").Range("B3").Value = Sheets("1").Range("G3").Value
mais sans savoir ce que tu à sur ton classeur ça devient difficile de comprendre.
A la place de <>, j'ai mis =. ????
Non, ça ne sait pas aller comme ça, en mettant égal ça ne fonctionne que quand
Sheets("1").Range("H3").Value ="" et je suppose que ce n'est pas ça que tu veux, si quelque chose s'inscrit c'est pas normal.
et regarde si c'est bien les bonne adresses tel que tu les veux...
en supposant i=3 et j=3 tu teste
If Sheets("1").Range("H3").Value = Sheets("2").Range("C3" ).Value Then
'Alors tu met dans
Sheets("2").Range("B3").Value = Sheets("1").Range("G3").Value
mais sans savoir ce que tu à sur ton classeur ça devient difficile de comprendre.