VBA Excel - Ecrire dans fichier txt

Résolu/Fermé
Messages postés
44
Date d'inscription
mardi 3 octobre 2006
Statut
Membre
Dernière intervention
19 décembre 2010
-
 Tom Clancy -
Bonjour à tous

Je dois exécuter 2 macros en vba Excel,
- une qui ouvre un fichier text et incrémente un tableau de variable, là pas de problème (voici le code épuré pour info)
---------------------
Private Sub Command6_Click()
On Error GoTo errCommand6_Click

txt = ActiveWorkbook.Path & "\config.ini"

fNum = FreeFile
Text4.Text = ""

Open txt For Input As #fNum
While Not EOF(fNum)
Line Input #fNum, Variable
Text4.Text = Text4.Text & Variable & vbCrLf
Wend
Close #fNum

errCommand6_Click:
Select Case Erreur("errCommand6_Click")
Case vbIgnore: Resume Next
Case vbRetry: Resume
Case vbAbort: Resume errCommand6_Click
End Select
End Sub

-------------------------
- la deuxième macro doit mettre à jour ce fichier texte en fonction des modifications apportées au tableau de variables (appelons le tab_txt() ), et c'est là que je bloque. J'ai bien trouvé des exemples pour insérer des lignes en fin de fichier, mais je souhaite comparer les valeurs de tab_txt() et soit ajouter une ligne, soit mettre à jour une ligne existante dans le fichier text

j'ai aussi trouvé une solution pour VB (ci dessous qui marche à condition d'avoir installé VB6, mais je maitrise pas du tout VB6 et ne souahite pas refaire mon projet a therme en VBA), mais elle ne marche pas en VBA ("bibliothèque introuvable"), existe - il une alternative VBA ou une adaptation de ce code
--------------------------------
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
--------
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
--------
Function LireINI(Entete As String, Variable As String, FichierINI As String) As String
Dim Retour As String
Retour = String(255, Chr(0))
LireINI = Left$(Retour, GetPrivateProfileString(Entete, ByVal Variable, "", Retour, Len(Retour), FichierINI)) ''Application.Path & "\" & FichierINI))
End Function
--------
Function EcrireINI(Entete As String, Variable As String, Valeur As String, FichierINI As String) As String
EcrireINI = WritePrivateProfileString(Entete, Variable, Valeur, FichierINI) ' Application.Path & "\" & FichierINI)
End Function

2 réponses

Bonjour

Si kernel32 n'est pas installé sur ta machine, tu peux toujours ré-écrire ton fichier complètement à chaque fois (il ne doit pas être si long que ça) sous un nom provisoire , puis utiliser quelques kill et quelque Name pour tout remettre en ordre.
Messages postés
44
Date d'inscription
mardi 3 octobre 2006
Statut
Membre
Dernière intervention
19 décembre 2010
7
Bon, je répond un peu tard

Kernel32 est bien installé, ce sont des ocx et aitre dll associé à ma "commondilalog", dont la mise en place est un peu lourde si l'on veut simplement publier le classeur excel, j'ai donc ré-écrit mes procédures et chercher un peu a fait beaucoup de bien à ma connaissance

Si quelqu'un veut un aperçu du code, qu'il face signe

Merci encore et à bientôt peut - être ;-)

SUJET CLOT
"CLOS"...
"cherché", "fasse"...