Fonction pour colorier un flexgrid

Résolu
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 - 13 févr. 2012 à 14:25
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 15 févr. 2012 à 11:10
Bonjour,

j'ai vu un code (qui consiste à intercaler le coloriage d'un flexgrid) que je souhaiterai transformer en fonction que je pourrai appeler pour n'importe quel formulaire pour n'importe quel flexgrid. Voici ce que j'ai fait (dans un module) :

Public Sub colorierflexgrid(formulaire As Form, msf As MSFlexGrid)
    Dim k As Integer
    Dim T As Integer
    Dim msf As MSFlexGrid
    For k = 1 To formulaire.msf.Rows - 1 Step 2
        formulaire.msf.Row = k
        For T = 0 To formulaire.msf.Cols - 1
            formulaire.msf.Col = T
            formulaire.msf.CellBackColor = RGB(241, 222, 131)
        Next T
        If k + 1 > formulaire.msf.Rows - 1 Then Exit For
        formulaire.msf.Row = k + 1
        For T = 0 To formulaire.msf.Cols - 1
            formulaire.msf.Col = T
            formulaire.msf.CellBackColor = RGB(255, 255, 255)
        Next T
    Next k
End Sub


En supposant que j'ai un formulaire qui s'appelle formproduit dans lequel je souhaiterai colorier mon flexgrid msfproduit, j'appelle la fonction par :

colorierflexgrid formproduit, msfproduit


mais j'ai l'erreur suivante :

"L'objet ne gère pas cette propriété ou cette méthode".

Savez-vous quel est le problème s'il vous plaît?

Merci d'avance.

Cordialement.

5 réponses

js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 2
15 févr. 2012 à 10:58
Heu, désolé je pense que je me suis un peu précipité car ton code ne me permet pas de colorier les lignes par deux.

Voici le bon code (enfin, celui qui me permet de faire ce que je souhaite).

Public Sub colorierflexgrid(msf As MSFlexGrid)
    
    Dim k As Integer
    Dim T As Integer
    For k = 1 To msf.Rows - 1 Step 2
        msf.Row = k
        For T = 0 To msf.Cols - 1
            msf.Col = T
            msf.CellBackColor = RGB(255, 255, 102)
        Next T
        If k + 1 > msf.Rows - 1 Then Exit For
        msf.Row = k + 1
        For T = 0 To msf.Cols - 1
            msf.Col = T
            msf.CellBackColor = RGB(255, 255, 255)
        Next T
    Next k
    
End Sub


Merci pour tout et prends bien soin de toi.
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 févr. 2012 à 15:12
redondance !

Dim msf As MSFlexGrid
, msf As MSFlexGrid

ne servent a rien !

surtout que tu appelle au final

formulaire.msf

qui n'a meme rien a voir avec msfproduit ...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 févr. 2012 à 15:15
Faire simplement :

Public Sub colorierFlexgrid(msf As MSFlexGrid)
    Dim y As Integer
    Dim x As Integer
    For y = 1 To msf.Rows - 1
        msf.Row = k
        For x = 0 To msf.Cols - 1
            msf.Col = x
            if y And 1 Then
                msf.CellBackColor = RGB(241, 222, 131)
            Else 
                msf.CellBackColor = vbWhite
            End If
        Next x
   Next y
End Sub


et l'appel :

colorierFlexgrid msfproduit

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 2
15 févr. 2012 à 10:43
Bonjour Renfield et Merci pour ton aide. Ton code marche correctement . C'est exactement le résultat que je voulais.

Merci pour tout et excellente journée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 févr. 2012 à 11:10
voilà ce qu'on obtient lorsque je code de tête et que tu code dans un environnement non protégé...

active la déclaration obligatoire de tes variables.
(Option Explicit)

ca devrait t'indiquer mon erreur :

msf.Row = k

inutile de faire deux boucles, je le repète...

(le if y And 1 est un controle de parité...)

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Rejoignez-nous