Chemin fichier .ini dans la fonction de lecture

richert90

XLDnaute Occasionnel
Bonjour,

voici le code que j'utilise pour lire un fichier .ini (qui marche très bien):


Code:
Public Function LireIni(stSection As String, stKey As String)
   
' Lecture d'une valeur dans un fichier INI
' stSection est le la partie designée entre crochets ([DATABASE] par exemple)
' stKey est le nom de la clé à récupérer (COULEUR=... par exemple)

    Dim stBuf As String, FicIni As String, lgBuf As Long, lgRep As Long
    Dim chemin As String
    
    'On cherche le chemin où est enregistré le fichier Excel.
    chemin = Workbooks(ActiveWorkbook.name).FullName
    chemin = Workbooks(ActiveWorkbook.name).Path
    'On suppose que le fichier .ini est enregsitré dans le même dossier que le fichier Excel.
    FicIni = chemin & "\parametres.ini"
    
    ' Mise en place du buffer de lecture
    stBuf = Space$(255)
    lgBuf = 255
    lgRep = GetPrivateProfileString(stSection, stKey, "", stBuf, lgBuf, FicIni)
    
    'Si il y a une absence de paramètres dans le fichier ini:
    If lgRep <= 0 Then
        ' Erreur au niveau du fichier INI
        LireIni = "Please inform this range"
        Exit Function
    End If
    LireIni = Trim$(Left$(stBuf, lgRep))
    
End Function


Le seul inconvénient c'est que dans le morceau de code suivant:

Code:
'On cherche le chemin où est enregistré le fichier Excel.
    chemin = Workbooks(ActiveWorkbook.name).FullName
    chemin = Workbooks(ActiveWorkbook.name).Path
    'On suppose que le fichier .ini est enregsitré dans le même dossier que le fichier Excel.
    FicIni = chemin & "\parametres.ini"

Je suppose que le fichier .ini est d'une part dans le même dossier que le fichier Excel (qui va lire ce fichier) et d'autre part qu'il s’appelle forcément "paramètres".
Ce sont ces 2 éléments que j'aimerais automatisés un peu mieux pour ne pas avoir forcément le fichier .ini dans le même dossier que le fichier Excel (il se peut qu'un utilisateur change de destination le fichier Excel ou le fichier .ini sans le faire exprès ce qui faussera le code) et d'autre part un utilisateur peut changer le nom du fichier .ini ce qui posera également problème pour l'exécution du code..

Quelqu'un aurait des idées pour me permettre d'améliorer ces 2 points ?

Merci d'avance
 

Caillou

XLDnaute Impliqué
Re : Chemin fichier .ini dans la fonction de lecture

Bonjour,

Stocker le chemin et le nom du fichier ini dans des cellules de la feuille Excel, et se servir de ces cellules comme des variables !
Par exemple si le chemin est en A1 et le nom en A2, le code devient :
chemin = range("A1").value
FicIni = range("A2").value

Caillou
 

richert90

XLDnaute Occasionnel
Re : Chemin fichier .ini dans la fonction de lecture

Bonjour Caillou

Merci de votre réponse.
Le problème c'est que le fichier .ini va permettre d'importer une base de données (le fichier .ini contient des paramètres de connexion à une B.D.D) sur une feuille Excel et on ne connaît pas la dimension de cette base de données. Les autres feuilles vont me servir pour des calculs et statistiques diverses.
De plus si un utilisateur qui utilise les 2 fichiers changent d'endroit le fichier .ini et le met dans un autre dossier , le chemin qui est stocké dans la variable que vous proposez ne va pas changer. Il faudra modifier le chemin directement sur une feuille Excel qui n'est pas idéal pour l'automatisation.

Vous n'auriez pas une autre idée ? :) je n'arrive pas à en trouver , j'ai essayer de stocker dans des variables le nom du fichier et dans une autre son chemin mais je me retrouve à chaque fois bloquer.
 

Caillou

XLDnaute Impliqué
Re : Chemin fichier .ini dans la fonction de lecture

re,
Code:
De plus si un utilisateur qui utilise les 2 fichiers changent d'endroit le fichier .ini et le met dans un autre dossier , le chemin qui est stocké dans la variable que vous proposez ne va pas changer.
Non, bien évidemment, par contre, l'utilisateur qui a volontairement déplacé le fichier pourra simplement indiqué le chemin dans la cellule en question sans toucher au code VBA.

Sinon, il faudrait regarder du coté des macros complémentaires ....

Caillou
 

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 284
Membres
103 507
dernier inscrit
tapis23