IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

retraitement d'un fichier txt avant de l'importer vers access


Sujet :

Access

  1. #1
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut retraitement d'un fichier txt avant de l'importer vers access
    bonjour à tous!

    j'ai quelques problèmes avec mon fichier txt avant de l'importer dans access:
    j'ai réussi à faire quelques retraitements pour qu'il puisse être traitable dans access grâce à l'outils rechercher et remplacer du bloc note mais je bloque sur quelques retraitements. j'ai vu qu'il est possible d'utiliser du code avec word et le bloc note :http://cid.e
    ns-lsh.fr/aide/documents/ac_wordremplacer.htm

    mon problème est que je n'arrive pas à faire un fichier de cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    entreprise 1
    17 rue Georges Bourgoin
    78760
    Achères
    01 12 11 01 06
    www.lurcat.fr
    ;
    entreprise 122
    1 avenue du Général de Gaulle  
    78760 
    Achères
    01 39 24 08 57
     
    ;
    entreprise 1fdf
    19 rue jérôme Bourgoin  
    78270 
    Achères
    01 39 45 01 06
     
    ;
    j'ai toute mes lignes écrites de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    entreprise fdfd
            45 avenue des Robaresses  78450 Andrésy
                Tél. : 01 45 70 27 27      
                www.cfi.ccip.com
                (bla bla bla bla bla bla ...)
     
            entreprise 1dfd
            45 avenue des Robes  78450 Andrésy
                Tél. : 01 39 70 27 45 Fax : 01 39 45 91 92   
                (bla bla bla bla bla bla ...)
     
            entreprise 156
            40 rue Pablo Nérudr  78570 Andrésy
                Tél. : 01 39 74 71 17 Fax : 01 39 45 48 66   
                (bla bla bla bla bla bla ...)
     
          Aubergenville
            entreprise 1dfdf
            45 rue du chantier de tours 48410 Aubergenville
                Tél. : 01 45 90 54 00 Fax : 01 30 45 17 78   
                www.ifa.fr
                (bla bla bla bla bla bla ...)
     
            entreprise 1fdf
            Rue du Bois cassé  78400 Aubergenville
                Tél. : 01 30 55 80 17 Fax : 01 30 90 36 57   
                (bla bla bla bla bla bla ...)
    il faudrait donc que j'arrive à virer un contenu entre parenthèse et le champ fax et que je sépare l'adresse du code postal et de la ville en les mettant chacun à la ligne. enfin je laisserai une ligne sans rien pour laisser l'adresse du site si elle y est.
    avez vous des informations sur la manière donc je pourrai refaire ces traitements ?
    est ce possible ?
    merci
    jérôme

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    seul un code VBA de lecture séquentielle de fichier te permettra de t'en sortir.

    En revanche, je ne vois pas pourquoi tu veux des renvois à la ligne pour une meme entreprise ...et je doute qu'Access comprenne ta logique.

    Ce serait plus simple d'avoir une ligne par entreprise ...

  3. #3
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    merci beaucoup de ta réponse.
    sais tu si il existe des tutorials sur le code VBA de lecture séquentielle ?
    je n'y connais pas grand chose en visual basic, je n'en ai fais que sur excel.
    je pense que tu as raison, je vais tout mettre sur une seule ligne.
    mais dans ce cas je dois séparer chaque champ par un caractère ?

    en faite, je pensais au début récuperer toute mes données du fichiers texte dans excel puis les repasser par access... ca me parait un peu tordu!

    merci en tout cas de ta réponse

  4. #4
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut importer et traiter directement dans access
    Créer 2 tables tbImport et tbResultat avec un champ texte nommé ligneet un champ numeroAuto nommé n

    Modifier le nom des fichiers et au besoin adapter le code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
     
    Option Compare Database
     
    Sub Traitement()
     Call Importation("c:\Source.txt")
     Call Nettoyage
     Call Extraction
     Call Exportation("c:\resultat.txt")
    End Sub
     
    Sub Importation(fichier As String)
     Dim t As DAO.Recordset, s As String
     
     
     DoCmd.RunSQL "DELETE [tbImport].* FROM [tbImport];"
     
     n = FreeFile
     Open fichier For Input As #n
     Set t = CurrentDb.OpenRecordset("tbImport")
     Do Until EOF(n)
      Input #n, s
      t.AddNew
      t!ligne = Trim$(s)
      t.Update
     Loop
     t.Close
     Close (n)
     
    End Sub
     
    Sub Nettoyage()
     Dim rst As DAO.Recordset, s As String
     
     Set rst = CurrentDb.OpenRecordset("SELECT tbImport.ligne FROM tbImport ORDER BY tbImport.n;")
     Do Until rst.EOF
      s = rst!ligne
      If Left$(s, 1) = "(" Then
       rst.Delete
       rst.MoveNext
       Do Until rst.EOF
        s = rst!ligne
        If s = "" Then Exit Do
        rst.Delete
        rst.MoveNext
       Loop
      End If
      If rst.EOF Then Exit Do
      rst.MoveNext
     Loop
     rst.Close
    End Sub
     
    Sub Extraction()
     Dim rst As DAO.Recordset, rst2 As DAO.Recordset, s As String, n As Long, n2 As Long, k As Long
     
     DoCmd.RunSQL "DELETE tbResultat.* FROM tbResultat;"
     
     Set rst = CurrentDb.OpenRecordset("SELECT tbImport.ligne FROM tbImport ORDER BY tbImport.n;")
     Set rst2 = CurrentDb.OpenRecordset("tbResultat")
     Do Until rst.EOF
      s = rst!ligne
     
      If s = "" Then k = 0
      If PresenceCodePostal(s) > 0 Then
       k = 2    'adresse
      Else
       If InStr(1, s, "Tél. :") > 0 Then
        k = 3   'telephone
       Else
        If k > 1 Then
         k = 4  'adresse internet
        Else
         k = 1  'ecole
        End If
       End If
      End If
     
      Select Case k
      Case 0
       rst2.AddNew
       rst2!ligne = ";"
       rst2.Update
      Case 1
       rst2.AddNew
       rst2!ligne = s
       rst2.Update
     
      Case 2    'adresse
       n = PresenceCodePostal(s)
       rst2.AddNew
       rst2!ligne = Trim$(Left$(s, n - 1))
       rst2.Update
       rst2.AddNew
       rst2!ligne = Trim$(Mid$(s, n, 5))
       rst2.Update
       rst2.AddNew
       rst2!ligne = Trim$(Mid$(s, n + 6))
       rst2.Update
     
      Case 3    'telephone
       n = InStr(1, s, "Tél. :")
       rst2.AddNew
       rst2!ligne = Mid$(s, n + 7, 15)
       rst2.Update
     
      Case 4    'internet
       rst2.AddNew
       rst2!ligne = s
       rst2.Update
      End Select
     
      rst.MoveNext
     Loop
     
    End Sub
     
    Function PresenceCodePostal(s As String) As Long
     Dim v As Variant, i As Long, n As Long
     
     'remplace les espaces multiples par 1 espace
     For i = 20 To 1 Step -1
      s = Replace(s, Space$(i), " ")
     Next i
     
     'on eclate la chaine
     v = Split(s, " ")
     
     n = UBound(v)
     'on estime qu'un nombre à 5 chiffres est le code postal
     For i = 1 To n
      If Len(v(i)) = 5 Then
       If IsNumeric(v(i)) Then PresenceCodePostal = InStr(1, s, v(i))
       Exit For
      End If
     Next i
    End Function
     
    Sub Exportation(fichier As String)
     Dim rst As DAO.Recordset, s As String
     
     n = FreeFile
     Open fichier For Output As #n
     Set rst = CurrentDb.OpenRecordset("tbResultat")
     Do Until rst.EOF
      Print #n, rst!ligne
      rst.MoveNext
     Loop
     rst.Close
     Close (n)
    End Sub

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Sans programmation
    Tu pourrais commencer par faire un import de tes données sous access
    tu vas te retrouver avec une table d’une seule colonne
    renomme la table matable
    renomme le champ monchamp
    ajoute trois autres colonnes
    maclef compteur auto
    champ entier
    enreg entier long

    fait tourner la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE matable SET enreg = Fix(([maclef]/7)+(6/7));

    Ceci va te donner un numéro d’enregistrement
    Puis celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE matable SET champ = [maclef]-(([enreg]-1)*7);
    Ceci te donnera un numéro de champ

    Ensuite il faut créer la requête suivante à sauvegarder sous temp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    TRANSFORM First(monchamp) AS rub
    SELECT enreg
    FROM matable
    GROUP BY enreg
    PIVOT champ;
    Et enfin celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT temp.* INTO final FROM temp;

  6. #6
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    tout d'abord merci beaucoup de vos réponses!!
    c'est très sympa!
    j'ai essayé la méthode de random:
    c'est une très bonne idée mais le problème c'est qu'il y a pas forcèment 7 enregistrements: il peut en avoir que 6 si il n'y a pas le site. enfin c'est déja un bon début de réflexion. ca m'a donné des idées!
    je vais essayer de mieux reformuler mon problème et reprendre de 0 le fichier sans passer par mes petits traitements fais sous word et le bloc note.
    je vous montre par la suite ce que j aimerai faire.
    merci encore

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut
    Bonjour,

    Oui, la méthode de Random est astucieuse, mais soumise à certaines contraintes comme les 7 lignes par enregistrement.

    Celle de Helas, a l'air plus compliquée mais plus pointue, si Helas repasse par ici... pourrais-tu commenter un peu ton code pour les béotiens et donner si possible la structure des tables "tbImport et tbResultat" ?

    Merci d'avance,

    JMarc

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    une autre possibilité à base de lecture séquentielle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    Type RecordFile
        Name As String
        Address As String
        Zip As String
        City As String
        Tel As String
        Fax As String
        Url As String
        Comment As String
    End Type
     
     
     
    Sub TransformIt()
     
    Dim ficS As String, ficT As String
    Dim fiS As Integer, fiT As Integer
    Dim blnRecEnd As Boolean
    Dim strRecStart As String, strRecEnd As String
    Dim tmp As String, tmpRec As String
    Dim curRecord As RecordFile
    Dim it As String
     
    ficS = "c:\temp\ficSource.txt"
    ficT = "c:\temp\ficTarget.txt"
     
    strRecStart = "entreprise *"
    strRecEnd = "*)"
     
    blnRecEnd = False
     
    fiS = FreeFile
    Open ficS For Input As #fiS
     
    fiT = FreeFile
    Open ficT For Output As #fiT
     
    Do While Not EOF(fiS)
        Line Input #fiS, tmp
     
        If Len(Trim(tmp)) > 0 Then
            If Trim(tmp) Like strRecStart Then
                blnRecEnd = False
                curRecord.Name = Right(Trim(tmp), Len(Trim(tmp)) - Len("entreprise "))
     
            ElseIf Trim(tmp) Like strRecEnd Then
                blnRecEnd = True
                curRecord.Comment = Replace(Replace(Trim(tmp), "(", ""), ")", "")
     
            Else
                If Trim(tmp) Like "Tél.*" Then
                    'curRecord.TelFax = Trim(tmp)
                    If InStr(tmp, "Fax") Then
                        curRecord.Fax = Split(Trim(tmp), "Fax : ")(1)
                        curRecord.Tel = Trim(Split(Split(Split(Trim(tmp), "  Fax")(0), " : ")(1), " Fax")(0))
                    Else
                        curRecord.Tel = Split(Trim(tmp), " : ")(1)
                    End If
                ElseIf Trim(tmp) Like "www.*" Then
                    curRecord.Url = Trim(tmp)
                ElseIf IsNumeric(Left(Trim(tmp), 1)) Then
                    ' c'est l'adresse
                    ' visiblement 2 espaces entre la rue et le zip
                    curRecord.Address = Trim(Split(Trim(tmp), "  ")(0))
                    curRecord.Zip = Trim(Split(Split(Trim(tmp), "  ")(1), " ")(0))
                    curRecord.City = Trim(Split(Split(Trim(tmp), "  ")(1), " ")(1))
                End If
            End If
        End If
        If blnRecEnd Then
            With curRecord
                tmpRec = .Name & ";" & .Address & ";" & .Zip & ";" & .City & ";" & _
                         .Tel & ";" & .Fax & ";" & .Url & ";" & .Comment
            End With
            Print #fiT, tmpRec
     
            With curRecord
                .Address = vbNullString
                .City = vbNullString
                .Comment = vbNullString
                .Fax = vbNullString
                .Name = vbNullString
                .Tel = vbNullString
                .Url = vbNullString
                .Zip = vbNullString
            End With
     
            blnRecEnd = False
        End If
    Loop
     
     
    Reset
     
    End Sub
    Bon, il est évident que ce serait bien plus simple avec les RegExp mais j'ai peur de t'assommer.

    cf. le tuto : http://cafeine.developpez.com/access/tutoriel/regexp/

  9. #9
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    alors attention les explications sont parties!!


    j'ai repris le fichier à 0 car je devrais le faire sûrement pour d'autres régions durant mon stage, autant que ce soit fais une fois et que ca me reserve plutot que de bouiner à chaque fois!
    alors j'ai un fichier de plus de 1300 enregistrements qui ont cette structure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    champ1
    nom
    adresse codepostal ville
    telephone fax
    site
    champ2
     
    nom
    adresse codepostal ville
    telephone
    champ2
     
    champ1
    nom
    adresse codepostal ville
    telephone fax
    site
    champ2
    la structure n'a pas d'ordre: le champ 1 peut apparaître dans n'importe quel enregistrement tout comme le site. on les trouve pas a chaque fois.
    ce qu'on trouve sur a chaque fois c est le nom,l'adresse,le codepostal,ville
    le telephone et le champ2.
    à chaque fois apres le champ2 il y a un espace puis un nouvel enregistrement.

    je souhaite supprimer le champ1 car il m'interesse pas et supprimer le champ2 et le champ fax.
    ainsi, je veux à la fin pouvoir obtenir les colonnes suivantes:
    nom|adresse|codepostal|ville|tel|site|

    je sais pas si je dois tout importer sous access direct ou si je dois faire quelques traitements dès le début car par exemple le champ 1 est un champ toujours en gras et le champ 2 est toujours un champ entre parenthèse.
    ainsi je me disais qu'il serait peut être déja possible de retirer ca avant d'aller dans access.
    quelle approche pensez vous qui serait la plus appropriée ?
    merci

  10. #10
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    rebonjour à tous!
    me revoila parti pour ce retraitement
    j'ai réussi à retirer le champ 1 en faisant un rechercher et remplacer les caractères en gras ( ce champ était en gras).
    j'aimerai maintenant retirer le champ 2: le champ 2 est un champ entre parenthèse.
    ex: ( fdfdfdfd )
    y a t il un moyen avec word de les retirer tous en spécifiant de retirer tout les chaines qui ont ( ...) ??
    de même par la suite, est il possible de supprimer les sauts de ligne qui seront effacés ?
    merci
    jérôme

  11. #11
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    j'ai réussi pour les sauts de lignes
    en faisant
    rechercher ^p^p et remplacer par ^p.

  12. #12
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    il suffit de demander à remplacer "(" et ")" par "" ...

    sinon par curiosité que signifie le dessin de ton avatar ?

  13. #13
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    j'ai mis en faite:
    en mode générique en disant de remplacer par rien du tout.
    en pensant que ca va retirer toute les chaines commencant par ( et finissant par )
    mais il me dit que c est pas correct pourtant dans un tutorial,
    ils font : "(*)" pour retirer les expressions entre guillemets.
    ma facon de faire n'est pas bonne ?
    pour l'avatar, je me demande si c est pas celui d'un groupe punk de musique!
    je vais regarder ca de plus près et te dire

  14. #14
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    j'ai encore trouvé !!
    fallait faire :
    \(*\)
    je suis en pleine performance !!

    aller j'attaque mon deuxième café et je continue!!

  15. #15
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    j'ai un truc un peu plus dur:
    j'ai des lignes de cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tél. : 05 39 22 08 57 Fax : 05 39 11 30 46
    j'aimerai virer toute la partie fax pour n'avoir plus que le tél.
    j'ai fais en mode générique avec ignorer les espaces mais il ne le trouve pas.

    j'ai aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    69 rue Georges ba  78760 Achères
    pour celui si j'aimerai réussir à le mettre sur trois lignes:
    une ligne adresse, une ligne code postal et une ligne ville
    comment pourrais je procèder pour ca ?

  16. #16
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    j'ai réussi pour le champ fax:
    rechercher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Fax : )([0-9]{2})( )([0-9]{2})( )([0-9]{2})( )([0-9]{2})
    en ignorant les caractères d'espacement et en mode caractères génériques et remplacer par rien
    ca rentre!!
    aller je vais le finir ce fichier il m'aura pas!!

  17. #17
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    c'est bon j'ai réussi, je suis passé maintenant à access: j'ai fais l'importation de mon fichier txt et je me retrouve avec une seule colonne.
    chaque enregistrement est séparé par une ligne blanche et j'ai sois 5 ou 6 critères : parfois le site.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Collège Jean
            19 rue Georges 
    78450
     Achères
                01 39 11 01 45
     
            Lycée  Weiss
            245 avenue de Gaulle
    78460
     Achares
                01 39  08 57 46
     
            SEoPU 
            19 rue Georges 
    78260
     Achères
                01 39 11 01 06
     
            CFA  Descartes
            25 avenue des Robe
    78570
     Andrésy
                01 39 40 27 27
                www.cfi.ccp.fr
    j'aimerai transformer cette colonne en 6 colonnes:
    nom,adresse,codepostal,ville,tel et site
    il apparaitrait rien dans la colonne site si il n'y a pas de site.
    est ce possible de faire ca avec des requêtes sql comme m'avait montré random ??
    merci !

  18. #18
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    j'ai repris la méthode de random:
    renommer un champ maclef,enreg,champ et monchamp.
    random avait fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE matable SET enreg = Fix(([maclef]/7)+(6/7));
    mais avez vous une idée dans le cas ou mes enregistrements sont séparés par des cases vides ?
    je vous montre la capture :

  19. #19
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    je viens de comprendre le principe de random( la personne mais pas la fonction!!).

    il faut que dans enreg je stocke des valeurs 1 puis 2 quand il y a un champ vide dans monchamp.
    je l'ai fais manuellement.
    existe t il une requête pour dire qu'il faut agrementer de 1 des qu'on a un champ vide ou sinon laisser la même valeur ?
    la ca me dépasse la requête!!
    de même pour la colonne champ: il faut que je fasse un compteur qui repart à 1 après le champ vide.
    ensuite quand j'aurai ces deux colonnes j'aurai plus qu' afaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM First(monchamp) AS rub
    SELECT enreg
    FROM matable
    GROUP BY enreg
    PIVOT champ;
    pour avoir mes colonnes désirées.
    c est bien ca ?

  20. #20
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    rebonsoir !!
    pensez vous que je fais fausse route ?
    est ce possible de jouer sur un critère champ vide dans access et plus particulièrement avec du sql ?
    merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2010] Controle sur fichier txt avant importation
    Par texas2607 dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/07/2012, 21h03
  2. [XL-2007] Retraiter un fichier txt en creant une macro
    Par JDW78 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/12/2010, 18h31
  3. Réponses: 1
    Dernier message: 26/03/2009, 16h56
  4. Ecrire dans un fichier txt sans espace avant la 1ère valeur
    Par fatma hamdi dans le forum Fortran
    Réponses: 4
    Dernier message: 17/04/2008, 13h46
  5. [MySQL] Quel format de fichier est le plus simple à importer vers MySQL ?
    Par xenos dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/08/2007, 23h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo