bonjour,

compte-tenu des points communs entre le code d'écriture et de lecture
j'ai finalement décidé d'écrire une routine regroupant les deux fonctionnalités

donc le fichier test.ini à placer dans le répertoire "Mes Documents"
Code ini : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
[UserHome]
Name=
Handy=21/10/2016 ;ceci est la clé recherchée
WWW=
[UserBusiness]
Name=
Handy=02/02/2015 ;pas celle-ci
WWW=

le code :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Set fso = CreateObject("Scripting.FileSystemObject")
Set wshell = CreateObject("WScript.Shell")
Set oFile = fso.GetFile(wshell.SpecialFolders("MyDocuments") & "\test.ini")
rep = WriteReadIni(oFile,"UserHome","WWW","nouvelle valeur de clé")
Msgbox WriteReadIni(oFile,"UserHome","WWW",Null)
 
Function WriteReadIni(oFile,section,key,value)
' écrit/lit la clé <key> de section <section> de l'objet fichier oFile avec la valeur <value> si lecture : value = Null 
' en écriture si la section et/ou la clé n'existent pas, elles seront créées
' en écriture renvoie toujours vrai, en lecture renvoie soit : la valeur de clé, une chaine vide en cas de clé vide ou Faux si la clé n'existe pas
Dim oText,iniText,sectText,newSectText,keyText
	' Initialisation des objets regexp
	' peut être déplacé dans le code principal en cas d'appels successifs
	Set reg = New RegExp
	Set regSub = New RegExp
	reg.IgnoreCase = True
	regSub.IgnoreCase = True
' lecture du fichier ini et fermeture
	Set oText = oFile.OpenAsTextStream(1,0)
	iniText = oText.ReadAll
	oText.Close
	reg.Pattern = "\[" & section & "\]([^\[]+)":regSub.Pattern = "\b" & key & " *= *([^;\f\n\r\t\v]*)"
	On Error Resume Next
	If IsNull(value) Then   ' lecture clé
		WriteReadIni = regSub.Execute(reg.Execute(iniText).Item(0).SubMatches(0)).Item(0).SubMatches(0)
		If Err.Number = 5 then WriteReadIni = False
	Else						' écriture clé
		sectText = reg.Execute(iniText).Item(0).SubMatches(0)
		If Err.Number = 5 Then ' section inconnue
			iniText = iniText & vbCrLf & "[" & section & "]" & vbCrLf & key & "=" & value
		Else
			newSectText = regSub.Replace(sectText,key & "=" & value)
			If newSectText = sectText Then
				If Right(sectText,2) = vbCrLf Then keyText = key & "=" & value & vbCrLf Else keyText = vbCrLf & key & "=" & value & vbCrLf
				newSectText = sectText & keyText
			End If
			iniText = reg.Replace(iniText,"[" & section & "]" & newSectText)
		End If
		' écriture du fichier ini mis à jour
		Set oText = oFile.OpenAsTextStream(2,0)
		oText.Write iniText
		oText.Close
		WriteReadIni = True
	End If
End Function
Toute remarque sera la bienvenue avant de placer ce code dans la