Objets manquant : pour la lecture ou l'ecriture dans un fichier INI ? Problemes.

cotzy Messages postés 14 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 18 octobre 2005 - 17 oct. 2005 à 20:15
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 18 oct. 2005 à 17:15
Salut a tous.

J'ai un petit soucis:

je travail actuellement dans un fichier excel je veux ecrire et lire dans un fichier d'initialisation.
Je declare mes variables dans un module
et j'appel ma fonction de lecture par exemple .

J'optiens une erreur d'objet manquant....j'ai du mal a comprendre pourtant je regarde dans les references
et je pense avoir les bons objets de selectionner .
quel objet faut il en particulier ...?

Merci d'avance

Voici un bout de code :

'lecture du ficheir ini ou ce trouve l'erreur :

test = LireINI("nom du serveur", "loc") objet manquant

'variable

Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
public test as string

'fonction de lecture

Function LireINI(NomParam As String, NomVar As String) As String
Dim Retour As String
fichier = App.Path & "" & "locsrv" & ".ini"
Retour = String(255, Chr(0))
LireINI = Left$(Retour, GetPrivateProfileString(NomParam, ByVal NomVar, "", Retour, Len(Retour), fichier))

merci de bien vouloir me remettre sur le voie

12 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
17 oct. 2005 à 21:10
locsvr c'est le nom du fichier?
donc fichier = App.Path & "\locsrv.ini"

variable?
donc fichier = App.Path & "" & locsrv & ".ini"

pis faut quand même le déclarer ;)
t'es sûr que le chemin est correct?

et test, c'est une variable string?

PCPT [AFCK]
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
17 oct. 2005 à 21:14
Lut,
Dans ta fonction a quoi corresponds locsvr si c'est une variable tu ne doit pas la mettre entre guillemets
Function LireINI(NomParam As String, NomVar As String) As String
Dim Retour As String
fichier = App.Path & "" & locsrv & ".ini"
Retour = String(255, Chr(0))
LireINI = Left$(Retour, GetPrivateProfileString(NomParam, ByVal NomVar, "", Retour, Len(Retour), fichier))

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cotzy Messages postés 14 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 18 octobre 2005
17 oct. 2005 à 22:52
En effet la fontion : App.Path & "\locsrv.ini" est valable car locsrv est lenom du fichier ini.
donc je pense que ma ligne reveint au meme : App.Path & "" & "locsrv" & ".ini".
je vais verifier si ya pas une erreur dans ma variable de stockage "fichier..."

merci bien jvs tiens au courant
0
Re,
testes ce code (trouvé sur Code Source)qui se rapproche du tiens si ce n'est que la fonction est plus détaillée

' Déclaration de la fonction API
Private Declare Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString _
As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
' Pour enregistrer dans un fichier INI
Private Declare Function WritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long


Public Function LireIni(stSection As String, stKey As String, stFichier As String) As String
' Lecture d'une valeur dans un fichier INI
' stSection est le la partie designée entre crochets ([option] par exemple)
' stKey est le nom de la clé à récupérer (COULEUR=... par exemple)
Dim stBuf As String, lgBuf As Long, lgRep As Long
' Mise en place du buffer de lecture
stBuf = Space$(255)
lgBuf = 255
lgRep = GetPrivateProfileString(stSection, stKey, "", stBuf, lgBuf, stFichier)
LireIni = Left$(stBuf, lgRep)
End Function



Public Sub EcrireIni(stSection As String, stKey As String, stValeur As String, stFichier As String)
' Lecture d'une valeur dans un fichier INI
' stSection est le la partie designée entre crochets ([option] par exemple)
' stKey est le nom de la clé à récupérer (COULEUR=... par exemple)
' stValeur est la valeur à stocker
' stFichier est le fichier à manipuler
WritePrivateProfileString stSection, stKey, stValeur, stFichier
End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
18 oct. 2005 à 08:57
app.path sous excel ?? non je crois pas que ca existe.

BasicInstinct
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
18 oct. 2005 à 10:26
Bien vu BasicInstinct
si tu es sous VBA C'est Application.Path que tu dois utiliser

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
18 oct. 2005 à 10:55
salut,
sinon regarde aussi du coté de chr

essaie en mettant Chr$(0) au lieu de Chr(0)

j'ai deja eu le probleme avec ca,
0
cotzy Messages postés 14 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 18 octobre 2005
18 oct. 2005 à 11:07
merci basic instinct mon erreur venait bien de la "application.path"
maintenant d'origine ma target est : c:\programfiles\microsoft office\office\ et le nom de mon fichier

cependant maintenant je rencontre une nouvelle erreur qui elle parait plus tordu ...

'erreu dans cette ligne :

LireINI = Left$(Retour, GetPrivateProfileString(NomParam, ByVal NomVar, "", Retour, Len(Retour), fichier))

erreur : point d'entrée GetprivateprofilA d'un DLL introuvable dans kernel 32

c'est pour ca que je crois qu'il me manque peut etre une reference (Ps: je suis sur un OS NT4 je ne sais pas si ca jou ...)

merci d'avance !
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 oct. 2005 à 11:21
salut,
il doit y avoir une erreur dans la casse de la déclaration de l'alias de ton API.
PCPT [AFCK]
0
cotzy Messages postés 14 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 18 octobre 2005
18 oct. 2005 à 13:05
j'ai déja utiliser cette structure sur un prog vb ca marchait tres bien ; mais la avec excel je sais pas si c'est exactement cette expression pour la declaration des valiable avec "Alias"...?

merci de m'aider encore :)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 oct. 2005 à 13:19
re,

la déclaration est :

Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ...

tu as sans doute fait :
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetprivateprofilA" ...
qui est donc un point d'entrée inexistant.

PCPT [AFCK]
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 oct. 2005 à 17:15
re,
tu es bien en application W32 n'est-ce pas?!!!

sinon, tes déclarations d'API se font de la manière suivante


#If Win32 Then
' Profile String functions:
Private Declare Function WritePrivateProfileString Lib "KERNEL32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileString Lib "KERNEL32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As Any, ByVal lpKeyName As Any, ByVal lpDefault As Any, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
#Else
' Profile String functions:
Private Declare Function WritePrivateProfileString Lib "Kernel" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Integer
Private Declare Function GetPrivateProfileString Lib "Kernel" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As Any, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
#End If


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


++
PCPT [AFCK]
0
Rejoignez-nous