Boucle VBA jusqu'à validation condition
skyzino
Messages postés
32
Statut
Membre
-
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un peu besoin de votre aide pour que cette procédure se répète jusqu'à ce que la condition soit réalisée
Dim Derlig As Long, i As Long
With Sheets("FTP")
Derlig = .Range("F" & Rows.Count).End(xlUp).Row
For i = 2 To Derlig
If .Cells(i, 8) < .Cells(1, 16) Then
.Range("F" & i) = .Range("H" & i) + 1
.Range("H" & i) = .Range("F" & i) + .Range("G" & i)
End If
Next i
End With
End Sub
Mais je ne sais pas trop comment configurer ma boucle, pourriez-vous m'orienter sur la marche à suivre...
Par avance merci
J'ai un peu besoin de votre aide pour que cette procédure se répète jusqu'à ce que la condition soit réalisée
Dim Derlig As Long, i As Long
With Sheets("FTP")
Derlig = .Range("F" & Rows.Count).End(xlUp).Row
For i = 2 To Derlig
If .Cells(i, 8) < .Cells(1, 16) Then
.Range("F" & i) = .Range("H" & i) + 1
.Range("H" & i) = .Range("F" & i) + .Range("G" & i)
End If
Next i
End With
End Sub
Mais je ne sais pas trop comment configurer ma boucle, pourriez-vous m'orienter sur la marche à suivre...
Par avance merci
A voir également:
- Boucle VBA jusqu'à validation condition
- Ethernet n'a pas de configuration ip valide - Guide
- Excel cellule couleur si condition texte - Guide
- Temps validation annonce le bon coin - Forum Réseaux sociaux
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Excel validation des données liste - Guide
7 réponses
Peut-êtr eque mon post ne traduit pas correctement ce que je souhaite faire.
Je souhaite que la procédure ne prennent fin que lorsque cells(i,8) soit supérieur à cells(1,16)
Merci pour ceux qui prendront le temps de me donner un coup de main
Je souhaite que la procédure ne prennent fin que lorsque cells(i,8) soit supérieur à cells(1,16)
Merci pour ceux qui prendront le temps de me donner un coup de main
tu peux utiliser les Exit For pour sortir de tes for quand la condition est réalisée
c'est ça que tu veux ?
c'est ça que tu veux ?
Bonjour,
Si par hasard j'ai compris ta demande
le test de sortie se fait en arrivant sur la ligne ou se fait il après les calculs?
si ap^rès les calculs
si "en arrivant"
.
Michel
Si par hasard j'ai compris ta demande
le test de sortie se fait en arrivant sur la ligne ou se fait il après les calculs?
si ap^rès les calculs
....
If .Range("H" & i) < .Range("P1") Then
.Range("F" & i) = .Range("H" & i) + 1
.Range("H" & i) = .Range("F" & i) + .Range("G" & i)
If .Range("H" & i) >= .Range("P1") Then Exit Sub
End If
...
si "en arrivant"
.
..
If .Range("H" & i) >= .Range("P1") Then
Exit For
Else
.Range("F" & i) = .Range("H" & i) + 1
.Range("H" & i) = .Range("F" & i) + .Range("G" & i)
End If
Michel
Bonjour,
Ce mec la n'était pas une lumière, car il était niais.
Dim Derlig As Long, i As Long
With Sheets("FTP")
Derlig = .Range("F" & Rows.Count).End(xlUp).Row
i = 2
Do Until .Cells(i, 8) >= .Cells(1, 16)
.Range("F" & i) = .Range("H" & i) + 1
.Range("H" & i) = .Range("F" & i) + .Range("G" & i)
i = i +1
Loop
End With
End Sub
Ce mec la n'était pas une lumière, car il était niais.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci à tous,
Pour ma part voici ce que j'avais fait.
Je vais essayer ta procédure chossette car la mienne est bien lente
Pour ma part voici ce que j'avais fait.
Je vais essayer ta procédure chossette car la mienne est bien lente
Dim Derlig As Long, i As Long
With Sheets("FTP")
Derlig = .Range("F" & Rows.Count).End(xlUp).Row
For i = 2 To Derlig
While .Cells(i, 8) < .Cells(1, 16)
If .Cells(i, 8) < .Cells(1, 16) Then
.Range("F" & i) = .Range("H" & i) + 1
.Range("H" & i) = .Range("F" & i) + .Range("G" & i)
End If
Wend
Next i
End With
End Sub
Chossette,
Le code que tu m'a communiqué n'agit pas sur les dates.
Merci quand même
Le code que tu m'a communiqué n'agit pas sur les dates.
Merci quand même
Bizarre, si ça fonctionnait avant, je ne vois pas pourquoi ça ne fonctionnerait plus maintenant. J'ai juste modifié le code pour qu'il fasse ce que tu demandes, jusqu'à ce que Cellule(i, 8) soit supérieure ou égale à Cellule(1,16).
Tu peux mettre un exemple de ce que tu souhaites faire ? Rends-toi sur cjoint.com pour créer un lien, et copie ensuite ce lien en réponse à cette conversation.
Cordialement.
Tu peux mettre un exemple de ce que tu souhaites faire ? Rends-toi sur cjoint.com pour créer un lien, et copie ensuite ce lien en réponse à cette conversation.
Cordialement.
houlà, pas sur que ça soit super de faire ça, une double boucle ?, est-ce vraiment utile?
le plus simple serait :
le plus simple serait :
Dim Derlig As Long, i As Long
With Sheets("FTP")
Derlig = .Range("F" & Rows.Count).End(xlUp).Row
For i = 2 To Derlig
If .Cells(i, 8) < .Cells(1, 16) Then
.Range("F" & i) = .Range("H" & i) + 1
' peut etre mieux avec ça : =====>> .Cells(i,6) = .Cells(i,8)+1
' .Cells(i,6) = .Cells(i,8)+1
.Range("H" & i) = .Range("F" & i) + .Range("G" & i)
' peut etre mieux avec ça : =====>>
'.Cells(i,8) = .Cells(i,6) + .Cells(i,7)
exit for
End If
Next i
End With
End Sub