1. #1
    Membre confirmé
    Homme Profil pro
    Regisseur
    Inscrit en
    octobre 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : octobre 2006
    Messages : 307
    Points : 541
    Points
    541

    Par défaut Recherche de dépendances "DependancesPlusV2"

    Bonsoir.

    Tototiti2008 ayant laissé son application "DépendancesPlus" libre, pour un travail collectif,
    je vous présente ici une version sans ActiveX et pas mal de changement dont:

    'pour utilisation TreeView et ListView sans ActiveX (merci Arkham),
    'quelques secondes sont necessaire pour l'initialisation de la propriétés "Description" des objets (merci Cafeine)
    'scan de l'application hote: nbre d'éléments,distinction des requetes VBA ou source d'objets ou de controles,
    'visibilité de la propriété "Description"des objets (commentaire du dev)
    'export de tous les objets vers le dossier ExportText
    'affichage des variables, constantes, API, Enumération...
    'un bouton de recherche rapide dans la partie vba
    'ListView peuplé à partir de tables ou requetes (conception GDI) et non plus à partir de tableaux dynamiques
    'pour le fun, lors de la selection d'une sub dans le ListView, si le module n'est pas trop long, la sub est balayé de haut en bas puis de bas en haut
    ', puis le(s) mot(s) recherché(s) reste selectionné(s)
    'lors de la selection d'un form ou report, l'objet s'ouvre en mode creation et le controle en question (si il s'agit d'un controle) est selectionné
    'suppression des tables temporaires à la fermeture.

    Nom : ecran1.jpg
Affichages : 123
Taille : 168,2 Ko

    Utilisation:

    Dans le fichier joint, il y a un dossier "Image" contenant les icones, un fichier accdb et un accda
    Placez le dossier et le fichier de votre choix dans le meme dossier que votre frontale.
    Dans un formulaire de la frontale, creer un bouton de commande nommé "Dependance" et placer le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Dependance_Click()
    'Ouverture_DépendancesPlusV2
    DependancesPlusV2.FormOpen "DépendancesPlus2", acNormal
    L'idée n'étant pas de m'approprié le très bon travail de Tototiti2008 ,mais cette version comportant beaucoup de modification,je préférait ouvrir un nouveau sujet.
    Concernant la recherche d'objets inutilisés, j'y travaille (quand je peux !)

    Bonne lecture.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2004
    Messages : 822
    Points : 1 688
    Points
    1 688

    Par défaut

    D'abord bravo pour un travail manifestement costaud et soigné ! Merci à TotoTiti d'avoir lancé ce sujet et créé la 1ère appli, et à toi, Thierry, d'avoir relevé le gant et faire aboutir cette suite.

    Par contre, oups, 1er hic : elle a été compilée en 32 bits, et bloque donc sous un Office 64 bits. Il va falloir, essentiellement, doubler tous les 'Declare ...' avec une version pour VBA7 (64 bits) en plus de la version 32 bits.
    À titre d'exemple, là où tu avais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
                                (ByVal pidl As Long, ByVal pszPath As String) As Long
    Il faudra compléter avec le test de version et l'indispensable PtrSafe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #If VBA7 Then
        Private Declare PtrSafe Function SHGetPathFromIDList Lib "shell32.dll" _
                                (ByVal pidl As Long, ByVal pszPath As String) As Long
    #Else
        Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
                                (ByVal pidl As Long, ByVal pszPath As String) As Long
    #End If
    Ceci n'est qu'un exemple qui permettra de faire tourner le code en 64 bits, pour le tester. On peut mettre tout un bloc de Declares dans chaque branche, et après, il y aura peut être des problèmes avec certaines APIs, dont la version 64 bits utilise des variables LongLong, par exemple. On verra ça pendant les tests...

    Désolé de ce contretemps, encore bravo, bon courage et, j'espère, des résultats de tests en 32 bits ?
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  3. #3
    Membre confirmé
    Homme Profil pro
    Regisseur
    Inscrit en
    octobre 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : octobre 2006
    Messages : 307
    Points : 541
    Points
    541

    Par défaut version 64 bits

    Bonsoir Papy Turbo.
    Merci pour ton soutien
    Suivant tes conseils, je mets en pj une version supposée compatible 64 bits.
    J'ai mis quelques LongPtr (notamment avec Hwnd), mais n'ayant pas cette version, je ne peux malheureusement pas tester.
    En attendant, si il y a d'autre testeur en 32 bits (marche pour 2007 et 2010)
    Bonne soirée
    Fichiers attachés Fichiers attachés

  4. #4
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2004
    Messages : 822
    Points : 1 688
    Points
    1 688

    Par défaut

    Bonjour, Thierry

    Réponse rapide !
    Encore quelques petits problèmes de compilation, notamment avec les variables lRet (Long), qui doivent devenir des LongPtr dans certains cas et rester des Long dans d'autres cas.

    La version ci-jointe compile correctement sous 64 bits. Toutes mes modifications sont signalées par '13/06/2017 EP : commentaire...
    DependancesPlusV2_64b.7z
    J'ai également coché l'option 'Compacter lors de la fermeture'.

    Par contre, 2 choses :
    1- Lorsque j'ouvre directement le formulaire "DépendancesPlus2", j'obtiens de nombreuses erreurs d'exécution 2192 : La bitmap spécifiée ne se trouve pas au format Image indépendante du périphérique (DIB), notamment lors des .refresh en classe GDIPlus.

    2- J'ai essayé de suivre ta méthode : copie du fichier + dossier Image dans le même dossier que la base de données à analyser (Note : cette méthode me gêne un peu. Est-ce qu'on ne pourrait pas juste faire une référence à DépendancesPlus, sans faire une copie à chaque fois ?)Lorsque j'essaye de lancer la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DependancesPlusV2.FormOpen "DépendancesPlus2", acNormal
    il ne trouve rien.
    Si je crée, dans mon fichier, une référence vers DeendancesPlusV2, je vois bien apparaître la liste des ses méthodes et propriétés, mais pas de commande .FormOpen !
    Donc, pour l'instant, je ne sais pas le lancer ou le tester.

    @ +,
    Etienne
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  5. #5
    Membre confirmé
    Homme Profil pro
    Regisseur
    Inscrit en
    octobre 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : octobre 2006
    Messages : 307
    Points : 541
    Points
    541

    Par défaut

    Bonsoir Etienne.
    Merci pour ton aide et ta version corrigée.

    _ en ce qui concerne l'erreur 2192 ,est-ce que celà vient de l'utilisation de Gdi en 64 bits ?
    Si Arkam pouvait donner son avis ?

    -pour le problème d'ouverture, j'ai du oublier de mettre ce module nommé "Insertion_Application" (qui d'ailleur est de ton cru !):

    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
    Option Compare Database
    Option Explicit
    'ne pas supprimer
    'pour appeler des formulaires de cette application
    ' Intégration d'applications :
    Public Function FormOpen(FormName As String, _
                             Optional View As AcFormView = acNormal, _
                             Optional FilterName As String, _
                             Optional WhereCondition As String, _
                             Optional DataMode As AcFormOpenDataMode = acFormPropertySettings, _
                             Optional WindowMode As AcWindowMode = acWindowNormal, _
                             Optional OpenArgs As String)
    ' Appelée depuis le portail, pour ouvrir les formulaires de cette application
        DoCmd.OpenForm FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs
    End Function
    Et dans l'application principale :
    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
    Option Compare Database
    Option Explicit
     
    Public AcceptLibraryCodeV2 As Boolean
    'Michel Blavin http://sinarf.developpez.com/access/autoref/
     
    Function EnregistreReferences2()
        Dim strLibraryName As String
        Dim strLibraryPath As String
        Dim strLibraryRelativePath As String
        Dim ref As Reference
        On Error GoTo MajReference_Error
     
        strLibraryName = "\DependancesPlusV2_64b"
     
        strLibraryPath = CurrentProject.path & strLibraryName & ".accdb "
        Debug.Print "Enregistrement de la référence : " & strLibraryPath
        Application.References.AddFromFile strLibraryPath
     
        '    Debug.Print "AcceptLibraryCodeV2 = 1 "
     
        Application.SetOption "Conditional Compilation Arguments", "AcceptLibraryCodeV2=-1"
        Debug.Print "Recompilation de l'application"
        RunCommand acCmdCompileAndSaveAllModules
        Debug.Print "maintenant je peut utiliser ma bibliothèque"
     
    ToiTuSors:
        Set ref = Nothing
        Exit Function
     
    MajReference_Error:
        Select Case err.Number
        Case 29060  'Fichier non trouvé
            Debug.Print "Echec de l'enregistrement ! :("
            MsgBox "Le Fichier : " & strLibraryPath & " est introuvable"
        Case 32813    ' bibliothèque existante
            Debug.Print "la réference exite deja"
            For Each ref In Application.References
                If ref.Name = strLibraryName And ref.IsBroken Then
                    Debug.Print "elle est cassée on la supprime"
                    Application.References.Remove ref
                    Debug.Print "et on relance l'ajout"
                    Resume
                Else
                    Debug.Print "elle est pas cassé, alors on saute l'enregistrement"
                    Resume Next
                End If
            Next ref
        Case Else    ' default message, handy to find where the problem happened.
            MsgBox "Error " & err.Number & " (" & err.description & ")" _
                 & " in procedure MajReference of Module basEnregistrementBibli"
        End Select
        Resume ToiTuSors
     
    End Function
    Sub Ouverture_DépendancesPlusV2()
        DoCmd.Save acForm, "Menu General"
        GetReferences2
        #If AcceptLibraryCodeV2 = -1 Then
            'ici je peux appeler du code de ma bibliothèque
            '        MaProcedureExterne
     
            DependancesPlusV2_64b.FormOpen "DépendancesPlus2", acNormal
        #Else
            EnregistreReferences2
            '     GetReferences2
        #End If
     
     
    End Sub
    Sub GetReferences2()
        EnregistreReferences2
        DoCmd.Save acForm, "Menu General"
        #If AcceptLibraryCodeV2 Then    ' = -1 Then
            'ici je peux appeler du code de ma bibliothèque
            '        MaProcedureExterne
                    DependancesPlusV2.FormOpen "DépendancesPlus2", acNormal
        #Else
     
            EnregistreReferences2
     
        #End If
     
    End Sub
    celà ne marche pas toujours très bien (problème de variable), de préférence mettre la référence à la main d'abord.

    _dans le bouton d'appel du form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Dependance_Click()
    'Ouverture_DépendancesPlusV2
    GetReferences2
     
    End Sub
    Bonne soirée

  6. #6
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    4 934
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : septembre 2003
    Messages : 4 934
    Points : 10 493
    Points
    10 493

    Par défaut

    Bonjour,

    Je vais regarder ça.
    J'ai quelque part une version 64bits de mes codes.
    Il y a pas mal de modif à apporter et l'erreur 2192 est certainement liée au 64bits.

  7. #7
    Membre du Club
    Homme Profil pro
    financier
    Inscrit en
    juillet 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : financier
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2012
    Messages : 127
    Points : 55
    Points
    55

    Par défaut

    Bonsoir;

    J'ai compléter avec le fameux PtrSafe, il y avait pas mal de modification, mais hélas ça coince toujours avec ce message d'erreur 2192.

    Je me suis permis de poster ici pour suivre les nouvelles modifications.

    Merci.

    Cordialement.

  8. #8
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    4 934
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : septembre 2003
    Messages : 4 934
    Points : 10 493
    Points
    10 493

    Par défaut

    Bonjour,

    J'ai fait une version du fichier accdb avec les dernières versions des modules.
    Je n'ai pas eu le temps de tout tester mais à première vue c'est bon.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre confirmé
    Homme Profil pro
    Regisseur
    Inscrit en
    octobre 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : octobre 2006
    Messages : 307
    Points : 541
    Points
    541

    Par défaut

    Bonjour.

    Merci Arkham46 de ta contribution. En mm temps, je n'ai pas de version 64 bits pour tester.
    De mon coté, j'ai intégré les images (icones) dans un sous-formulaire.
    Je regarde ta version et j'y intégrerai mes modifs. (encore merci)
    A+

  10. #10
    Membre confirmé
    Homme Profil pro
    Regisseur
    Inscrit en
    octobre 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : octobre 2006
    Messages : 307
    Points : 541
    Points
    541

    Par défaut

    J'ai decelé un petit problème après le 1° click (donc pour les suivants) dans le gridview

    Nom : erreur.png
Affichages : 40
Taille : 39,2 Ko

    dans la procédure "oGrid_MouseDown" à partir du 2° essais , la valeur de pRow est Nothing ou null
    A+

  11. #11
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    4 934
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : septembre 2003
    Messages : 4 934
    Points : 10 493
    Points
    10 493

    Par défaut

    Dans la procédure RempliDetails, juste avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oGrid = CreateTGLControl(CtrlGrid, Me.DepPlusListView6)
    Essaye d'ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not oGrid Is Nothing Then DestroyControl oGrid
    Sinon la grille précédente n'est pas bien libérée et c'est le bazar.
    Mais je ne sais pas si ton erreur venait de là, je ne l'ai pas reproduite.

  12. #12
    Membre confirmé
    Homme Profil pro
    Regisseur
    Inscrit en
    octobre 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : octobre 2006
    Messages : 307
    Points : 541
    Points
    541

    Par défaut

    super

  13. #13
    Membre du Club
    Homme Profil pro
    financier
    Inscrit en
    juillet 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : financier
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2012
    Messages : 127
    Points : 55
    Points
    55

    Par défaut

    Bonjour,

    c'est une super bonne nouvelle, je vais me mettre au travail pour la conception d'un menu, je vous demandais, s'il vous plait assistance en cas de besoin.

    merci.

    cordialement.

  14. #14
    Membre confirmé
    Homme Profil pro
    Regisseur
    Inscrit en
    octobre 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : octobre 2006
    Messages : 307
    Points : 541
    Points
    541

    Par défaut version 64 bits et images intégrées

    Bonjour.

    Ci-joint une version 64 bits (à testée) ,avec images intégrés , accdb et accda.

    Il me reste encore à faire la recherche d'objets inutilisés (presque terminée), mais j'aimerai avoir des retours sur la déjà faite.
    Bon tests.

    maj 07/07: une petite correction, dans les 3 sous formulaires "DepPlus......"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not oControl Is Nothing Then ModLibTGL.DestroyControl oControl
    à la place de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ModLibTGL.DestroyControl oControl
    sinon,si on ferme le formulaire alors que le treeview2 ou le listview n'ont pas été créeé, cela provaque une erreur.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Recherche de dépendances
    Par movrack dans le forum APIs
    Réponses: 5
    Dernier message: 15/04/2011, 11h22
  2. Outil de recherche de dépendance entre procédure
    Par djidane39 dans le forum SQL
    Réponses: 4
    Dernier message: 29/04/2008, 15h21
  3. Recherche des dépendances
    Par Négrier dans le forum Outils
    Réponses: 4
    Dernier message: 07/09/2007, 14h49
  4. Recherche des dépendances
    Par dauphin34000 dans le forum Oracle
    Réponses: 6
    Dernier message: 25/04/2006, 13h32
  5. Recherche des dépendances des modules
    Par slowpoke dans le forum Mandriva / Mageia
    Réponses: 9
    Dernier message: 11/12/2003, 08h49

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