Couleur d'une row dans un FlexGrid [Résolu]

Messages postés
52
Date d'inscription
samedi 28 août 2004
Dernière intervention
13 juin 2009
- 1 sept. 2004 à 15:42 - Dernière réponse :
Messages postés
52
Date d'inscription
samedi 28 août 2004
Dernière intervention
13 juin 2009
- 2 sept. 2004 à 18:40
Voilà j'aimerais savoir comment je pourrais faire pour que dans mon FlexGrid mes rows on des couleur différente.

Je m'explique la 1er devra être de couleur BLANCHE et la seconde d'une couleur verte et la 3éme de couleur blanche et la 4éme ...

Je sais que je dois crée une boucle pour sa, mais je sais pas encore faire de boucle.

Merci
Afficher la suite 

15 réponses

Meilleure réponse
Messages postés
340
Date d'inscription
lundi 8 mars 2004
Dernière intervention
7 juillet 2005
- 2 sept. 2004 à 17:56
3
Merci
oui je parle des fixrox et fixcol ; elle doivent être considérées comme un colonne normale. Ainsi, si la première ligne (sonc la N°0) et un ligne fixée, ben la première case utilisable par l'utilisateur (par défaut blanche pour + clair), ben cette case sera en Row 1, Col 0 ... si tu me suis bien.

Bien sûr que ton code est bon. Mais on s'habitue rapidement à la flexgrid ; la première fois on ne sais pas où donner de la tête mais on comprend bien vite.

Merci Ze_Dam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Messages postés
340
Date d'inscription
lundi 8 mars 2004
Dernière intervention
7 juillet 2005
- 1 sept. 2004 à 16:13
0
Merci
ben en fait tu dois le faire case par case. Tu sélectioone la ligne 1, puis tu deplace a chaque fois la colonne et donc à chaque fois tu pourra choisir la couleur

Ligne 1 colonne1 - on met la couleur
Ligne 1 colonne2 - on met la couleur
etc

ah oui tu ne sais pas encore faire de boucles. mmmm ben tu dois abolument les apprendre avant. regarde donc sur vbfrance, il y a des sources et certainement des tutoriels

je peux t'assurer qu'une fois que tu manieras les boucles, la vie sera bien plus facile en matière de prog ;)
Messages postés
52
Date d'inscription
samedi 28 août 2004
Dernière intervention
13 juin 2009
- 1 sept. 2004 à 21:07
0
Merci
Qq pour m'aider plus en détaille car je trouve rien ... ??
Messages postés
340
Date d'inscription
lundi 8 mars 2004
Dernière intervention
7 juillet 2005
- 1 sept. 2004 à 21:24
0
Merci
dans la flexgird, tu place le "focus" sur une case en désignant sa ligne et sa colonne. Ainsi, pour changer la couleur de la case ligne 2 colonne 5, tu feras :

MSFG.Row = 2
MSFG.Col = 5
MSFG.BackColor = LaCouleur

Et Voilà alors pour changer la couleur de fond de toute la ligne 2, on va procédé comme suit. Aussi, il y a 6 colonnes.

Dim A As Integer
MSFG.Row = 2
For A = 1 To 6
MSFG.Col = A
MSFG.CellBackColor = &HFF&
Next A


ben normalement, la première ligne est la ligne 0 et c'est la même chose pour les lignes mais bon je vais pas compliquer pour ca. Bon ca t'explique ce que tu souhaites faire. D'abord on positionne sur la ligne 2, après quoi la boucle, là ou il y a A, va se boucler 6 fois et a prendra respectivement la valeur 1, puis 2, etc. Puis on positionne la colonne grace à la valeur de A. Ca va provoquer que la colonne va d'abord être sur 1, puis sur 2, etc. CellBackColor s'utilise pour modifie rla couleur de la cellule qui a le focus. Et à côté c l'identifiant du rouge
Messages postés
340
Date d'inscription
lundi 8 mars 2004
Dernière intervention
7 juillet 2005
- 1 sept. 2004 à 21:25
0
Merci
merde au début d emon message j'ai mis BackColor mais c'est bien CellBackColor car BackColor modifie la couleur de toutes les cases et CellBackColor seulement de la case qui a le focus. Ca se voit dans le nom d'ailleurs ;)
Messages postés
52
Date d'inscription
samedi 28 août 2004
Dernière intervention
13 juin 2009
- 1 sept. 2004 à 21:37
0
Merci
Merci pour ton message et de ton aide.

Je vais essayé ton code dés dans un petit instant.
Moi de mon coté j'essaye d'apprendre les boucles.

Pourrais tu me dire pk celle ci ne fonctionne pas (sa concerne la meme boucle que tu ma faite mais autrement) merci

While RowPos = DataBase_1.Rows
If RowColor = 1 Then
DataBase_1.Row = RowPos
DataBase_1.CellBackColor = "&H8000000F&"
RowColor = 2
Else
DataBase_1.Row = RowPos
DataBase_1.CellBackColor = "&H00000000&"
RowColor = 1
Wend
Messages postés
340
Date d'inscription
lundi 8 mars 2004
Dernière intervention
7 juillet 2005
- 1 sept. 2004 à 21:44
0
Merci
apparemment y manque des trucs dedans. RowPos ne change jamais. Je vois aussi qu'il doit passer d'un RowColor 1 à 2 doc il va une fois mettre la couleur "&H8000000F&" puis l'autre et ainsi de suite. Mais on ne defini pas de colonne ni de ligne sur laquelle on doit se placer. CellBackColor ne saurais pas fonctionner. AH et il manque le End If aussi mais bon la boucle reste fausse quand même.
Messages postés
52
Date d'inscription
samedi 28 août 2004
Dernière intervention
13 juin 2009
- 1 sept. 2004 à 22:01
0
Merci
C'est normal que quand je met par exemple

DataBase_1.Row = 0

Tout ce qu'il fait c'est une simple sélection, et non pas la sélection de la ligne sur la quelle je veut travaillé.

J'espere que je était claire, et désole du temps que tu perd à m'aider.
Messages postés
340
Date d'inscription
lundi 8 mars 2004
Dernière intervention
7 juillet 2005
- 1 sept. 2004 à 22:09
0
Merci
.. ben non pas très clair... bon réexplique moi tout ce que tu veux, moi je vais pieuter, je reprendrai tout ca demain, trop tard pour réfléchir

PS: ca ne m'emmerde pas du tout de t'aider, car mois aussi il y en a qui passent parfois un tempsfous pour m'aider aloors.

@++

ah si je viens de comprendre lool oui d'ac je pige

bye
Messages postés
52
Date d'inscription
samedi 28 août 2004
Dernière intervention
13 juin 2009
- 2 sept. 2004 à 00:15
0
Merci
il est minuit, je suis claqué. Voilà où j'en suis.

Dim RowColor
Dim RowPos
Dim ColPos

RowPos = 0
RowColor = 1
ColPos = 0

For RowPos = 0 To DataBase_1.Rows
DataBase_1.Row = RowPos
If RowColor = 1 Then
For ColPos = 0 To 4
DataBase_1.Col = ColPos
DataBase_1.CellBackColor = &H8000000F
RowColor = 2
Next

Else
For ColPos = 0 To 4
DataBase_1.Col = ColPos
DataBase_1.CellBackColor = &H0&
RowColor = 1
Next

End If
RowPos = RowPos + 1
Next

Je commence à maitrissé un peu les boucles maintenant, les problémes sont les suivant

1- au lieu de d'affecter une couleur pour les rows par multible de 2 il le fait par multiple de 4.

2- Si le nombre total de mes rows est paire, alors visualbasic génere une erreur.

Merci
Messages postés
340
Date d'inscription
lundi 8 mars 2004
Dernière intervention
7 juillet 2005
- 2 sept. 2004 à 11:36
0
Merci
pour ton problème n°2, il fait mettre :

For RowPos = 0 To DataBase_1.Rows - 1

Car la ligne n°1 porte le numero 0, c comme ca dans vb, on commence par 0.
pour le problème n°1, il ne faut pas mettre RowPos RowPos + 1 car dans la boucle For, l'incrémentation est automatique. Donc en mettant RowPos RowPos + 1, ca augmente de 1, ajouter à ca l'augmentation auto de For donc le problème est là.

enfin, pour la déclaration des 3 variables, tu dois spécifier leur type. Danc ce cas ci, étant donné que leur valeur ne sont pas décimales, tu choisirras Integer :

Dim RowColor As Integer
Dim RowPos As Integer
Dim ColPos As Integer

si tu ne spécifies rien, elle sont de type variant. Bon je vais pas te déballer le discours la-dessus, mais les performances du prog seront diminuées. Tu apprendras bien vite tout ca pour l'optimisation du code.
Messages postés
52
Date d'inscription
samedi 28 août 2004
Dernière intervention
13 juin 2009
- 2 sept. 2004 à 15:24
0
Merci
Ben voilà encore merci de ton aide, juste un bete truc. Lors de mon chargement de ma base de donné sur mon FlexGrid. Mon flexgrid est remplie a partir de la deuxiéme ligne. Pourtant j'ai mis cette ligne de code juste avant le chargement de ma base de donnée :

DataBase_1.Row = 0
DataBase_1.Col = 0
Messages postés
340
Date d'inscription
lundi 8 mars 2004
Dernière intervention
7 juillet 2005
- 2 sept. 2004 à 17:39
0
Merci
ouais avec ces lignes là tu positionnes sur la cas etout en haut à gauche. Note bien aussi qu'il y a les case "titres" mais elles sont considérées comme colonnes et lignes classiques
Messages postés
52
Date d'inscription
samedi 28 août 2004
Dernière intervention
13 juin 2009
- 2 sept. 2004 à 17:48
0
Merci
Je suposse que tu parle de mes FixRow et FixCol, je les est supprimé via les propriétés de mon FlexGrid.

Donc mon code est bon ???
Messages postés
52
Date d'inscription
samedi 28 août 2004
Dernière intervention
13 juin 2009
- 2 sept. 2004 à 18:40
0
Merci
Voila c'est bon, j'ai corrigé il y'avais une erreur dans mon code encore merci de ton aide.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.