siham2010
Messages postés12Date d'inscriptionmercredi 3 décembre 2008StatutMembreDernière intervention29 décembre 2010
-
2 nov. 2010 à 15:56
cs_Fabrice90
Messages postés18Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention16 octobre 2011
-
4 nov. 2010 à 18:30
Bonjour,
j'ai un userform où j'ai deux textbox pour entrer les date et un bouton test.
quand je clique sur le bouton test, il faudrait qu'il m'affiche le nombre de fois où je trouve la désignation vrai ou faux selon le fichier excel ci dessous:
Date Designation
1/10/2000 Vrai
2/03/1999 Vrai
4/05/2006 Faux
c'est pour cela il faut parcourir la colonne date et une une fois il trouve les intervales des dates saisies sur le textbox, on calcule le nombre de fois où la designation vrai ou faux apparait.
cs_Fabrice90
Messages postés18Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention16 octobre 20111 2 nov. 2010 à 16:49
Salut,
C'est assez simple :
[i]
On lit ligne par ligne tant que la cellule n'est pas vide
On récupère la valeur de la cellule
Si la valeur est 'Vrai' on incrémente 'nb_Vrai'
Si la valeur est 'Faux' on incrémente 'nb_Faux'/i
i = 1
nb_Vrai = 0
nb_Faux = 0
Do While CELLS(i,1).value <> "" 'Tant que la cellule n'est pas vide
If CELLS(i,1).value = "Vrai" then
nb_Vrai = nb_Vrai + 1 'Incrémente si la cellule contient 'Vrai'
End If
If CELLS(i,1).value = "Faux" then
nb_Faux = nb_Faux + 1 'Incrémente si la cellule contient 'Faux'
End If
i = i + 1 'Passe à la ligne suivante
Loop
MsgBox "Nombre de vrai : " & nb_Vrai & " et nombre de faux : " & nb_Faux
NB : 'CELLS(1,1).value' est la valeur de la cellule ligne 1, colonne 1 (A1)
'CELLS(2,1).value' est la valeur de la cellule ligne 2, colonne 1 (B1)
etc ...
Voilà, j'espère que ça va t'aidé!
Je viens de le codé, je ne l'ai pas testé mais je pense qu'il fonctionne.
cs_Fabrice90
Messages postés18Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention16 octobre 20111 2 nov. 2010 à 17:07
Oups, j'ai oublié une condition!^^
i = 1
nb_Vrai = 0
nb_Faux = 0
Do While CELLS(i,1).value <> "" 'Tant que la cellule n'est pas vide
If DateMin < CELLS(i,1).value AND DateMax > CELLS(i,1).value then
If CELLS(i,2).value = "Vrai" then
nb_Vrai = nb_Vrai + 1 'Incrémente si la cellule contient 'Vrai'
End If
If CELLS(i,2).value = "Faux" then
nb_Faux = nb_Faux + 1 'Incrémente si la cellule contient 'Faux'
End If
End If
i = i + 1 'Passe à la ligne suivante
Loop
MsgBox "Nombre de vrai : " & nb_Vrai & " et nombre de faux : " & nb_Faux
siham2010
Messages postés12Date d'inscriptionmercredi 3 décembre 2008StatutMembreDernière intervention29 décembre 2010 2 nov. 2010 à 17:09
Merci.
je dois tester par rapport aux dates saisies dans les textbox1 et textbox2 et les comparer avec les dates que j'ai dans mon fichier excel et après faire le calcul du nombre de vrai et faux
siham2010
Messages postés12Date d'inscriptionmercredi 3 décembre 2008StatutMembreDernière intervention29 décembre 2010 3 nov. 2010 à 13:18
mon fichier excel est le suivant:
Date designation
6/1/1950
7/3/1950
8/1/1950
9/1/1950
10/2/1950 VRAI
11/1/1950 VRAI
12/1/1950 VRAI
1/2/1951 VRAI
2/1/1951 VRAI
3/1/1951 VRAI
6/1/1951 FAUX
7/2/1951 FAUX
Le code que j'ai essayé est ce ceci mais ça marche pas:
Private Sub CommandButton1_Click()
Dim i, nb_Vrai, nb_Faux, j, debut, fin As Integer
nb_Vrai = 0
nb_Faux = 0
i = 5
Do While Cells(i, 1).Value <= TextBox1.Value
i = i + 1
Loop
debut = i
j = i
Do While Cells(i, 1).Value <= TextBox2.Value
j = j + 1
Loop
fin = j - 1
For i = debut To fin
If Cells(i, 4).Value = "VRAI" Then
nb_Vrai = nb_Vrai + 1 'Incrémente si la cellule contient 'Vrai'
End If
If Cells(i, 4).Value = "FAUX" Then
nb_Faux = nb_Faux + 1 'Incrémente si la cellule contient 'Faux'
End If
Next i 'Passe à la ligne suivante
'MsgBox "Nombre de vrai : " & nb_Vrai & " et nombre de faux : " & nb_Faux
End Sub
Merci pour votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Fabrice90
Messages postés18Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention16 octobre 20111 3 nov. 2010 à 17:43
Salut,
Pourquoi ça ne marche pas? Quel message d'erreur as tu?(si t'en as un) Que récupère tu dans nb_Vrai et nb_Faux?
Je ne comprend pas pourquoi tu fait deux boucles while!...
Le code suivant devrait fonctionner :
Private Sub CommandButton1_Click()
i = 2
nb_Vrai = 0
nb_Faux = 0
DateMin = TextBox1.Value
DateMax = TextBox2.Value
Do While CELLS(i,1).value <> "" 'Tant que la cellule n'est pas vide
If DateMin <= CELLS(i,1).value AND DateMax >= CELLS(i,1).value then
If CELLS(i,2).value = "Vrai" then
nb_Vrai = nb_Vrai + 1 'Incrémente si la cellule contient 'Vrai'
End If
If CELLS(i,2).value = "Faux" then
nb_Faux = nb_Faux + 1 'Incrémente si la cellule contient 'Faux'
End If
End If
i = i + 1 'Passe à la ligne suivante
Loop
MsgBox "Nombre de vrai : " & nb_Vrai & " et nombre de faux : " & nb_Faux
End Sub
NB : 'i' Peut commencer à 2, les conditions si cellule = Vrai (ou Faux) ne vont pas être valable et donc les variables nb_Vrai et nb_Faux ne seront pas incrémentées.
TextBox1 est la date la plus petite saisie et
TextBox2 est la date la plus grande saisie.
siham2010
Messages postés12Date d'inscriptionmercredi 3 décembre 2008StatutMembreDernière intervention29 décembre 2010 4 nov. 2010 à 11:15
il n ya pas de message d'erreur mais on recupere 0 dans nb_vrai et nb_faux. j'ai essayé de preciser sur quelle feuille va travailler et aussi de declarer DateMin et DateMax as Date mais ça ne marche pas.
Dim ws_1 As Worksheet
Set ws_1 = Worksheets("feuille1")
i = 2
nb_Vrai = 0
nb_Faux = 0
DateMin = TextBox1.Value
DateMax = TextBox2.Value
Do While ws_1.Cells(i, 1).Value <> "" 'Tant que la cellule n'est pas vide
If DateMin <= ws_1.Cells(i, 1).Value And DateMax >= ws_1.Cells(i, 1).Value Then
If ws_1.Cells(i, 4).Value = "VRAI" Then
nb_Vrai = nb_Vrai + 1 'Incrémente si la cellule contient 'Vrai'
End If
If ws_1.Cells(i, 4).Value = "FAUX" Then
nb_Faux = nb_Faux + 1 'Incrémente si la cellule contient 'Faux'
End If
End If
i = i + 1 'Passe à la ligne suivante
Loop
'MsgBox "Nombre de vrai : " & nb_Vrai & " et nombre de faux : " & nb_Faux
End Sub
je pense qu'au niveau de la comparaison des deux dates que ça ne marche pas.
Merci pour votre aide
cs_Fabrice90
Messages postés18Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention16 octobre 20111 4 nov. 2010 à 18:30
Salut,
J'ai essayé ce code chez moi et ça fonctionne niquel :
Sub Bouton_Clic()
i = 2
nb_Vrai = 0
nb_Faux = 0
DateMin = CDate(Worksheets("Feuil1").TextBox1.Value)
DateMax = CDate(Worksheets("Feuil1").TextBox2.Value)
Do While Cells(i, 1).Value <> "" 'Tant que la cellule n'est pas vide
If DateMin <= Cells(i, 1).Value And DateMax >= Cells(i, 1).Value Then
If Cells(i, 2).Value = "Vrai" Then
nb_Vrai = nb_Vrai + 1 'Incrémente si la cellule contient 'Vrai'
End If
If Cells(i, 2).Value = "Faux" Then
nb_Faux = nb_Faux + 1 'Incrémente si la cellule contient 'Faux'
End If
End If
i = i + 1 'Passe à la ligne suivante
Loop
MsgBox "Nombre de vrai : " & nb_Vrai & " et nombre de faux : " & nb_Faux
End Sub
La fonction CDate() convertie une chaine en Date.
Normalement tu n'a pas besoin de spécifier la feuille que tu utilise mais on ne sait jamais,
moi j'ai dû lui spécifier la feuille pour récupérer la valeur des TextBoxs.
Si ça ne fonctionne toujours pas (c'est que ta pas de chance!^^) utilise le débeugeur et regarde là ou ça coince.