AV
"patrick lyon" <patr...@lyon.com> a écrit dans le message news:
baajku$9m...@news.rd.francetelecom.fr...
Avec ce test cela devrait marcher :
If i > 4 and (i - 3) Mod 6 <> 0 then
traitement des lignes
endif
>-----Message d'origine-----
>.
>
Lorsque i est égal à l'une des valeurs à exclure - 1, rajoute un i + 1
Si les valeurs sont régulières comme dans ton exemple, utilise un modulo, sinon
un Or :
For i = 4 To 30
If i Mod 6 = 3 Then
i = i + 1
End If
Ton traitement
Next i
ou
For i = 4 To 30
If i = 6 Or i = 12 Or i = 19 Then
i = i + 1
End If
Ton traitement
Next i
patrick lyon a écrit :
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
"Haxo" <ha...@trucs.com> a écrit dans le message news:
082b01c31e08$cd5de400$a401...@phx.gbl...
Initialise une variable avec une valeur suffisamment basse pour être sûr qu'elle
est inférieure à la valeur maximale de la colonne, puis lors de chaque passage de
la boucle fais un test :
ValMaxi = -10^100
For i = 4 to ppnbligne + 5
' Exclusion lignes 9, 15, 21, ...
If i Mod 6 = 3 Then
i = i + 1
End If
' MAJ ValMaxi
If "Valeur correspondant à la ligne en cours" > ValMaxi then
ValMaxi = "Valeur correspondant à la ligne en cours"
End If
Next i
patrick lyon a écrit :
> ok j'ai bien lu vos 3 réponses
--
"patrick lyon" <patr...@lyon.com> a écrit dans le message de news:
baajku$9m...@news.rd.francetelecom.fr...
Me semble que ça va sauter des lignes (notamment au début où i = 4)
AV
> For i = 4 To 30
> If i Mod 6 = 3 Then
> i = i + 1
> End If
> Ton traitement
> Next i
>
Avec ce code, tu vas sauter 2 lignes à chaque fois (le Next incrémentant
aussi). Donc, tu passes outre la 10ième, la 16ième, etc.
AMA, il vaut mieux:
For i = 4 To 30
If i Mod 6 <> 3 Then
Ton Traitement
End If
Next i
Salutations,
Daniel M.
Tu te trompes, ;-((
Je sais bien que le Next incrémente aussi, c'est même le but du jeu ;-))
Cela marche parfaitement :
Je saute 1 ligne et pas deux si le test
If i Mod 6 = 3 Then
est positif.
Exemple avec i = 8 : 8 modulo 6 = 2
Le test est négatif, i reste à 8 et le traitement est exécuté.
Next i
i passe à 9. 9 modulo 6 = 3
Le test est négatif, i passe à 10 et le traitement est exécuté.
Next i
i passe à 11. 11 modulo 6 = 5
Le test est négatif, i reste à 11 et le traitement est exécuté.
...
Le traitement a été exécuté pour les valeurs 8, 10 et 11.
Seule la valeur 9 a été sautée. Ce qui était le but recherché.
Si tu n'es pas convaincu, lance cette procédure :
Sub BoucleAvecSauts()
Dim i As Integer
For i = 4 To 30
If i Mod 6 = 3 Then
i = i + 1
End If
ActiveCell.Offset(i) = i
Next i
End Sub
"Daniel.M" a écrit :
--
"Michel Gaboly" <mic...@gaboly.com> a écrit dans le message news:
3EC8E928...@gaboly.com...
C'est clair ;-))
L'emploi de TEXTE(MOYENNE()) est astucieux, bravo.
patrick lyon a écrit :
"AV" <alain....@wanadoo.fr> a écrit dans le message news:
ORZsY3hH...@tk2msftngp13.phx.gbl...
;o)
"Michel Gaboly" <mic...@gaboly.com> a écrit dans le message news:
3EC9DBC0...@gaboly.com...
patrick lyon a écrit :
Je me suis trompé en effet. J'aurais pu tester ton code au moins avant de
t'écrire! :-(
Car je voyais "Ton Traitement" dans le Else. Mais... il y a pas de Else!
:-)
Salutations,
Daniel M.
"Michel Gaboly" <mic...@gaboly.com> wrote in message
news:3EC9D1B8...@gaboly.com...
Pa ni problem ;-)))
"Daniel.M" a écrit :
--