Boucle difficile ...

  • Initiateur de la discussion Initiateur de la discussion carlos
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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

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"
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
719
Réponses
2
Affichages
432
  • Question Question
Réponses
7
Affichages
378
Retour