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

VBA Word Discussion :

Variables et Selection


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Variables et Selection
    Bonjour
    N'ayant pas eu de réponse à une précédente demande d'aide, je me permets de reposer ma question sous une autre forme :


    Dans un fichier texte, comment récupérer le premier caractère d'un paragraphe et le mettre dans une variable. Le but est de pouvoir ensuite traiter ce paragraphe : si ma variable = "A" faire ceci, si ma variable = "C" faire cela , etc ...

    Merci de votre aide

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub chercherTrouvé()
    For Each Para In ActiveDocument.Paragraphs
          If Left(Para.Range.Text, 1) = "C" Then
               Para.Range.Select
               MsgBox "Trouvé !"
          End If
    Next
    End Sub
    Mais si tu ne nous dis pas ce que tu fais une fois trouvé, on sera coincé ici
    A+

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    A la place d'un If, je ferais un select case.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Très juste... Heu... Oli !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Variables et selection
    Excusez moi de ne pas avoir répondu plus tôt pour cause d'absence.

    Le problème est le suivant : j'ai habituellement un fichier texte de 120 000 lignes qui se présente ainsi :
    A130789274559523243_1169079935035700011001 0114071969131012007310120070000000000000000000002900000017400000000000000000000000000000000
    C130789274_169079935035700007000031012007AMI 01000100010000290000029006000001740000290000000
    A130789274559661316_1178081320400000011001 0115081978111012007110120070000000000000000000020250000121500000000000000000000000000000000
    C130789274_178081320400000007000011012007B 01000500010000027000013506000000810000135000000

    J'ai mis un souligné à la place de l'espace.
    Si la ligne commence par A, je veux sélectionner les caractères 11 à 19 et les coller à la même place dans la ligne C. Le reste des lignes ne change pas.
    Avant traitement :
    A130789274559523243_
    C130789274_
    et après traitement :
    A130789274559523243_
    C130789274559523243_

    Merci de votre aide.

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    C'est pas un collage, mais une insertion.

    Es-tu certain que word est le programme idéal ?
    120 000 lignes, ça te fais un fichiers de quelle taille ?

    Sérieusement, as tu pensé que d'autres soft sont mieux équipé pour ce genre de traitement.
    Je pense à Access qui est une logiciel fait pour gérer des données.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Variables et selection
    Oui ça me fait des fichiers énormes (actuellement 15833 ko)qui sont crachés par un logiciel administratif qui ne me donne pas le choix sur le type de sorties.
    Actuellement, je récupère le fichier texte de sortie, et je le bidouilleavec word pour insérer des espaces.Ensuite je le coupe en fichiers plus petits avec un outil appelé yoyo cut..
    J'importe chaque fichier dans excel en trois colonnes. En faisant atteindre les cellules vides puis copier la ligne du dessus si la cellule est vide, j'arrive à insérer ma séquence de texte au bon endroit.
    J'exporte en CSV.
    Pour terminer, avec Word, je supprime les ; de chaque fichier et je recolle tous mes fichiers en un seul fichier texte.
    Je peux alors importer ce fichier dans une base access.

    C'est assez fastidieux, d'autant que mon fichier d'origine se rallonge chaque semaine.
    C'est pourquoi j'avais pensé à une macro dans Word. Je ne suis pas fermé à une autre solution si il y a.

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si c'est pour finir dans Access, ne passe pas par Word, fait tes traitement en Access directement.
    120000 lignes à chaque sortie, tu fais quoi avec autant de lignes ?
    J'espère que ta sortie n'est pas quotidienne.

    Pose ta question sur le forum Access !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Variables et selection
    Je n'ai pas de difficulté (du moins je ne crois pas) pour importer un fichier texte dans Access.
    Mon problème c'est que j'ai besoin de traiter les lignes "C" et que le seul moyen de relier les différentes lignes "C" est la séquence que je veux extraire des lignes "A".
    En gros, la ligne "A" me donne la reference d'une facture et chaque ligne "C" traite un détail de cette facture.

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Tu fais le traitement en DAO avec des recordset et tu va gagner en vitesse et éviter ces manipulations.

    Avec le DAO, tu vas parcourir le enregistrement, et pour chaque enregistrement A...... tu vas avoir une variable que tu va pouvoir insérer dans les enregistrements C....... jusqu'au prochain A
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Variables et Selection
    C'est une piste dont je ne soupçonnais même pas l'existence. Je vais commencer à étudier la question.
    En tous cas, merci pour tout.

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si tu veux un endroit où prendre des information sur le DAO, Tofalu a fait un tuto qui vaut le détour.

    http://warin.developpez.com

    Je te le conseille.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Variables et Selection
    Bonsoir
    Après divers essais et erreurs, j'ai réussi à écrire une macro qui marche . Je ne sais pas si elle est très bien construite mais elle me dépanne.

    Si cela peut intéresser quelqu'un, la voici :

    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
    Sub Analyse_v2()
    '  Macro enregistrée le 09/06/07 par Arctos
     Dim i As Integer, j As Integer
     'i est le nombre de paragraphes du texte
    i = ActiveDocument.Paragraphs.Count
    MsgBox (i) & " paragraphes à traiter"
    'On se place en début de document
        Selection.HomeKey Unit:=wdStory
    Dim plage As Range
    Dim mtype As String
    'debut de la boucle qui va traiter chaque paragraphe
    j = 1
    While j < ActiveDocument.Paragraphs.Count
    'Récupération du 1er caractère pour analyse
    Set plage = ActiveDocument.Paragraphs(j).Range
    mtype = Left(plage, 1)
    'Analyse
    If mtype = "A" Then
    'Si "A" on copie un morceau et on va en début du paragraphe suivant
    Selection.MoveLeft Unit:=wdSentence
        Selection.MoveRight Unit:=wdCharacter, Count:=10
        Selection.MoveRight Unit:=wdCharacter, Count:=10, Extend:=wdExtend
        Selection.Copy
    Selection.MoveRight Unit:=wdSentence
    Selection.MoveRight Unit:=wdCharacter
    Else
    'Sinon on avance, on colle et on va au debut du paragrahpe suivant
        Selection.MoveRight Unit:=wdCharacter, Count:=10
      Selection.MoveRight Unit:=wdCharacter, Count:=7, Extend:=wdExtend
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.Paste
        Selection.MoveRight Unit:=wdSentence
    Selection.MoveRight Unit:=wdCharacter
    End If
    'on incremente j et on recommence
    j = j + 1
        Wend
        'Message de fin
        MsgBox "Terminé"
    End Sub
    Cordialement,

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    En regardant d'un peu plus près,
    Il n'est pas utile de faire cette transformation, il y a des séquences identiques dans chaque ligne.

    Avec une simple requête, on peut faire ce que l'on veut.

    Merci pour la Macro.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Variables et Selection
    Je n'ai pas trouvé. Si tu me montres je suis preneur.

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Cette séquence

    1169079935035700011001 0114071969131012007 de la première ligne, on la retrouve aussi dans la ligne commençant par C qui suit, mais plus dans la suivante.

    Je pense qu'elle date du 31/01/2007

    Pour extraire ces séquences, on peut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Left()
    Mid()
    Right()
    En connaissant le but, ce serait plus simple.

    Les lignes A et C n'ont pas la même longueur alors que toutes les A sont de même longueur, ainsi que toutes les C.

    Pour info, combien de temps tourne ta macro sur 120000 lignes ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Select et variables de selection (where) ou non
    Par dehorter olivier dans le forum SQL
    Réponses: 5
    Dernier message: 30/09/2007, 12h13
  2. [MySQL] Récupération variable avec <select>
    Par ritepac dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 10/08/2007, 13h43
  3. [Conception] procédure stockée, variable, et select multi base
    Par overider dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/03/2007, 13h02
  4. Réponses: 4
    Dernier message: 30/05/2006, 17h21
  5. nombre variable de select
    Par gilles74 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/05/2006, 16h05

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