Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Conception
Conception Questions relatives à la conception d'un classeur Excel (structure, organisation, protection, sécurisation, ...)
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/01/2011, 10h10   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Par défaut Trier un document .txt via Excel

Bonjour à tous (et bonne année aussi )

Voilà mon problème :
J'ai reçu un document .txt contenant un annuaire
1 ligne = 1 personne
1 personne = Steeve | John | Simone | Lyon 2003 Cas référés : Pathologies et chirurgie néo-natales bovine/Chirurgie orthopédique bovine/Insémination artificielle canine/Médecine bovine. Coordonnées professionnelles Groupe Vétérinaire Pré de l'Hôpital 71110 Marcigny France Tél : 03 87 28 20 12 Fax : 03 87 29 22 88 E-mail : fake@dunno.fr

Seulement toutes les personnes n'ont pas les mêmes rubriques
Certaines femmes ont une rubrique "nom de jeune fille", certains ont une rubrique 'Distinctions", d'autres ont une rubrique "Coordonnées personnelles", etc.

Je ne sais pas comment ce fichier .txt a été générer mais j'aimerais le mettre sous forme de tableau (en acceptant que parfois les colonnes soient vide par manque de renseignement) pour pouvoir ressortir les personnes par promotion, nom, code postal, etc.

Pour l'instant j'ai pu isoler les rubriques "Nom", "Nom de jeune fille" et "Prénom".
Je bloque sur les promotions, je n'arrive pas Remplacer "Lyon 2003" par "Lyon 2003 |", le remplacement par "Lyon ^#^#^#^# |" me renvoie un message d'erreur.
Et j'ai aucune idée de comment gérer les différentes rubriques ensuite

Merci de m'aider ou de m'aiguiller =)
Shenkyen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 11h16   #2
Invité régulier
 
Inscription : novembre 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 14
Points : 9
Points : 9
Par défaut conversion fichier txt

Bonjour,
Tu peux coller ton fichier txt dans excel et utiliser ensuite la fonction convertir dans le menu Données.
taquatzieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 13h47   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Merci de la réponse mais cela ne marche que pour les 3 premiers renseignements (Nom, nom de jeune fille, Prénom) après ça ne marche plus.
Certains ont en 4ème renseignement des "distinctions", d'autres ont des "cas référés", d'autres des "coordonnées proessionnelles". etc.

Si toutes les personnes avaient eu le "schéma" je n'aurais pas eu de problème mais là tout est mélangé

Je m'explique pour essayer d'etre plus clair.
Comme colonne je voudrais "Nom, nom de jeune fille, Prénom, distinctions, cas référés, formation complémentaire, coordonnées professionnelles, coordonnées personelles, code postal, N° de téléphone fixe, N° de téléphone portable)

Par exemple ligne 1 je trouve ces renseignements :
Nom, nom de jeune fille, Prénom, distinctions, cas référés, formation complémentaire, coordonnées professionnelles.
ligne 2 je trouve ces renseignements :
Nom, nom de jeune fille, Prénom, cas référés, formation complémentaire, coordonnées personelles, N° de téléphone portable.
ligne 3 je trouve ces renseignements :
Nom, nom de jeune fille, Prénom, N° de téléphone portable.
Etc.

Vous voyez où se situe le souci ?
Shenkyen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 18h09   #4
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,
La transformation est pour moi trop complexe pour être faite à la main ou par formule, il faut une macro qui scrute chaque ligne.
De plus, il faut une définition claire de comment on trouve chaque attribut (trouver le début est assez simple, la fin est un peu plus complexe à trouver !)
Est-ce que tu peux détailler chaque information voulue et comment tu la trouves, avec un exemple de ligne qui la contient ?
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 18h56   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
les lignes ressemblent à ceci :
Nom : Collin. Nom de jeune fille : Mathews. Prénom : Céline. Promotion : Lyon 1999 Formation complémentaire : Interne en Équine à l'ENVL. Coordonnées personnelles Domaine Barbette 58300 Sougy sur Loire France Mobile : 06 67 77 13 50 E-mail : celine.collin@fake.fr Coordonnées professionnelles Clin. Vét. du Nivernais Port des Vignots 58300 Decize France Tél : 03 86 77 10 55 Contact direct : Mobile : 06 67 77 13 50 E-mail : celine.collin@fake.fr

J'ai mis en rouge les catégories voulues. Et les "attributs" ce sont les renseignements ou les catégories ?

Merci de passer un peu de temps sur cet épineux problème
Shenkyen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 00h29   #6
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Re,
Voici un exemple de ce que je ferais :
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
Public Sub Decode()
Dim strSource As String
Dim tabRes(12, 3) As String
Dim i As Integer
Dim j As Integer
Dim bolSuite As Boolean
strSource = ActiveCell.Value
 
'Liste des libellés à chercher
tabRes(1, 1) = "Nom :" & Chr(160)
tabRes(2, 1) = "Nom de jeune fille :" & Chr(160)
tabRes(3, 1) = "Prénom :" & Chr(160)
tabRes(4, 1) = "Promotion :" & Chr(160)
tabRes(5, 1) = "Formation complémentaire :" & Chr(160)
tabRes(6, 1) = "Coordonnées personnelles" & Chr(160)
'Texte qui doit précéder
tabRes(7, 0) = "Coordonnées personnelles"
tabRes(7, 1) = "Mobile :" & Chr(160)
tabRes(8, 0) = "Coordonnées personnelles"
tabRes(8, 1) = "E-mail :" & Chr(160)
tabRes(9, 1) = "Coordonnées professionnelles" & Chr(160)
tabRes(10, 1) = "Tél :" & Chr(160)
tabRes(11, 1) = "Contact direct : Mobile :" & Chr(160)
tabRes(12, 0) = "Contact direct"
tabRes(12, 1) = "E-mail :" & Chr(160)
 
'Calcul des positions de départ
For i = 1 To UBound(tabRes)
    If tabRes(i, 0) = vbNullString Then
        tabRes(i, 2) = InStr(strSource, tabRes(i, 1)) + Len(tabRes(i, 1))
    Else
        tabRes(i, 2) = InStr(InStr(strSource, tabRes(i, 0)), strSource, tabRes(i, 1)) + Len(tabRes(i, 1))
    End If
    If tabRes(i, 2) = Len(tabRes(i, 1)) Then tabRes(i, 2) = 0
Next i
 
'Récupération des attributs
For i = 1 To UBound(tabRes) - 1
    If tabRes(i, 2) <> 0 Then
        bolSuite = False
        For j = i + 1 To UBound(tabRes)
            If tabRes(j, 2) <> 0 Then
                bolSuite = True
                Exit For
            End If
        Next j
        If bolSuite Then
            tabRes(i, 3) = Mid(strSource, tabRes(i, 2), tabRes(j, 2) - Len(tabRes(j, 1)) - tabRes(i, 2))
        End If
    End If
Next i
tabRes(UBound(tabRes), 3) = Mid(strSource, tabRes(UBound(tabRes), 2))
 
'Recopie dans la feuille Excel
For i = 1 To UBound(tabRes)
    ActiveCell.Offset(0, i) = tabRes(i, 3)
Next i
End Sub
Cette macro est à exécuter en étant placé sur une cellule qui contient une ligne à décoder, et copie les différentes infos dans les cellules qui suivent.
Malheureusement il reste des bugs, lorsque des attributs sont définis plusieurs fois (exemple : e-mail pour les coordonnées perso ou professionnelles) et qu'ils ne sont pas présents à toutes les positions prévues.
Pour construire quelque chose de propre, il faut une règle claire pour retrouver chaque information, afin que la fonction InStr puisse retrouver ce qui nous intéresse...
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 10h55   #7
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
J'ai une erreur d’exécution '5' qui apparaît quand j'exécute la macro sur une ligne sans nom de jeune fille et cette ligne de code est surlignée :
Code :
1
2
3
4
5
6
7
8
9
'Calcul des positions de départ
For i = 1 To UBound(tabRes)
    If tabRes(i, 0) = vbNullString Then
        tabRes(i, 2) = InStr(strSource, tabRes(i, 1)) + Len(tabRes(i, 1))
    Else
       tabRes(i, 2) = InStr(InStr(strSource, tabRes(i, 0)), strSource, tabRes(i, 1)) + Len(tabRes(i, 1))
    End If
    If tabRes(i, 2) = Len(tabRes(i, 1)) Then tabRes(i, 2) = 0
Next i
Pour les lignes avec un nom de jeune fille, c'est une autre ligne qui est surlignée :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'Récupération des attributs
For i = 1 To UBound(tabRes) - 1
    If tabRes(i, 2) <> 0 Then
        bolSuite = False
        For j = i + 1 To UBound(tabRes)
            If tabRes(j, 2) <> 0 Then
                bolSuite = True
                Exit For
            End If
        Next j
        If bolSuite Then
            tabRes(i, 3) = Mid(strSource, tabRes(i, 2), tabRes(j, 2) - Len(tabRes(j, 1)) - tabRes(i, 2))
        End If
    End If
Next i
tabRes(UBound(tabRes), 3) = Mid(strSource, tabRes(UBound(tabRes), 2))
Merci de l'aide mais je pense que je vais laisser tomber, si c'est pas faisable avec des macros, je vois pas comment le faire en une vie

Encore merci
Shenkyen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h04   #8
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Re,
Le problème ce n'est pas ce qui est techniquement faisable ou pas. Il est impossible de programmer, que ce soit en formules ou en macro, quelque chose qui n'est pas décrit précisément...
Dans ce genre de situation, il faut d'abord savoir exactement qui faire dans chaque cas de figure.
A+
tedo01 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 01h57.


 
 
 
 
Partenaires

Hébergement Web