Précédent   Forum des professionnels en informatique > Dotnet > Langages > VB.NET
VB.NET Forum d'entraide sur la programmation Visual Basic .NET. Avant de poster -> FAQ VB.NET, Articles VB.NET, Sources VB.NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2012, 14h44   #1
Futur Membre du Club
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 73
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Allemagne

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 73
Points : 18
Points : 18
Par défaut Problème Boucle For

Bonjour,

J'ai un problème au niveau de ma boucle Pour :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
For i=0 to MaDataGridView.RowCount
 
If condition1 et condition2 alors
   mon code
Elseif condition3 et conditio3n alors
   mon code
 
EndIf
 
If condition4 et condition5 alors
   mon code
Elseif condition6 et condition7 alors
   mon code
 
EndIf
 
 
If condition8 et condition9 alors
   mon code
Elseif condition10 et condition11 alors
   mon code
 
EndIf
 
Next


Mais voila, mon code ne va effectuer le code que pour les conditions 8-9 et 10-11.

Je me suis donc dit : 1 boucle pour = 1 série de condition, j'ai donc voulu faire une autre boucle Pour, mais quand je regarde en mode pas à pas détaillé, il n'y a que la première boucle qui s'effectue et après ça passe a la fin de la Sub...


Donc ma question est : Pourquoi quand je met toutes mes conditions dans une seule boucle pour, ça n'effectue que la derniere condition, et si réparti les conditions dans des boucles pour, il n'y en a qu'une qui est executée ?

Cordialement
Romain0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 14h54   #2
Modérateur
 
Avatar de Er3van
 
Homme Clément
Architecte Logiciel
Inscription : avril 2008
Messages : 1 364
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Architecte Logiciel
Secteur : Industrie

Informations forums :
Inscription : avril 2008
Messages : 1 364
Points : 2 075
Points : 2 075
Première intuition : ça vient du code qu'il y a dans tes conditions...
Tu peux donner le code complet ?
__________________
One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

-- Chuck Palahniuk, Fight Club, Chapter 3 --
Er3van est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 14h59   #3
Futur Membre du Club
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 73
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Allemagne

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 73
Points : 18
Points : 18
Bonjour,

bien sûr voici mon code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 For i = 0 To dgvDeclencheurs.RowCount
 
 
 
            'Dates de révisions
            If dgvDeclencheurs.Item(4, i).Value > Date.Now.AddMonths(-1) And dgvDeclencheurs(4, i).Value < Date.Now.AddMonths(3) Then
 
                dgvDeclencheurs.Item(4, i).Style.BackColor = Color.Black
                dgvDeclencheurs.Rows(i).DefaultCellStyle.ForeColor = Color.Red
 
            ElseIf dgvDeclencheurs.Item(4, i).Value > Date.Now.AddMonths(-3) And dgvDeclencheurs(4, i).Value < Date.Now.AddMonths(3) Then
 
                dgvDeclencheurs.Item(4, i).Style.ForeColor = Color.Orange
                dgvDeclencheurs.Rows(i).DefaultCellStyle.ForeColor = Color.Chocolate
 
            End If
 
            'Dates de piles
            If dgvDeclencheurs.Item(6, i).Value > Date.Now.AddMonths(+1) And dgvDeclencheurs(6, i).Value < Date.Now.AddMonths(3) Then
 
                dgvDeclencheurs.Item(6, i).Style.BackColor = Color.Black
                dgvDeclencheurs.Rows(i).DefaultCellStyle.ForeColor = Color.Red
 
            ElseIf dgvDeclencheurs.Item(6, i).Value > Date.Now.AddMonths(-3) And dgvDeclencheurs(6, i).Value < Date.Now.AddMonths(3) Then
 
                dgvDeclencheurs.Item(6, i).Style.BackColor = Color.Black
                dgvDeclencheurs.Rows(i).DefaultCellStyle.ForeColor = Color.Orange
 
            End If
 
            'Nombre de sauts
            If dgvDeclencheurs.Item(7, i).Value < dgvDeclencheurs.Item(8, i).Value Then
                dgvDeclencheurs.Item(8, i).Style.BackColor = Color.Black
                dgvDeclencheurs.Rows(i).DefaultCellStyle.ForeColor = Color.Red
 
 
            ElseIf dgvDeclencheurs.Item(7, i).Value * (90 / 100) < dgvDeclencheurs.Item(8, i).Value And dgvDeclencheurs.Item(7, i).Value > dgvDeclencheurs.Item(8, i).Value Then
                dgvDeclencheurs.Item(8, i).Style.BackColor = Color.Black
                dgvDeclencheurs.Rows(i).DefaultCellStyle.ForeColor = Color.Orange
 
            End If
        Next
Et il n'y a que ce code la qui est effectué :

Code :
1
2
3
4
5
6
7
8
9
10
11
      'Nombre de sauts
            If dgvDeclencheurs.Item(7, i).Value < dgvDeclencheurs.Item(8, i).Value Then
                dgvDeclencheurs.Item(8, i).Style.BackColor = Color.Black
                dgvDeclencheurs.Rows(i).DefaultCellStyle.ForeColor = Color.Red
 
 
            ElseIf dgvDeclencheurs.Item(7, i).Value * (90 / 100) < dgvDeclencheurs.Item(8, i).Value And dgvDeclencheurs.Item(7, i).Value > dgvDeclencheurs.Item(8, i).Value Then
                dgvDeclencheurs.Item(8, i).Style.BackColor = Color.Black
                dgvDeclencheurs.Rows(i).DefaultCellStyle.ForeColor = Color.Orange
 
            End If
Romain0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 15h08   #4
Modérateur
 
Avatar de Er3van
 
Homme Clément
Architecte Logiciel
Inscription : avril 2008
Messages : 1 364
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Architecte Logiciel
Secteur : Industrie

Informations forums :
Inscription : avril 2008
Messages : 1 364
Points : 2 075
Points : 2 075
A mon avis le problème c'est la comparaison entre ton dgvDeclencheurs.Item(4, i).Value et le DateTime retourné par AddMonths().

As-tu essayé de le convertir avec un DateTime.Parse/TryParse ?
__________________
One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

-- Chuck Palahniuk, Fight Club, Chapter 3 --
Er3van est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 15h12   #5
Futur Membre du Club
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 73
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Allemagne

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 73
Points : 18
Points : 18
Merci pour ta réponse rapide, non je n'ai pas essayé de le convertir avec un DateTime.Parse/TryParse car je ne connaissais pas, et de plus, le code fonctionne parfaitement quand j'enleve le dernier bout de code ('Nb sauts).

J'ai fait un pas a pas détaillé avec espion sur mes variables au début du code, tout fonctionne mais au fur et a mesure, j'ai l'impression qu'a chaque fois que la boucle pour recommence, alors elle ne vérifie plus dgvDeclencheurs.Item(4, i).Value et le DateTime.....
Romain0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 15h27   #6
Modérateur
 
Avatar de Er3van
 
Homme Clément
Architecte Logiciel
Inscription : avril 2008
Messages : 1 364
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Architecte Logiciel
Secteur : Industrie

Informations forums :
Inscription : avril 2008
Messages : 1 364
Points : 2 075
Points : 2 075
Si ça marche sans parsing, c'est que ta cellule doit déjà être de type Date pour ces colonnes là.

Quel est le type de la valeur pour les colonnes 7 et 8 ?
Code vb :
dgvDeclencheurs.Item(7, i).Value * (90 / 100) < dgvDeclencheurs.Item(8, i).Value
__________________
One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

-- Chuck Palahniuk, Fight Club, Chapter 3 --
Er3van est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 15h30   #7
Futur Membre du Club
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 73
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Allemagne

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 73
Points : 18
Points : 18
Citation:
Si ça marche sans parsing, c'est que ta cellule doit déjà être de type Date pour ces colonnes là.
Oui désolé j'ai oublié de le préciser...

Pour les colonnes 7 et 8, ce sont des Smallint qui sont récupéré dans ma BDD avec un GetValue
Romain0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 15h31   #8
Membre confirmé
 
Avatar de Neiflheim
 
Homme Fabien
Développeur .NET
Inscription : mai 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : mai 2011
Messages : 133
Points : 267
Points : 267
Envoyer un message via MSN à Neiflheim
Etant donné que l'indice des rows est de base 0, je ne comprend pas pourquoi tu n'obtiens aucune erreur dans ta boucle arrivé à i = rowCount

Code :
 For i = 0 To dgvDeclencheurs.RowCount
Devrait plutôt être

Code :
 For i = 0 To dgvDeclencheurs.RowCount -1
__________________
si mon message a été utile - si je suis à côté de la plaque - quand vous avez la réponse à votre question
Neiflheim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 15h33   #9
Futur Membre du Club
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 73
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Allemagne

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 73
Points : 18
Points : 18
Citation:
Envoyé par Neiflheim Voir le message
Etant donné que l'indice des rows est de base 0, je ne comprend pas pourquoi tu n'obtiens aucune erreur dans ta boucle arrivé à i = rowCount

Code :
 For i = 0 To dgvDeclencheurs.RowCount
Devrait plutôt être

Code :
 For i = 0 To dgvDeclencheurs.RowCount -1
Lorsque je commence fais For i = 1, alors la première ligne est ignorée, les composants DataGrid Commencent à 0 il me semble pourtant
Romain0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 15h49   #10
Membre confirmé
 
Avatar de Neiflheim
 
Homme Fabien
Développeur .NET
Inscription : mai 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : mai 2011
Messages : 133
Points : 267
Points : 267
Envoyer un message via MSN à Neiflheim
Oui ils commencent bien à 0, mais ils finissent à RowCount - 1
__________________
si mon message a été utile - si je suis à côté de la plaque - quand vous avez la réponse à votre question
Neiflheim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 10h01   #11
Futur Membre du Club
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 73
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Allemagne

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 73
Points : 18
Points : 18
Voici la solution à mon probleme :

Code :
Val(dgvDeclencheurs.Item(7, i).Value.ToString) < Val(dgvDeclencheurs.Item(8, i).Value.ToString)
Merci pour votre aide
Romain0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h17.


 
 
 
 
Partenaires

Hébergement Web