Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/08/2011, 09h59   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2008
Messages : 32
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 32
Points : 11
Points : 11
Par défaut Traiter un fichier .txt

Bonjour!

Voilà, mon problème est très simple mais je n'ai pas de bonnes connaissance en programmation sur excel.

J'aimerais savoir s'il est possible de traiter un fichier .txt contenant des informations du style (provenant de AUTOCAD)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
              Espace
                en point, X=111322.3898  Y=152163.6342  Z=  23.8230
 
                  SOMMET    Calque: "eau_navig"
                            Espace: Espace objet
                   Couleur: 5 (bleu)    Type de ligne: "DASHED"
                             Maintien = 3263f
            Espace
                en point, X=111324.8895  Y=152167.3594  Z=  23.8230
 
                  SOMMET    Calque: "eau_navig"
                            Espace: Espace objet
(...)
Continuant ainsi sur plusieurs dizaines de points.

Le but de la manoeuvre est au final avoir trois colonnes (X,Y,Z) contenant uniquement les coordonnées X,Y,Z de chaque point pour après créer un fichier texte contenant uniquement ces informations.

Comment puis-je arriver à mes fins?

Existe-t-il un moyen plus rapide qu'Excel? Je sais également utiliser matlab.

Un grand merci!
jimmypoker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 12h03   #2
Membre confirmé
 
Homme Denis Morena
Technicien qualité et métrologie industrielle
Inscription : avril 2011
Messages : 115
Détails du profil
Informations personnelles :
Nom : Homme Denis Morena
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Technicien qualité et métrologie industrielle
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 115
Points : 221
Points : 221
Bonjour,

j'utiliserais la démarche suivante :

- copie du fichier texte sur une feuille Excel
- compter le nombre de lignes totale si cela est variable
- supprimer toutes les lignes inutiles (la première, puis en partant de la deuxième ligne : sélectionner les 6 prochaines lignes et les supprimer)

Code :
1
2
3
4
For i = 0 To nblines
j = 2 + i * 7
k = 7 + i * 7
'si le nombre de lignes sont variables la sélection se fait des lignes de j à k
- comme le nombre de caractères à l'air régulier, j’utiliserais la formule :

Citation:
=STXT(case;n° de départ;n° de caractères)
pour isoler X, Y et Z...

- copier les données sur un fichier texte vierge si cela est nécessaire

Si cette solution t’intéresse tiens moi au courant...

Cordialement
White Mibu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/08/2011, 13h22   #3
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Teste pour voir si ça convient :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
Sub lireFichierTexte()
 
    Dim Tbl() As String
    Dim Ligne As String
    Dim X As Double
    Dim Y As Double
    Dim Z As Double
    Dim I As Long
    Dim J As Long
    Dim PosX As Integer
    Dim PosY As Integer
    Dim PosZ As Integer
 
    'ouvre le fichier texte et stocke les données
    'dans un tableau
    Open "F:\Fichier.txt" For Input As #1
 
        Do While Not EOF(1)
            Line Input #1, Ligne
            I = I + 1
            ReDim Preserve Tbl(1 To I)
            Tbl(I) = Ligne
        Loop
 
    'referme le fichier
    Close #1
 
    'pour l'inscription à partir de la ligne 2
    J = 1
 
    For I = 1 To UBound(Tbl)
 
        'recherche la ligne des points
        If InStr(Tbl(I), "en point") <> 0 Then
 
            'remplace le point par la virgule (à voir si nécessaire ?)
            Tbl(I) = Replace(Tbl(I), ".", ",")
 
            'récupère la position des lettres
            PosX = InStr(Tbl(I), "X")
            PosY = InStr(Tbl(I), "Y")
            PosZ = InStr(Tbl(I), "Z")
 
            'extrait les valeurs numériques
            X = CDbl(Mid(Tbl(I), PosX + 2, PosY - PosX - 2))
            Y = CDbl(Mid(Tbl(I), PosY + 2, PosZ - PosY - 2))
            Z = CDbl(Mid(Tbl(I), PosZ + 2, Len(Tbl(I)) - PosY - 2))
 
            'et les inscrit dans la feuille active à partir de la seconde ligne
            J = J + 1
            Range("A" & J) = X
            Range("B" & J) = Y
            Range("C" & J) = Z
 
        End If
 
    Next I
 
End Sub
Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 12h30   #4
Candidat au titre de Membre du Club
 
Inscription : novembre 2008
Messages : 32
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 32
Points : 11
Points : 11
Un grand merci pour votre aide!

Je dois vous avouer que lors de mon message je venais d'apprendre qu'il était possible d'utiliser excel avec autre chose que les cellules donc je suis preneur de tout tutoriel qui montre où taper ces lignes, comment compiler, en voir le résultat, etc

J'ai fini par trouver en chipotant avec matlab, mais vos réponses m'ouvrent à une parcelle d'excel qui m'était inconnue, merci à vous!

Bonne journée
jimmypoker est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h49.


 
 
 
 
Partenaires

Hébergement Web