[macro excel]manipuler notepad avec une macro

Résolu/Fermé
sioux49 Messages postés 6 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 27 octobre 2005 - 17 oct. 2005 à 12:03
sioux49 Messages postés 6 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 27 octobre 2005 - 18 oct. 2005 à 09:28
Bonjour,

Je voudrais savoir comment utiliser notepad avec une macro excel.
Mon sujet est le suivant:
avec une macro excel je traite des fichiers de données. A la fin du programme je crée un fichier texte contenant deux colonnes de données. Le problème est que le séparateur entre les données est une tabulation alors que je veux un ";". De plus sur les deux premières lignes j'ai du texte que je veux encadrer par des guillemets. Ainsi, j'ai:
crankangle tasa
et je veux avoir:
"crankangle";"tasa"

Merci d'avance.
A voir également:

1 réponse

Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
17 oct. 2005 à 16:16
salut,

avec ce code, tu devrais y arriver :

Sub EcrireFichier()
    Dim lngNbLignes     As Long
    Dim lngIndexLig     As Long
    Dim intF            As Integer
    
    ' nombre de lignes de la zone de données
    lngNbLignes = ActiveCell.CurrentRegion.Rows.Count
    
    ' ouvrir un canal pour le fichier
    intF = FreeFile()
    ' créer le fichier
    Open "C:\users\MonFichier.txt" For Output As intF
    
    ' écriture des données
    For lngIndexLig = 1 To lngNbLignes
        If lngIndexLig = 1 Then
            Print #intF, """" & Cells(lngIndexLig, 1).Value & """;""" & Cells(lngIndexLig, 1).Value & """";
        Else
            Print #intF, Cells(lngIndexLig, 1).Value & ";" & Cells(lngIndexLig, 1).Value;
        End If
        Print #intF,
    Next
    
    ' fermer le canal
    Close #intF
End Sub


0
sioux49 Messages postés 6 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 27 octobre 2005 10
17 oct. 2005 à 18:12
Merci,

Ça marche!

Il y a juste un dernier problème: j'ai modifié un peu ton code car dans ma première ligne de données il a juste un chiffre. J'ai fait la modification suivante:
 ' écriture des données
    For lngIndexLig = 1 To lngNbLignes
        If lngIndexLig = 1 Then
            Print #intF, Cells(lngIndexLig, 1).Value;
        Else            
            If lngIndexLig = 2 Then
                Print #intF, """" & Cells(lngIndexLig, 1).Value & """;""" & Cells(lngIndexLig, 2).Value & """";
            Else
                Print #intF, Cells(lngIndexLig, 1).Value & ";" & Cells(lngIndexLig, 2).Value;
            End If
        End If
        Print #intF,
    Next

Avec ma modification j'obtiens ce que je voulais à l'exception suivante: pour la première ligne il me fait une tabulation et je ne sais pas pourquoi. Ainsi, j'ai:

   3600
"crankangle";"tasa"       
123;56
212;94

alors que je veux:
3600
"crankangle";"tasa"       
123;56
212;94


Encore merci d'avance. Tu m'as enlevé une épine du pied. Cela faisait 4 jours que je cherchais à résoudre ce problème.
0
sioux49 Messages postés 6 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 27 octobre 2005 10
18 oct. 2005 à 09:28
J'ai trouvé un moyen de résoudre mon problème. Après le premier If je fais:
' écriture des données
    For lngIndexLig = 1 To lngNbLignes
        If lngIndexLig = 1 Then
            Print #intF, Cells(lngIndexLig, 1).Value;Cells(lngIndexLig, 2).Value;


Encore merci.
0