begin process at 2012 02 14 20:21:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Datagridview avoir le Backcolor d'une cellule


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Datagridview avoir le Backcolor d'une cellule

lundi 18 mai 2009 à 09:24:37 | Datagridview avoir le Backcolor d'une cellule

bdl20042000

Bonjour,
je suis sous VS 2008 SP1 et Windows XP SP2.
J'ai apporté une mise en forme sur des cellules de la datagridview - jusqu'à là tout va bien.
C'est une gestion de planning.
Si une personne est en congé ce jour là, je mets la couleur Rouge dans cette cellule.

Je veux ensuite exporter rapidement le dgv vers Excel en gardant le mise en forme.
Cependant :
For Each cell As DataGridViewCell In DataGridView1.Rows(i).Cell
  cell.Style.BackColor.ToString ' -> m'affiche toujours "Color [Empty]"
Next

Dans le hearder, c'est DataGridView1.Columns(0).defaultcellstyle.backcolor et j'ai la couleur.
Mais peut être que c'est autre chose pour Cell ?

merci pour tout aide que quelqu'un pourrait m'apporter.
mardi 19 mai 2009 à 13:38:35 | Re : Datagridview avoir le Backcolor d'une cellule

bdl20042000

Réponse acceptée !
bonjour,
désolé, mais à priori cela fonctionne maintenant chez moi.
Voici le code qui permet d'exporter un datagridview vers excel en conservant les valeurs et la couleur de la cellule :
Imports Microsoft.Office.Interop
Imports System.Text

Public Sub ExportDgv2ExcelAvecMiseEnPage(ByVal DataGridView1 As DataGridView)
    ' Merci à http://www.vbfrance.com/codes/DATADRID-VERS-HTML_45079.aspx donc je me suis inspirer
                      
        Dim html As New StringBuilder("")

        'En tête html
        html.AppendLine("<html><body><center><table border='1' cellpadding='0' cellspacing='0'>")
        html.AppendLine("<table align=center border=1 ><tr bgcolor=silver>") ' gris clair

        Dim nbrLigne As Int32 = DataGridView1.Rows.Count - 1
        Dim nbrColonne As Int32 = DataGridView1.Columns.Count - 1
        Dim couleur As String
        Dim j As Int32

        If nbrColonne >= 255 Or nbrLigne >= 65535 Then
            If MessageBox.Show("Attention vous dépassez peut être les limites d'Excel !" & vbCrLf & "Voulez vous continuer ?", "Attention", MessageBoxButtons.YesNo) = vbNo Then Exit Sub
        End If

        ' Nom des champs
        For i As Int32 = 0 To nbrColonne
            j = InStr(DataGridView1.Columns(i).DefaultCellStyle.BackColor.ToString, "[")
            couleur = Mid(DataGridView1.Columns(i).DefaultCellStyle.BackColor.ToString, j + 1, Len(DataGridView1.Columns(i).DefaultCellStyle.BackColor.ToString) - j - 1)
            html.AppendLine("<td align='center' valign='middle' bgcolor=" _
                                    + couleur + ">" _
                            + DataGridView1.Columns(i).HeaderText + "</td>")
        Next

        If nbrLigne > -1 Then
            For i As Int32 = 0 To nbrLigne
                ' Remplissage des lignes
                html.AppendLine("<tr>")
                For Each cell As DataGridViewCell In DataGridView1.Rows(i).Cells
                    j = InStr(cell.Style.BackColor.ToString, "[")
                    couleur = Mid(cell.Style.BackColor.ToString, j + 1, Len(cell.Style.BackColor.ToString) - j - 1)
                    If couleur <> "Empty" Then
                            html.AppendLine("<td align='center' valign='middle' bgcolor=" _
                                    + couleur _
                                    + ">" + "</td>")
                    Else
                            html.AppendLine("<td align='center' valign='middle'></td>")
                    End If
                Next
            Next
        End If
        html.AppendLine("</table></center></body></html>")
        Clipboard.SetText(html.ToString)
        'Variables for Excel.
        Dim xlApp As New Excel.Application
        Dim xlWBook As Excel.Workbook = xlApp.Workbooks.Add( _
                                        Excel.XlWBATemplate.xlWBATWorksheet)
        Dim xlWSheet As Excel.Worksheet = CType(xlWBook.Worksheets(1), Excel.Worksheet)
        Dim xlCalc As Excel.XlCalculation

        'Save the present setting for Excel's calculation mode and turn it off.
        With xlApp
            xlCalc = .Calculation
            .Calculation = Excel.XlCalculation.xlCalculationManual
        End With
        With xlWSheet
            .Paste()
            .UsedRange.Columns.AutoFit()
        End With

        With xlApp
            .Visible = True
            .UserControl = True
            'Restore the calculation mode.
            .Calculation = xlCalc
        End With

        'Relase objects from memory.                        
        xlWSheet = Nothing
        xlWBook = Nothing
        xlApp = Nothing
        GC.Collect()
    End Sub




Cette discussion est classée dans : cellule, datagridview, forme, backcolor, cell


Répondre à ce message

Sujets en rapport avec ce message

Control Saisie d'une datagridview cell [ par ssefyou ] Bonjour ,j'arrive pas a controllé la saisie au niveau d'une cellule dans une datagridviewje veu saisire une date (01/01/2009)<font image dans cell datagridview [ par bruno067 ] Bonjour, je souhaite ajouter une image dans une cellule d'un contrôle datagridview1. Voici mon code: Dim imgCell = New DataGridViewImageCell imgCell. récupérer la valeur d'une cellule précise d'un DataGridView e [ par samsouma4t2 ] salut, moi ce que je veux c'est récupérer la valeur entrée dans une cellule d'une DataGridView sachant que les cellules sont de type textBox (par exem valeur non numérique dans les cellule de datagridview [ par rahma_bou22 ] Bonjour,j'ai une Datgridview ou je stock un calcule entre deux variables (division) mais parfois dans les cellules il me retourne la valeur "Non numér [Déplacé VB6 --> VBA] mise en forme conditionnelle [ par inkballs ] Bonjour, Je souhaiterai,avec la mise en forme conditionnelle ne pas pouvoir utiliser dans une cellule excel,le caractere "espace" de la barre d'espace Récupérer cellule sélectionnée dans datagridview [ par ptitelili059 ] Bonjour Voilà j'ai une datagridview dans laquelle j'ai des données. Je voudrais que quand l'utilisateur sélectionne une ligne puis clique sur le bout insérer un datagridview dans une cellule d'un autre datagridview [ par adnane_adnane ] bjr les amis je veu insérer une datagridview dans une cellule d un autre datagridview pour avoir un tableu personalisé, j ariive pas et je n ai pas tr Mise en forme d'une cellule [ par MOIJPCH ] bonjour, je voudrais mettre au format nombre prédéfini des cellules dans la même lignes si dans une case qui ne fait pas partie de ces cellules conti copie de cellules vides avec VBA excel [ par Flytox44 ] Bonjour, Je suis totalement débutant en VBA sous Excel 2003 et confronté au problème suivant : J'ai construit un formulaire permettant de visualis


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales