Bonjour,

Voici ma problématique (et ce n'est pas faute d'avoir cherché même si novice en développement VBA) :
J'ai développé un code sous Word faisant devant chercher dans un fichier excel si le nom d'un client figure bien dans la feuille qui a été spécifiée.
Pour cela, je fais appel à une fonction qui vient ouvrir le fichier excel, recherche l'existence ou non du nom du client dans la feuille Excel puis renvoie à Word le résultat de la recherche.
Le problème n'est pa d'obtenir le résultat de ma recherche. Le problème est, qu'à la fin de l'exécution de la fonction, l'application Excel qui a été ouverte (même si elle n'apparaît pas à l'affichage) ne se ferme pas, ce qui génère systématiquement une erreur lorsque je fais de nouveau appel à la fonction dans une boucle.
J'ai peut-être identifié la zone du code qui pose problème parce que lorsque je la supprime, l'application Excel initialement ouverte se ferme systématiquement à la sortie de la fonction.

Quelqu'un pourrait-il m'aider à recoder pour éviter la génération de l'erreur et permettre la fermeture de l'application Excel à la sortie de la fonction.

Merci de toute l'aide que je pourrais obtenir sur ce sujet.

Ci-dessous le code créé.

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
Public Function Verif_nom (NomClient As String) As String
 
    Rep_ref = "C:\Repertoire\"
    Fichier_ref= "Liste des clients.xls"
    Feuil = "Candidats"
 
    Set xlAppl = CreateObject("excel.application")
    Set exlFichier =xlAppl.Workbooks.Open (Rep_ref & Fichier_rf, ReadOnly:=True)
 
'Début du code qui apparemment pose problème
    Set exlRange = exlFichier.Worksheets(Feuil).Range("B5", Range("B5").SpecialCells(xlLastCell))
    If Not (exlRange.Find(What:=NomClient, LookAt:=xlWhole)) Is Nothing Then
        ligne = exlRange.Find(What:=NomClient, LookAt:=xlWhole).Row
        colonne = exlRange.Find(What:=NomClient, LookAt:=xlWhole).Column
        Verif_nom = "Client"
    Else
        Verif_nom  = "Inconnu"
    End If
'Fin du code qui pose apparemment problème
 
    Set exlRange = Nothing
    exlFichier.Close SaveChanges:=False
    Set exlFichier = Nothing
 
End Function