Boucle difficile ...

C

carlos

Guest
Salut
J'ai un probleme avec les x .... sur :

"If nb + 7 * (i - 1) <= prem(x) Or nb + 7 * (i - 1) >= deux(x) _
Then Range("c" & Range("c30").End(xlUp).Row + 1) = nb + 7 * (i - 1) Else
If nb + 7 * (i - 1) >= prem(x) And nb + 7 * (i - 1) <= deux(x) Then "
voici la macro entiere

Sub trouverdate()
Dim nb As Variant, prem(5) As String, deux(5) As String, i As Byte
Dim x As Byte

effacertout
nb = Range("a1")

For x = 1 To 5
prem(x) = Cells(2 + x, 1)
deux(x) = Cells(2 + x, 2)
Next x
For i = 1 To 30
If nb + 7 * (i - 1) <= prem(x) Or nb + 7 * (i - 1) >= deux(x) _
Then Range("c" & Range("c30").End(xlUp).Row + 1) = nb + 7 * (i - 1) Else
If nb + 7 * (i - 1) >= prem(x) And nb + 7 * (i - 1) <= deux(x) Then Range("c1") = ""
Next

End Sub
Merci
 

Pièces jointes

  • boucleIfElse.zip
    11.6 KB · Affichages: 12
  • boucleIfElse.zip
    11.6 KB · Affichages: 13
  • boucleIfElse.zip
    11.6 KB · Affichages: 12
T

tatiak

Guest
Bonjour,
dans la boucle if then else, la valeur "x" ne change pas et a pris la valeur 5 du dernier next précédent.
si tu veux tester les différentes bornes de prem(x) et deux(x), il faut imbriquer les 2 boucles for:

Sub trouverdate()
Dim nb As Variant, prem(5) As String, deux(5) As String, i As Byte
Dim x As Byte

effacertout
nb = Range("a1")

For i = 1 To 30
for x= 1 to 5
prem(x) = Cells(2 + x, 1)
deux(x) = Cells(2 + x, 2)
If nb + 7 * (i - 1) <= prem(x) Or nb + 7 * (i - 1) >= deux(x) _
Then Range("c" & Range("c30").End(xlUp).Row + 1) = nb + 7 * (i - 1) Else
If nb + 7 * (i - 1) >= prem(x) And nb + 7 * (i - 1) <= deux(x) Then Range("c1") = ""
Next x
next i
end sub
 
R

Robert

Guest
Salut Carlos, salut le forum,

dans cette partie :

For i = 1 To 30
If nb + 7 * (i - 1) <= prem(x) Or nb + 7 * (i - 1) >= deux(x) _
Then Range("c" & Range("c30").End(xlUp).Row + 1) = nb + 7 * (i - 1) Else
If nb + 7 * (i - 1) >= prem(x) And nb + 7 * (i - 1) <= deux(x) Then Range("c1") = ""
Next

x=6
d'où le message (enfin comme billet d'où on fait mieux...)

Soit il faut que tu définisses x soit il faut que tu rajoute une boucle :

For i = 1 To 30
For x=1 To 5
If nb + 7 * (i - 1) <= prem(x) Or nb + 7 * (i - 1) >= deux(x) _
Then Range("c" & Range("c30").End(xlUp).Row + 1) = nb + 7 * (i - 1) Else
If nb + 7 * (i - 1) >= prem(x) And nb + 7 * (i - 1) <= deux(x) Then Range("c1") = ""
Next x
Next i

Je te conseille aussi de déclarer tes variables de la sorte :

Dim nb As Date, Dim prem(5) As Date, Dim deux(5) As Date, Dim i As Byte, Dim x As Byte

À plus,

Robert
 
C

carlos

Guest
Bonjour
Au debut j'avais réalisé cette macro trouverdate2 qui ne prenait pas en compte les dates comprises entre les cellulues a3:b3

Sub trouverdate2()
Dim nb As Variant, prem As Variant, deux As Variant, msg As Variant, i As Byte

effacertout
nb = Range("a1")
prem = Range("a3")
deux = Range("b3")

For i = 1 To 30
If nb + 7 * (i - 1) <= prem Or nb + 7 * (i - 1) >= deux _
Then Range("c" & Range("c30").End(xlUp).Row + 1) = nb + 7 * (i - 1) Else
If nb + 7 * (i - 1) >= prem And nb + 7 * (i - 1) <= deux Then Range("c1") = ""
Next
End Sub

elle fonctionne tres bien mais ne repond pas completement à ce que je voulais .
C'est pour cela que j'avais imbriqué une variable x qui defini d'autres date à rejeter de a3:b12 par exemple (celle proposée au debut de ce message)
Si qq'un peut m'aider à prendre en compte toutes les dates .

MERCI
 

Pièces jointes

  • boucleIfElse.zip
    11.9 KB · Affichages: 15
  • boucleIfElse.zip
    11.9 KB · Affichages: 10
  • boucleIfElse.zip
    11.9 KB · Affichages: 14
C

carlos

Guest
excusez moi mais je fatigue
je devais ecrire
"Au debut j'avais réalisé cette macro trouverdate2 qui prenait en compte les dates comprises entre les cellulues a3:b3"

et

"non Au debut j'avais réalisé cette macro trouverdate2 qui ne prenait pas en compte les dates comprises entre les cellulues a3:b3"
 

Discussions similaires

Réponses
17
Affichages
930

Statistiques des forums

Discussions
312 571
Messages
2 089 809
Membres
104 278
dernier inscrit
LENZY