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

VBA Access Discussion :

Treeview et AC-2013 64 bits [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut Treeview et AC-2013 64 bits
    Bonjour à tous,

    J'espère poster au bon endroit.
    J'ai récupéré un nouveau pc avec access 2013 mais en 64 bits. J'avais créé une base de données type livre de cave (sous 32 bits avec une version ancienne d'access) avec sur certains formulaires des contrôles treeview....et il y a incompatibilité.
    Est-ce qu'une alternative existe ? J'ai fait des recherches mais les réponses (négatives) datent de 2012...peut-être que des solutions ont été trouvées depuis...
    Sinon il faudrait que j'installe la version 32 bits...mais voilà à aucun moment office ne me demande si je veux installer la version 32 ou 64 bits ...

    Merci de votre précieuse aide car ce sont des années de boulot mis à la poubelle à moins de réinstaller office 97...bref redescendre à l'âge de pierre.

    Cordialement,

    Sébastien

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour,

    Regardes ici, cela pourrait bien résoudre ton problème.
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Bonsoir,

    J'ai essayé de référencer l'OCX situé dans syswow64 de Win8. Cela m'indique qu'il a été chargé mais l'appel à DllregisterServer a échoué avec le code d'erreur 0x8002801c.

    Sinon mon treeview ne marche pas : erreur 2683 Pas d'objet dans ce contrôle sur la ligne de référencement à l'objet Treeview
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Form_Current()
        Dim db As dao.Database
        Dim rst As dao.Recordset
        Dim NodCurrent As Node, nodRoot As Node
        Dim objTree As TreeView
        Dim strSql As String
        Dim strText As String
        Dim ValWhere As String
        Dim ValHaving As String
     
     
        Set db = CurrentDb
        'Création de la référence à l'objet Treeview
        Set objTree = Me.TrwMenu2.Object
    Merci de votre aide

    Sébastien

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Bonsoir,
    Il faut que je précise que je suis sous Win8 64bit et Access 2013 64 bits.
    Je constate qu'access 2013 possède un contrôle Active X nommé CTreeview Control classe objet : CTREEVIEW.CTreeViewCtrl.1. Est-ce la même chose que treectrl classe objet : MSComctlLib.TreeCtrl.2 ?
    Si oui puis-je reprendre l'ensemble de mon code source ?
    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
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    Private Function TreeView()
        'Je définis mes variables
        Dim db As dao.Database
        Dim rst As dao.Recordset
        Dim NodCurrent As Node, nodRoot As Node
        Dim objTree As TreeView
        Dim strSql As String
        Dim strText As String
        Dim ValWhere As String
        Dim ValHaving As String
     
     
        Set db = CurrentDb
        'Création de la référence à l'objet Treeview
        Set objTree = Me.TrwMenu.Object
        TrwMenu.Nodes.Clear
     
        'Je définis le titre et la couleur du noeud en cours
        Set NodCurrent = objTree.Nodes.Add(, , MyKey1, "Résultat de Recherche")
        NodCurrent.ForeColor = RGB(128, 0, 0)
     
        'Ici, simplifie au maximum ta requête. N'utilise que ce que tu as besoin dans le Treeview
        'Affichage des Régions bues
        strSql = "SELECT rqy_Historique.Pays, rqy_Historique.Region, [rqy_Historique]![Pays]" & " & " & "[rqy_Historique]![Region] AS PaysEtRegion FROM rqy_Historique WHERE ((([rqy_Historique]![Appellation]" & " & " & "[rqy_Historique]![Type]) Is Not Null)"
     
        If Not IsNull(Me.TxtAlphabet) Then
            ValWhere = " AND ((rqy_Historique.Appellation) like '*" & Me.TxtAlphabet & "*' )"
        End If
     
        If Not IsNull(Me.lstType) Then
            ValWhere = ValWhere & " AND ((rqy_Historique.Type) =" & Chr(34) & Me.lstType & Chr(34) & ")"
        End If
     
        If Not IsNull(Me.lstAnnee) Then
            ValWhere = ValWhere & " AND ((rqy_Historique.Annee)=" & Chr(34) & Me.lstAnnee & Chr(34) & ")"
        End If
     
        strSql = strSql & ValWhere & ") GROUP BY rqy_Historique.Pays, rqy_Historique.Region, [rqy_Historique]![Pays]" & " & " & "[rqy_Historique]![Region] HAVING ((([rqy_Historique]![Pays]" & " & " & "[rqy_Historique]![Region])Is Not Null)"
     
        If Not IsNull(Me.lstPays) Then
            ValHaving = " AND ((rqy_Historique.Pays)=" & Chr(34) & Me.lstPays & Chr(34) & ")"
        End If
     
        If Not IsNull(Me.lstRegion) Then
            ValHaving = ValHaving & " AND ((rqy_Historique.Region)=" & Chr(34) & Me.lstRegion & Chr(34) & ")"
        End If
     
        strSql = strSql & ValHaving & ") ORDER BY rqy_Historique.Pays;"
     
        Set rst = db.OpenRecordset(strSql)
     
        Do Until rst.EOF
     
        'Texte à afficher dans le Treeview. Tu peux concaténer tous les champs que tu veux...
        strText = rst!Pays & " - " & rst!Region
     
        'J'ajoute un noeud...
        Set NodCurrent = objTree.Nodes.Add(MyKey1, tvwChild, MyKey2 & rst![Region], strText, 2)
        NodCurrent.ForeColor = RGB(128, 0, 0)
     
        rst.MoveNext
     
        Loop
     
        rst.Close
        Set rst = Nothing
     
        'Affichage des Apellations bues
        strSql = "SELECT rqy_Historique.Pays, rqy_Historique.Appellation, rqy_Historique.Region, rqy_Historique.NumAppellationComplete, [rqy_Historique]![Pays]" & " & " & "[rqy_Historique]![Region] AS PaysEtRegion FROM rqy_Historique WHERE ((([rqy_Historique]![Appellation]" & " & " & "[rqy_Historique]![Type]) Is Not Null)"
     
        If Not IsNull(Me.lstType) Then
            ValWhere = " AND ((rqy_Historique.Type) =" & Chr(34) & Me.lstType & Chr(34) & ")"
        End If
     
        If Not IsNull(Me.lstAnnee) Then
            ValWhere = ValWhere & " AND ((rqy_Historique.Annee)=" & Chr(34) & Me.lstAnnee & Chr(34) & ")"
        End If
     
        strSql = strSql & ValWhere & ") GROUP BY rqy_Historique.Pays, rqy_Historique.Appellation, rqy_Historique.Region, rqy_Historique.NumAppellationComplete, [rqy_Historique]![Pays]" & " & " & "[rqy_Historique]![Region] HAVING ((([rqy_Historique]![Pays]" & " & " & "[rqy_Historique]![Region])Is Not Null)"
     
        If Not IsNull(Me.lstPays) Then
            ValHaving = " AND ((rqy_Historique.Pays)=" & Chr(34) & Me.lstPays & Chr(34) & ")"
        End If
     
        If Not IsNull(Me.TxtAlphabet) Then
            ValHaving = ValHaving & " AND ((rqy_Historique.Appellation) like '*" & Me.TxtAlphabet & "*' )"
        End If
     
        If Not IsNull(Me.lstRegion) Then
            ValHaving = ValHaving & " AND ((rqy_Historique.Region)=" & Chr(34) & Me.lstRegion & Chr(34) & ")"
        End If
     
        strSql = strSql & ValHaving & ") ORDER BY rqy_Historique.Pays, rqy_Historique.Appellation;"
     
        Set rst = db.OpenRecordset(strSql)
     
        Do Until rst.EOF
     
        'Texte à afficher dans le Treeview. Tu peux concaténer tous les champs que tu veux...
        strText = rst!Appellation
     
        'J'ajoute un noeud...
        Set NodCurrent = objTree.Nodes.Add(MyKey2 & rst![Region], tvwChild, MyKey3 & rst![NumAppellationComplete], strText)
        NodCurrent.ForeColor = RGB(128, 0, 0)
     
        rst.MoveNext
     
        Loop
     
        rst.Close
        Set rst = Nothing
     
            'Affichage des millésimes bus
        strSql = " SELECT rqy_Historique.Pays, rqy_Historique.Appellation, rqy_Historique.Annee, rqy_Historique.Region, rqy_Historique.NumAppellationComplete, [tbl_AppellationComplete]![NumAppellationComplete] " & " & " & " [tbl_Cave]![Annee] AS NumAppellationCompleteEtAnnee, [rqy_Historique]![Pays] " & " & " & " [rqy_Historique]![Region] AS PaysEtRegion FROM rqy_Historique WHERE ((([rqy_Historique]![Appellation]" & " & " & "[rqy_Historique]![Type]) Is Not Null)"
     
        If Not IsNull(Me.lstType) Then
            ValWhere = " AND ((rqy_Historique.Type) =" & Chr(34) & Me.lstType & Chr(34) & ")"
        End If
     
        strSql = strSql & ValWhere & ") GROUP BY rqy_Historique.Pays, rqy_Historique.Appellation, rqy_Historique.Annee, rqy_Historique.Region, rqy_Historique.NumAppellationComplete, [tbl_AppellationComplete]![NumAppellationComplete] " & " & " & " [tbl_Cave]![Annee], [rqy_Historique]![Pays] & [rqy_Historique]![Region] HAVING ((([rqy_Historique]![Pays]" & " & " & "[rqy_Historique]![Region])Is Not Null)"
     
        If Not IsNull(Me.lstPays) Then
            ValHaving = " AND ((rqy_Historique.Pays)=" & Chr(34) & Me.lstPays & Chr(34) & ")"
        End If
     
        If Not IsNull(Me.TxtAlphabet) Then
            ValHaving = ValHaving & " AND ((rqy_Historique.Appellation) like '*" & Me.TxtAlphabet & "*' )"
        End If
     
        If Not IsNull(Me.lstAnnee) Then
            ValHaving = ValHaving & " AND ((rqy_Historique.Annee)=" & Chr(34) & Me.lstAnnee & Chr(34) & ")"
        End If
     
        If Not IsNull(Me.lstRegion) Then
            ValHaving = ValHaving & " AND ((rqy_Historique.Region)=" & Chr(34) & Me.lstRegion & Chr(34) & ")"
        End If
     
        strSql = strSql & ValHaving & ") ORDER BY rqy_Historique.Pays, rqy_Historique.Appellation, rqy_Historique.Annee;"
     
        Set rst = db.OpenRecordset(strSql)
     
        Do Until rst.EOF
     
            'Texte à afficher dans le Treeview. Tu peux concaténer tous les champs que tu veux...
            strText = rst!Annee
     
            'J'ajoute un noeud...
            Set NodCurrent = objTree.Nodes.Add(MyKey3 & rst![NumAppellationComplete], tvwChild, MyKey4 & rst![NumAppellationCompleteEtAnnee], strText, 3)
            NodCurrent.ForeColor = RGB(128, 0, 0)
     
            rst.MoveNext
     
        Loop
     
        rst.Close
        Set rst = Nothing
     
            'Affichage des types par millésime
        strSql = " SELECT rqy_Historique.Pays, rqy_Historique.Appellation, rqy_Historique.Annee, rqy_Historique.Type, rqy_Historique.Region, rqy_Historique.NumAppellationComplete, [tbl_AppellationComplete]![NumAppellationComplete]" & " & " & "[tbl_Cave]![Annee] AS NumAppellationCompleteEtAnnee, ROUND(Avg(rqy_Degustation.Note),1) AS NoteDegust, Round([Tbl_Millesime].[Note],1) AS [Note], [tbl_AppellationComplete]![NumAppellationComplete]" & " & " & "[tbl_Cave]![Annee]" & " & " & "[tbl_Cave]![NumVin] AS NumAppellationCompleteEtAnneeEtNumVin, [rqy_Historique]![Pays]" & " & " & "[rqy_Historique]![Region] AS PaysEtRegion " & _
        "FROM (rqy_Historique LEFT JOIN tbl_Millesime ON (rqy_Historique.Annee = tbl_Millesime.Annee) AND (rqy_Historique.NumRegionEtSousRegion = tbl_Millesime.NumRegionEtSousRegion) AND (rqy_Historique.Type = tbl_Millesime.Type)) LEFT JOIN rqy_Degustation ON rqy_Historique.NumCave = rqy_Degustation.NumCave GROUP BY rqy_Historique.Pays, rqy_Historique.Appellation, rqy_Historique.Annee, rqy_Historique.Type, rqy_Historique.Region, rqy_Historique.NumAppellationComplete, [tbl_AppellationComplete]![NumAppellationComplete]" & " & " & "[tbl_Cave]![Annee], Round([Tbl_Millesime].[Note],1), [tbl_AppellationComplete]![NumAppellationComplete]" & " & " & "[tbl_Cave]![Annee]" & " & " & "[tbl_Cave]![NumVin], [rqy_Historique]![Pays]" & " & " & "[rqy_Historique]![Region] " & _
        "HAVING ((([rqy_Historique]![Pays]" & " & " & "[rqy_Historique]![Region])Is Not Null)"
     
     
        If Not IsNull(Me.lstPays) Then
            ValHaving = " AND ((rqy_Historique.Pays) =" & Chr(34) & Me.lstPays & Chr(34) & ")"
        End If
     
        If Not IsNull(Me.TxtAlphabet) Then
            ValHaving = ValHaving & " AND ((rqy_Historique.Appellation) like '*" & Me.TxtAlphabet & "*' )"
        End If
     
        If Not IsNull(Me.lstAnnee) Then
            ValHaving = ValHaving & " AND ((rqy_Historique.Annee) =" & Chr(34) & Me.lstAnnee & Chr(34) & ")"
        End If
     
        If Not IsNull(Me.lstType) Then
            ValHaving = ValHaving & " AND ((rqy_Historique.Type) =" & Chr(34) & Me.lstType & Chr(34) & ")"
        End If
     
        If Not IsNull(Me.lstRegion) Then
            ValHaving = ValHaving & " AND ((rqy_Historique.Region) =" & Chr(34) & Me.lstRegion & Chr(34) & ")"
        End If
     
        strSql = strSql & ValHaving & ") ORDER BY rqy_Historique.Pays, rqy_Historique.Appellation, rqy_Historique.Annee, rqy_Historique.Type;"
     
        Set rst = db.OpenRecordset(strSql)
     
        Do Until rst.EOF
     
            'Texte à afficher dans le Treeview. Tu peux concaténer tous les champs que tu veux...
        Dim NoteDegustNull As String
        Dim NoteNull As String
        If IsNull(rst!NoteDegust) Then
            NoteDegustNull = "Abs"
        Else
            NoteDegustNull = rst!NoteDegust
        End If
        If IsNull(rst!note) Then
            NoteNull = "Abs"
        Else
            NoteNull = rst!note
        End If
        strText = rst!Type & " -  " & NoteDegustNull & " - " & NoteNull
     
            'J'ajoute un noeud...
            Set NodCurrent = objTree.Nodes.Add(MyKey4 & rst![NumAppellationCompleteEtAnnee], tvwChild, MyKey5 & rst![NumAppellationCompleteEtAnneeEtNumVin], strText, 1)
            NodCurrent.ForeColor = RGB(128, 0, 0)
     
            rst.MoveNext
     
        Loop
     
        rst.Close
        Set rst = Nothing
     
        Me.TrwMenu.Nodes(1).Expanded = True
    End Function
    Private Sub ChercheGeneration(oNode As Node, intGeneration As Integer)
    If Not oNode.Parent Is Nothing Then
      intGeneration = intGeneration + 1
      'Appeler la procédure pour le parent
      ChercheGeneration oNode.Parent, intGeneration
    End If
    End Sub
    Merci de votre aide

    Séb

  5. #5
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Le plus simple serait de créer dans un formulaire de test le nouveau contrôle Activex Treeview avec ton code et tu sera fixé immédiatement
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Bonsoir,
    C'était plus simple de revenir à une version antérieure : access 2007, et là tout remarche. Tant pis car access 2013 était pas mal avec un écran tactile...
    Merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/12/2014, 15h26
  2. Service Pack 1 pour Microsoft Office 2013 (KB2817430) Édition 32 bits
    Par argyronet dans le forum Microsoft Office
    Réponses: 0
    Dernier message: 27/02/2014, 09h48
  3. [2013 - 64 bit] Dépassement de capacité
    Par Invité dans le forum Général VBA
    Réponses: 2
    Dernier message: 15/10/2013, 17h49
  4. [AC-2013] Click sur un treeview ne fonctionne plus Access 2013
    Par JulietteBl dans le forum IHM
    Réponses: 0
    Dernier message: 17/09/2013, 15h37
  5. [OpenGL 1.x] [Excel 2013] [64 bit]
    Par Invité dans le forum OpenGL
    Réponses: 3
    Dernier message: 26/07/2013, 12h24

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