Résultat d'une recherche en vba sur excel

Bonjour,

J'ai réussi à lancer une recherche (via VBA) sur un coffre EPDM via le bout de code ci dessous.

Ma question est la suivante, je souhaiterais récupéré dans cette recherche, les variables de chaques résultats de recherche, j'ai, par exemple, une variable qui s'appelle _NumNDL.

Je suppose qu'il faut utiliser quelques choses comme GetVar ou eNumVar sur un des résultats, mais je n'ai pas la syntaxe, ni la solution. Si quelques sait m'aider ?

Sub TrouverFichier()

Dim eVault          As IEdmVault5
Dim eSearch         As IEdmSearch5
Dim eResult         As IEdmSearchResult5
Dim FileCount       As Long

FileCount = 0

    'Connection au coffre
    Set eVault = New EdmVault5
    eVault.LoginAuto eVault.GetVaultNameFromPath("C:\_Clarity\"), 0
    
    'Lancement de la recherche
    Set eSearch = eVault.CreateSearch
    eSearch.AddVariable "_NDLNouv", "%1%"
    eSearch.Filename = "%NDL%"
    Set eResult = eSearch.GetFirstResult

    'lecture des résultats
    While Not eResult Is Nothing
        FileCount = FileCount + 1

        Cells(FileCount, 1) = eResult.Name
        Cells(FileCount, 2) = eResult.Path
        Cells(FileCount, 3) = eResult.StateName
        Set eResult = eSearch.GetNextResult
    Wend

End Sub

 

Salut,

En fait peux avoir un nombre infini de résultats ! Donc tu ne peux pas utiliser de variable, mais tu dois utiliser un tableau, ce qui est fait ici !

La ligne "  FileCount = FileCount + 1" permet de passer à la ligne suivante.

Et tes données sont stockées de cette manière dans 3 colonnes :

        Cells(FileCount, 1) = eResult.Name
        Cells(FileCount, 2) = eResult.Path
        Cells(FileCount, 3) = eResult.StateName

 

 

Merci pour ta réponse, mais tu me donnes un code que j'ai moi meme écrit en réponse...

Désolé de te contredire, je me suis d'ailleurs peut etre mal exprimé, mais il existe bien les variables ePDM, si tu regarde dans le code que j'ai fourni, j'ajoute la variable"_NDLnouv" à ma recherche.

Via eResult, je ne peux pas récupéré tout les champs de recherche : 

 

J'aimerais pouvoir récupérer tous les champs lié au résultat de la recherche.

Bonjour,

Sauf erreur de ma part (j'ai déjà effectué ce genre de macro), il faut extraire le fichier pour récupérer le contenu de la variable et ensuite annuler l'extraction.

Il faut donc que tu ajoutes un traitement complémentaire.

Voir fichier joint pour le traitement complémentaire


macro_search.txt
1 « J'aime »

Super merci,

 

sur le principe ça marche niquel, suaf que j'ai une erreur sur 424 sur :

file.LockFile result.ParentFolderID, 0.

Si j'extrais le fichier "à la main", ça marche, mais je n'arrive pas a l'extraire via ton code, je suppose qu'il me manque la fonction lockfile ?

J'ai omis de changer, dans les deux fonctions lockfile et undolockfile il faut mettre  eresult.ParentFolderID au lieu de  result.ParentFolderID

Effectivement, je suis passé à coté aussi, j'aurais pu vérifier moi meme, en tout cas, ça marche niquel merci beaucoup.

Cependant, dans l'état d'esprit, je trouve bizarre qu'on soit obligé d'aller extraire le fichier car dans l'affichage de la recherche on voit bien les différentes variables d'affichées et qui font parti du résultat de la recherche. Je suis surpris qu'on ne puisse les lire sans passer par lock ou unlock.

Néanmois, merci pour ton aide.

C'est effectivement étrange mais d'après ce que j'ai compris de l'aide de l'API c'est lié au fait que les variables sont consultables via les cartes lorsqu'elles sont éditables. De fait, les fichiers doivent être extraits.