Aparté : "C'est mon premier message sur ce forum.
Je n'ai jamais osé posté de message jusqu'à aujourd'hui de peur de me faire réprimander sur le respect des très nombreuses règles à avoir en tête.
J'espère ne pas les enfraindre.
Je débute dans les macros sous LibreOffice.
Auparavant je réalisait des macros plutôt complexes sous VBA Excel mais, mon entreprise à décider de migrer vers LibreOffice me laissant démuni !"
J'utilise souvent la formule RECHERCHEV dans mes classeurs. cela permet à partir d'un n° d'identifiant de retrouvé le nom d'un équipement qui se trouve dans un classeur de référence.
Je souhaite réaliser une fonction qui me retournerait directement le même résultat et qui serait plus simple à utiliser.
Exemple simple :
exemple de la formule dans une cellule :
Code : Tout sélectionner
=RECHERCHEV(A1;'file:///CHEMIN_DOC_REFERENCE/NOM_FICHIER_REFERENCE.ods'#$NOM_FEUILLE.A$1:B$1000;2;0)
Code : Tout sélectionner
=EQUIPEMENT(A1;2)
NOTA : je test ma fonction en créant une procédure sans passage d'argument pour plus de rapidité lors des tests.
■ CAS 1 : Erreur du type NoSuchElementException
Code : Tout sélectionner
Sub TestFonctionEQUIPEMENT
Dim oFonction as Object
oFonction = CreateUnoService("com.sun.star.sheet.FunctionAccess")
Dim params(3) ' 4 arguments à transmettre
params(0) = "1118" ' <-- n° fictif pour faire les tests. Dans la fonction finale, ce sera un argument passé dans la fonction
params(1)= "'file:///CHEMIN_DOC_REFERENCE/NOM_FICHIER_REFERENCE.ods'#$NOM_FEUILLE.A$1:B$1000;2;0"
params(2)= "2"
params(3)= "0"
Print oFonction.callFunction("RECHERCHEV",params()) ' <-- erreur : NoSuchElementException
End Sub
Code : Tout sélectionner
Sub TestFonctionEQUIPEMENT
Dim oFonction as Object
oFonction = CreateUnoService("com.sun.star.sheet.FunctionAccess")
Print oFonction.callFunction("RECHERCHEV","1118","'file:///CHEMIN_DOC_REFERENCE/NOM_FICHIER_REFERENCE.ods'#$NOM_FEUILLE.A$1:B$1000","2","0") ' <-- Variable d'objet non définie
End Sub
Auriez-vous des propositions à me faire ?
PS : pour info si certains voulaient rechercher sur des sites anglais, le nom pour la fonction RECHERCHEV en anglais est VLOOKUP*
* édition : correction du terme de la fonction VLOOKUP