Pb boucle [Résolu]

Signaler
Messages postés
114
Date d'inscription
vendredi 9 avril 2010
Statut
Membre
Dernière intervention
16 août 2011
-
Messages postés
114
Date d'inscription
vendredi 9 avril 2010
Statut
Membre
Dernière intervention
16 août 2011
-
bonjour
j'ai fait une macro qui me permet de compter le nombre de ligne si la date est comprise entre textbox4.text et textbox5.text.
exemple je veux que ca compte le nombre de ligne contenant le mot bidule pour la période allant du 03/05/2010 au 11/05/2010.
pour mon premier jour cela va bien compter mais après quand je lui dit de s'arréter quand la date est égale au 11/05/2010, celle ci continue et je ne comprends pas pourquoi.
voici ma macro. le problème se situe pour nb2

Private Sub TextBox6_Enter()
Dim nbjour As Integer
Dim vclasseur As Worksheet, vclasseur2 As Worksheet
Dim nbligne As Integer
Dim vchemin As String
Dim l As Integer, j As Integer, p As Integer, v As Integer, jour As Date, h As Integer, g As Integer, m As Integer, i As Integer
Dim nb2 As Integer

Dim dated As String, datef As String, datefin As Date

datefin = TextBox5.Text

Dim dd As Date

vchemin = "C:"
Set vclasseur = Workbooks("planning.xls").Worksheets("Feuil5")
Set vclasseur2 = Workbooks("planning.xls").Worksheets("Feuil4")

dd = TextBox4.Text
j = 2
While vclasseur.Cells(j, 1) <> dd
j = j + 1
Wend
dated = vclasseur.Cells(j, 6)
p = 2
While vclasseur2.Cells(p, 2) <> dated
p = p + 1
Wend
l = 6
While vclasseur2.Cells(1, l) <> ComboBox4.Text
l = l + 1
Wend
v = p
While UCase(vclasseur2.Cells(v, l)) <> UCase(ComboBox2.Text & " " & Label11.Caption)
v = v + 1
Wend
nbligne = 0
While vclasseur2.Cells(v, 2) = dated
While Not IsEmpty(vclasseur2.Cells(v, 1)) And UCase(vclasseur2.Cells(v, l)) = UCase(ComboBox2.Text & " " & Label11.Caption)
nbligne = nbligne + 1
v = v + 1
Wend
v = v + 1
While Not IsEmpty(vclasseur2.Cells(v, 1)) And UCase(vclasseur2.Cells(v, l)) = UCase(ComboBox2.Text & " " & Label11.Caption)
nbligne = nbligne + 1
v = v + 1
Wend
v = v + 1
While Not IsEmpty(vclasseur2.Cells(v, 1)) And UCase(vclasseur2.Cells(v, l)) = UCase(ComboBox2.Text & " " & Label11.Caption)
nbligne = nbligne + 1
v = v + 1
Wend
Wend

nb2 = 0
jour = DateAdd("y", 1, dd)
While jour <= TextBox5.Text
h = 2
While vclasseur.Cells(h, 1) <> jour
h = h + 1
Wend
datef = vclasseur.Cells(h, 6)
m = 2
While vclasseur2.Cells(m, 2) <> datef
m = m + 1
Wend
g = 6
While vclasseur2.Cells(1, g) <> ComboBox4.Text
g = g + 1
Wend
i = m
While UCase(vclasseur2.Cells(i, g)) <> UCase(ComboBox2.Text & " " & Label11.Caption)
i = i + 1
Wend
While Not IsEmpty(vclasseur2.Cells(i, 1)) And jour <TextBox5.Text And UCase(vclasseur2.Cells(i, g)) UCase(ComboBox2.Text & " " & Label11.Caption)
nb2 = nb2 + 1
i = i + 1
Wend
i = i + 1
jour = DateAdd("y", 1, jour)
Wend
TextBox6.Text = (nbligne + nb2) * 0.5


je vous remercie par avance pour votre aide

cordialement
nanie

2 réponses

Messages postés
114
Date d'inscription
vendredi 9 avril 2010
Statut
Membre
Dernière intervention
16 août 2011

bonjour
merci pour ta réponse mais en fait j'ai trouvé ct juste un pb d'écriture de la macro

merci pour ton aide

nanie
Messages postés
416
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
7 janvier 2018
1
Bonjour Nani12,

1ère solution possible:
Rapidement, je ne suis pas sûr mais quand tu tape:
vclasseur.Cells(h, 1)
il me semble que pour avoir la valeur de la cellule, il faut ajouter .value soit
vclasseur.Cells(h, 1).value
Ca ne fait peut être rien mais excel est parfois capricieux.
Si ca ne marche pas envoi moi un message, je regarde rarement le forum.

Bonne Prog Cgsi3