IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Personnaliser le nom des colonnes d'un listview remplit en SQL [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Par défaut Personnaliser le nom des colonnes d'un listview remplit en SQL
    Bonjour,

    Je remplis une listview avec le code suivant dans un module :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
    '
    '==============================================================
    ' Remplissage d'un Listview avec le résultat d'une requête
    '==============================================================
    Public Sub RequeteDansListView(myLv As ListView, _
                                   myQuery As String, _
                                   myDB As ADODB.Connection, _
                                   Optional autosize As Boolean = False)
        Dim RS        As New ADODB.Recordset
        Dim ff        As ADODB.Field
        Dim II        As Long
        Dim JJ        As Long
        Dim Counter   As Double
        Dim libErreur As String
        Dim colNew    As ColumnHeader
        Dim newLine   As ListItem
        Dim maValeur  As String
        '
        '------------------------------------------------------
        ' Destruction du Lv s'il est déjà chargé
        '------------------------------------------------------
        With myLv
            .ListItems.Clear
            For II = myLv.ColumnHeaders.Count To 1 Step -1
                myLv.ColumnHeaders.Remove (II)
            Next II
        End With
        '
        '-----------------------------------------------------
        ' Exécution de la requête
        '-----------------------------------------------------
        On Error Resume Next
            Err.Clear
            RS.Open myQuery, myDB, adOpenStatic, adLockReadOnly
            If Err.Number <> 0 Then
                MsgBox "Code Erreur : " & Err.Number & vbCrLf & vbCrLf _
                     & "Description : " & Err.Description & vbCrLf
                GoTo Fin
            End If
        On Error GoTo 0
        '
        '-----------------------------------------------
        ' Chargement du listview
        '-----------------------------------------------
        With myLv
            '
            '-----------------------------------------
            ' Création des titres de colonnes
            '-----------------------------------------
            For Each ff In RS.Fields
                Set colNew = .ColumnHeaders.Add(, , ff.Name, 90)
            Next ff
            '
            '-----------------------------------------
            ' Lignes de données
            '-----------------------------------------
            JJ = 0
            If Not RS.EOF Then
                RS.MoveFirst
                '
                '-------------------------------------
                ' Pour chaque ligne
                '-------------------------------------
                While Not RS.EOF
                    JJ = JJ + 1
                    Counter = 0
                    '
                    '---------------------------------
                    ' Pour chaque colonne
                    '---------------------------------
                    For II = 0 To RS.Fields.Count - 1
                        If Not IsNull(RS.Fields(II).Value) Then
                            maValeur = Trim(RS.Fields(II).Value)
                        Else
                            maValeur = ""
                        End If
                        '
                        '-----------------------------
                        ' S'il s'agit de la première
                        ' colonne, on crée une
                        ' nouvelle ligne (Item)
                        '-----------------------------
                        If Counter = 0 Then
                            Set newLine = .ListItems.Add(, , maValeur)
                        '
                        '-----------------------------
                        ' Sinon on renseigne la
                        ' valeur de la colonne suivante
                        ' (subitem) pour la ligne en cours
                        '-----------------------------
                        Else
                            newLine.SubItems(Counter) = maValeur
                        End If
                        Counter = Counter + 1
                    Next II
                    RS.MoveNext
                Wend
                myLv.Refresh
            End If
            If autosize Then AutoSizeLV myLv
        End With
        '
    Fin:
        RS.Close
        Set RS = Nothing
    End Sub
    '
    '========================================================
    ' Autosize des colonnes d'un ListView
    '========================================================
    Public Sub AutoSizeLV(LV As ListView)
        Dim myColumn As ColumnHeader
        '
        For Each myColumn In LV.ColumnHeaders
            SendMessage LV.hWnd, _
                        LVM_FIRST + 30, _
                        myColumn.index - 1, _
                        -1
        Next
        LV.Refresh
    End Sub
    Le nom des colonnes est définit par le nom des champs de la base de donnée, j'aimerais personnaliser le nom des colonnes mais je ne vois pas comment faire.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Une proposition en utilisant des Alias pour modifier les noms de tes champs au niveau de la requete SQL

    ex : Select Champ1 as Nom, Champ2 as Prenom from table1

  3. #3
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Par défaut
    Mille Merci !!!!

  4. #4
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Par défaut Supression des quotes dans les headers des colonnes d'une listview remplit en SQL
    Je reviens vers vous car j'ai un autre soucis. L'utilisation d'alias pour le nom des colonnes fonctionne parfaitement cependant si le nom de colonne est entre quotes ceux-ci apparaissent dans le header de la colonne.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT SUM(PVD) AS 'Montant totale' FROM MYTABLE
    Affiche 'Montant totale' dans le header

    Je ne sais pas comment faire pour supprimer les quotes.

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    pour les noms d'alias avec un espace j'utilise les crochets plutôt que les quotes (pas sur que cela change quelque chose ton problème)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(PVD) AS [Montant totale] FROM MYTABLE
    Est ce que cela règle le problème ?

  6. #6
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Par défaut
    J'ai trouvé une fonction qui permet de remplacer les quotes par rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strNew = Replace(strOld,"'","")
    Cependant la méthode de jfontaine est plus efficace cela m'évite d'avoir des quotes dans les requêtes pour ensuite les supprimer à chaque appel.
    Encore merci problème résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JTable] les noms des colonnes de s'affichent pas
    Par macben dans le forum Composants
    Réponses: 6
    Dernier message: 25/04/2008, 11h03
  2. Noms des colonnes ne s'affichent pas dans un JTable
    Par Bourdet dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 07/07/2005, 15h26
  3. [JDBC]Nom des colonnes d'une table
    Par Guybrush dans le forum JDBC
    Réponses: 6
    Dernier message: 08/09/2004, 18h28
  4. [Firebird 1.5] nom des colonnes d'une table
    Par c0rwyn dans le forum SQL
    Réponses: 4
    Dernier message: 03/09/2004, 14h44
  5. [SWING][JTable]Cacher noms des colonnes
    Par Antunes dans le forum Composants
    Réponses: 2
    Dernier message: 28/06/2004, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo