VB6 - MSFlexGrid

Signaler
Messages postés
19
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
9 septembre 2009
-
Messages postés
19
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
9 septembre 2009
-
Bonjour

je désire remplir une MSFlexGrid à partir d'une base acess
Le petit code joint fonctionne mais il ne m'affiche qu'une réponse alors qu'il y a plusieur réponse....

Set db = DBEngine.Workspaces(0).OpenDatabase("C:\DOSSIER\BASE.mdb")
sql = "SELECT * FROM TOTO where NUMERO like '" & Text1.Text & "*'"
Set ds = db.CreateDynaset(sql)
If ds.EOF Then
Titre = "RECHERCHE JOURNEE"
Message = "Aucune fiche avec ce N°, réessayer ?"
Reponse = MsgBox(Message, 48 + 4, Titre)
If Reponse = 7 Then Unload ME

End If
ligne = 1
Do Until ds.EOF
MSFlexGrid1.Rows = 0
MSFlexGrid1.Cols = 3
MSFlexGrid1.ColWidth(0) = 1500
MSFlexGrid1.ColWidth(1) = 1800
MSFlexGrid1.ColWidth(2) = 500
MSFlexGrid1.AddItem ds("CHAMPS1") & Chr(9) & ds("CHAMPS2") & Chr(9) & ds("CHAMPS3")
ds.MoveNext
MSFlexGrid1.Rows = ligne + 1
Loop
End If

Comment alterner la couleur des lignes (1 bleu puis 1 jaune et ainsi de suite)

Comment bloquer le clique dans la seconde colonne ?

Merci d'avance

dumedo

7 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Salut
A mon avis (pas vérifié), .Rows et .Cols définissent le nombre de lignes et de colonne mais pas la ligne / colonne courante --> Voir l'aide

Tu peux sortir ces lignes d'initialisation de ta boucle : inutile de répéter
MSFlexGrid1.Rows = 0 
MSFlexGrid1.Cols = 3 
MSFlexGrid1.ColWidth(0) = 1500 
MSFlexGrid1.ColWidth(1) = 1800 
MSFlexGrid1.ColWidth(2) = 500 


Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
+ "ligne + 1" donnera toujours 2 puisque tu n'incrémentes pas "ligne"

Apprends à debuguer avec les touches F9, F8 et F5 pour suivre pas à pas ce que fait ton programme, tu trouveras les erreurs beaucoup rapidement que sur le forum.
Messages postés
114
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 septembre 2010

Salut,

je suis à la bourre, je te laisse ce bout de code pour la couleur. Si j'ai le temps, je reviendrai sur ton message.

'coloriser des lignes
*************************
Private Sub couleur_lignes()
With MSFlexGrid1

'Colorer les lignes
If .Rows > 1 Then
For i = 1 To .Rows - 1
'Lignes paires rouge
If (i - 1) Mod 2 <> 0 Then
.Row = i
For j = 1 To .Cols - 1
.COL = j
.CellBackColor = RGB(249, 170, 170)
Next
End If
Next
End If
End With

End Sub

@+
Messages postés
19
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
9 septembre 2009

bonjour

Merci pour vos messages.

Pour l'alternance de couleur, cela ne fonctionne pas.

Maintenant j'arrive à afficher les résultats de la requete avec le code suivant

MSFlexGrid1.Rows = 0
MSFlexGrid1.Cols = 3
MSFlexGrid1.ColWidth(0) = 1500
MSFlexGrid1.ColWidth(1) = 1800
MSFlexGrid1.ColWidth(2) = 500
Do Until ds.EOF
MSFlexGrid1.AddItem ds("champ1") & Chr(9) & ds("champ2") & Chr(9) & ds("champs3")
ds.MoveNext
Loop


Par contre je ne peux pas sélectionner la cellule que je désire.
Je ne peux que récupérer la cellule A1 en haut à gauche....
Comment faire ????

Merci d'avance
Messages postés
114
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 septembre 2010

Salut,

Si mon code marche pas, c'est sûrement parce que j'ai oublié de déclaré les variables i et j :
il suffit de rajouter en ligne 2 :

Dim i, j As Integer

Ok, j'avoue c'est un gros oubli !!!

Voici donc le code corrigé :

'coloriser des lignes
*************************
Private Sub couleur_lignes()
With MSFlexGrid1
Dim i, j As Integer

'Colorer les lignes
If .Rows > 1 Then
For i = 1 To .Rows - 1
'Lignes paires en rose
If (i - 1) Mod 2 <> 0 Then
.Row = i
For j = 1 To .Cols - 1
.Col = j
.CellBackColor = RGB(249, 170, 170)
Next
End If
Next
End If
End With

End Sub
Messages postés
114
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 septembre 2010

Aïe !!! Grosse faute d'orthographe en plus. "j'ai oublié de déclarer" et non...

bon, je repars me coucher.

@+
Messages postés
19
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
9 septembre 2009

Bonjour

je te remercie et tout marche pour le mieux...

Un grand merci encore