Rechercher : dans
Par :

[macro excel]manipuler notepad avec une macro

Dernière réponse le 18 oct 2005 à 09:28:00 sioux49, le 17 oct 2005 à 12:03:42 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « [macro excel]manipuler notepad avec une macro » dans :
Exécuter une macro VoirExécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...

1

Kobaya, le 17 oct 2005 à 16:16:46

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


A+,
Kobaya.

Répondre à Kobaya

2

sioux49, le 17 oct 2005 à 18:12:18

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.

Répondre à sioux49

3

 sioux49, le 18 oct 2005 à 09:28:00

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.

Répondre à sioux49