Les Allergies
Alimentaires
Posez votre question Signaler

[macro excel]manipuler notepad avec une macro [Résolu]

sioux49 6Messages postés 17 octobre 2005Date d'inscription - Dernière réponse le 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.
Lire la suite 

[macro excel]manipuler notepad avec une macro »

3 réponses
Réponse
+0
moins plus
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


sioux49- 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.
sioux49- 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.
Ajouter un commentaire
Ce document intitulé « [macro excel]manipuler notepad avec une macro » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?