Bonjour tout le monde!
J'ai un drôle de bug dans mon code et je me demande si ce n'est pas un problème de VB. Je m'explique:
Pour commencer, mes paramètres régionaux sont sur Français Canada.
Voici mon bout de code:
L'erreur ce situe au niveau du If (sous le commentaire 'XXX l'erreur...). Cela génère une erreur de type mismatch. Par contre, lorsque je change mes paramètre régionaux pour Anglais Canada, il n'y a plus d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 With m_oParent.fxgServiceLines For iRow = 1 To .Rows - 1 'Find the current line. If .TextMatrix(iRow, miPHONE_NUMBER_COL) = m_oPhoneLine.PhoneNo And _ .TextMatrix(iRow, miSTART_DATE_COL) = m_sStartDate And _ .TextMatrix(iRow, miEND_DATE_COL) = m_sEndDate Then 'XXX l'erreur est le If. If .TextMatrix(iRow, miIN_SERVICE_COL) And CDate(m_sStartDate) <= Date Then ' ' Code à exécuter ' End If Next iRow End With
Mais, le pire ne vient pas des paramètre régionaux. Lorsque je mets les arguments du If dans des variables avant, tout fonctionne peut importe le paramètre régionaux choisi. Voici le code où tout fonctionne bien:
le If de cette façon façon fonctionne aussi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 With m_oParent.fxgServiceLines For iRow = 1 To .Rows - 1 'Find the current line. If .TextMatrix(iRow, miPHONE_NUMBER_COL) = m_oPhoneLine.PhoneNo And _ .TextMatrix(iRow, miSTART_DATE_COL) = m_sStartDate And _ .TextMatrix(iRow, miEND_DATE_COL) = m_sEndDate Then 'XXX mettre argument du If dans variables Dim matrix As Boolean Dim dte As Boolean matrix = .TextMatrix(iRow, miIN_SERVICE_COL) dte = CDate(m_sStartDate) <= Date 'XXX ancien If qui produit l'erreur. 'If .TextMatrix(iRow, miIN_SERVICE_COL) And CDate(m_sStartDate) <= Date Then 'XXX nouveau If, tout est OK! If matrix And dte Then ' ' Code à exécuter ' End If Next iRow End With
mais pas de cette façon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If matrix And CDate(m_sStartDate) <= Date Then
Notez que 'fxgServiceLines' est un flexgrid
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If .TextMatrix(iRow, miIN_SERVICE_COL) And dte Then
Quelqu'un à une idée car je trouve ça très bizarre ce genre de comportement.
Merci à tous,
mr. Bungle








Répondre avec citation




Partager