VBA Excel - Ecrire dans fichier txt

Résolu/Fermé
petitmarco Messages postés 44 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 19 décembre 2010 - 31 janv. 2008 à 11:55
 Tom Clancy - 31 août 2011 à 14:36
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
A voir également:

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.
2
petitmarco Messages postés 44 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 19 décembre 2010 7
1 févr. 2008 à 23:09
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
-2
"CLOS"...
0
"cherché", "fasse"...
0