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 :

Extraire une ligne précise dans une page Word


Sujet :

VBA Word

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 164
    Points : 88
    Points
    88
    Par défaut Extraire une ligne précise dans une page Word
    Bonjour,

    J'ai un fichier Word, dans la première page j'ai 2 premières lignes :

    Dossier d’Architecture Technique S1F3
    CORPORALEX


    Ce que je veux c'est de repérer et de me positionner sur la phrase de la 1ère ligne qui est "Dossier d’Architecture Technique S1F0 " pour ensuite extraire la 2ème ligne vers une cellule Excel

    Ps : je veux passer par cette méthode car cette 2éme phrase change d'un fichier Word à un autre

    Voila ma macro je sais pas comment faire l'extraction car à l’exécution il n'y a pas d'erreur mais elle me renvoie aucun résultat sur ma cellule Excel

    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
    Sub Importation_Donnees_Word()
    
        Dim wb As Workbook          'classeur Excel dans lequel on importe les données
        Dim ws As Worksheet         'onglet Excel dans lequel on importe les données
        Dim sChemin As String       'répertoire contenant les fichiers Word
        Dim sNomFichier As String   'nom du fichier Word
        Dim WApp As Object, WDoc As Object, WSel As Object
        Dim WTable As Word.Table
        'Dim rng As Range
        Dim rng As Word.Range
    
        Set wb = ThisWorkbook
        Set ws = wb.Sheets(1) 
    'Pour créer un objet Word
        Set WApp = CreateObject("Word.Application")
        WApp.Visible = True
        Application.ScreenUpdating = Fals
    
    
    ' ****  Extraction de la 2eme lignes  *******
     Set rng = WDoc.Range
    'Set rng = ActiveDocument.Range                         'Plage de recherche
       Do
          With rng.Find
             .ClearFormatting
             .Text = "Dossier d’Architecture Technique"                   ' Texte à rechercher (se trouvant avant la table)
             .Execute
          End With
          If rng.Find.Found Then
             rng.Select
             rng.MoveStart Unit:=wdLine
             rng.Goto What:=wdGoToLine, Which:=wdGoToNext, Count:=1
    'Extraction vers la premiere cellule Excel 
    ws.Cells(i, 2) = ????
    
    End Sub

    Mercii

  2. #2
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut jérémyp8,

    J'ai un fichier Word, dans la première page j'ai 2 premières lignes :

    Dossier d’Architecture Technique S1F3
    CORPORALEX


    Ce que je veux c'est de repérer et de me positionner sur la phrase de la 1ère ligne qui est "Dossier d’Architecture Technique S1F0 " pour ensuite extraire la 2ème ligne vers une cellule Excel

    Ps : je veux passer par cette méthode car cette 2éme phrase change d'un fichier Word à un autre

    Voila ma macro je sais pas comment faire l'extraction car à l’exécution il n'y a pas d'erreur mais elle me renvoie aucun résultat sur ma cellule Excel

    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
    Sub Importation_Donnees_Word()
    
        Dim wb As Workbook          'classeur Excel dans lequel on importe les données
        Dim ws As Worksheet         'onglet Excel dans lequel on importe les données
        Dim sChemin As String       'répertoire contenant les fichiers Word
        Dim sNomFichier As String   'nom du fichier Word
        Dim WApp As Object, WDoc As Object, WSel As Object
        Dim WTable As Word.Table
        'Dim rng As Range
        Dim rng As Word.Range
    
        Set wb = ThisWorkbook
        Set ws = wb.Sheets(1) 
    'Pour créer un objet Word
        Set WApp = CreateObject("Word.Application")
        WApp.Visible = True
        Application.ScreenUpdating = Fals
    
    
    ' ****  Extraction de la 2eme lignes  *******
     Set rng = WDoc.Range
    'Set rng = ActiveDocument.Range                         'Plage de recherche
       Do
          With rng.Find
             .ClearFormatting
             .Text = "Dossier d’Architecture Technique"                   ' Texte à rechercher (se trouvant avant la table)
             .Execute
          End With
          If rng.Find.Found Then
             rng.Select
             rng.MoveStart Unit:=wdLine
             rng.Goto What:=wdGoToLine, Which:=wdGoToNext, Count:=1
    'Extraction vers la premiere cellule Excel 
    ws.Cells(i, 2) = ????
    
    End Sub
    Mercii
    Attention, tu n'as pas de End If (celui de "If rng.Find.Found") ni de Loop until.
    Il faut d'abord que tu corriges ton code sur ces 2 points.
    @+

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 164
    Points : 88
    Points
    88
    Par défaut
    Bonjour Sepia,

    En effet y'a des choses qui manquent mais je voulais juste me concentrer sur le problème

    Voila la macro corrigée

    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 Importation_Donnees_Word()
     
        Dim wb As Workbook          'classeur Excel dans lequel on importe les données
        Dim ws As Worksheet         'onglet Excel dans lequel on importe les données
        Dim sChemin As String       'répertoire contenant les fichiers Word
        Dim sNomFichier As String   'nom du fichier Word
        Dim WApp As Object, WDoc As Object, WSel As Object
        Dim WTable As Word.Table
        'Dim rng As Range
        Dim rng As Word.Range
     
        Set wb = ThisWorkbook
        Set ws = wb.Sheets(1) 
    'Pour créer un objet Word
        Set WApp = CreateObject("Word.Application")
        WApp.Visible = True
        Application.ScreenUpdating = Fals
     
     
    ' ****  Extraction de la 2eme lignes  *******
     Set rng = WDoc.Range
    'Set rng = ActiveDocument.Range                         'Plage de recherche
       Do
          With rng.Find
             .ClearFormatting
             .Text = "Dossier d’Architecture Technique"                   ' Texte à rechercher (se trouvant avant la table)
             .Execute
          End With
          If rng.Find.Found Then
             rng.Select
             rng.MoveStart Unit:=wdLine
             rng.Goto What:=wdGoToLine, Which:=wdGoToNext, Count:=1
    'Extraction vers la premiere cellule Excel 
    ws.Cells(i, 2) = ????
     
     End If
     
       Loop Until Not rng.Find.Found
     
    End Sub
    Alors peux tu m aider pour extraire cette 2 éme Ligne ?

    Merciii

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 164
    Points : 88
    Points
    88
    Par défaut
    RE

    En modifiant un peu la macro j'arrive à repérer et à me positionner sur la ligne sur la phrase de la 1ère ligne qui est "Dossier d’Architecture Technique S1F0 " car en allant sur le fichier Word je trouve que le curseur (un truc genre un cadre bleu) sur la phrase
    Mais après j'ai un message d'erreur
    Propriété ou méthode non gérée par cet objet sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.MoveDown Unit:=wdLine, Count:=1
    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
     
    'Set Selection = WDoc.Range
              Set rng = WDoc.Range
    'Set Selection = ActiveDocument.Range             'Plage de recherche
     
       Do
    'With Selection.Find
          With rng.Find
             .ClearFormatting
             .Text = "Dossier d'Architecture Technique S1F3"                   ' Texte à rechercher (se trouvant avant la table)
             .Execute
          End With
    'If Selection.Find.Found Then
             If rng.Find.Found Then
     
    'Selection.Select
             rng.Select
     
    'rng.MoveDown Unit:=wdLine, Count:=1, Expand:=wdLine
            Selection.MoveDown Unit:=wdLine, Count:=1
     
             ws.Cells(i, 1) = Selection.Text
       End If
    Loop
    Merciii

  5. #5
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut jérémyp8,

    Ta ligne a une syntaxe correcte ==> je ne comprends pas le message "Propriété ou méthode non gérée par cet objet" (car il s'agit d'une erreur de syntaxe) et chez moi, ça marche.

    Pour mieux comprendre, peux-tu nous envoyer ton fichier, s'il ne contient pas d'éléments confidentiels ou illégaux ?

    @+

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 164
    Points : 88
    Points
    88
    Par défaut
    Bonjour Sepia,

    La méthode "Selection" existe pour Excel et Word. Ici ma macro est dans Excel mais je veux utiliser le "Selection" de Word, d'où l'erreur car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Selection.MoveDown n'est pas possible dans Excel.
    Il faut donc le spéficier dans le code. Si j'ai défini une variable pour l'application Word (exemple wdApp), alors je crois qu'en écrivant ceci, :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wdApp.Selection.MoveDown Unit:=wdLine, Count:=1
    ws.cells(i,1) = wdApp.Selection.Text

    J'ai pas testé mais je pense que ça va marcher car finalement j'ai opté pour une autre solution

    En effet j'ai remarqué que la 2éme phrase que je cherchais à extraire qui est juste après la phrase "Dossier d’Architecture Technique S1F0" se trouve aussi dans un tableau Word du même fichier donc j'ai procédé comme suit :
    J'ai repéré le titre tu tableau "FICHE SYNTHETIQUE"
    Puis la cellule contenant la phrase à extraire
    Enfin l'extraction vers Excel


    voila la Macro
    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
            Set rng = WDoc.Range
    'Set rng = ActiveDocument.Range                         'Plage de recherche
       'Do
          With rng.Find
             .ClearFormatting
             .Text = "FICHE SYNTHETIQUE"                   ' Texte à rechercher (se trouvant avant la table)
             .Execute
          End With
          If rng.Find.Found Then
             rng.Select
             rng.MoveStart Unit:=wdTable
             rng.Goto What:=wdGoToTable, Which:=wdGoToNext, Count:=1
     
    'Selectionne le tableau trouvé pour extraire les données
         Set WTable = rng.Tables(1)    'Selectionne le tableau trouvé
             sTexte = WTable.Cell(1, 2).Range.Text     'nom de l'application
             ws.Cells(i, 1) = Replace(sTexte, Chr(7), "")   'copie dans Excel, enlever le caractère bizarre à la fin
    Merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/03/2011, 20h38
  2. Modifier une ligne précise dans une richTextBox
    Par diabli73 dans le forum C#
    Réponses: 3
    Dernier message: 28/07/2009, 13h05
  3. Réponses: 0
    Dernier message: 07/06/2009, 12h31
  4. Lien de word à une ligne précise dans ma page htm
    Par Aldo831 dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 01/12/2008, 08h47
  5. Selectionner une ligne précise dans une combobox
    Par psykoleouf dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/05/2007, 13h04

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