Selectionner plusieurs fois même info word pour copier ds excel

Résolu/Fermé
lau-vaya Messages postés 2 Date d'inscription mardi 2 mai 2017 Statut Membre Dernière intervention 3 mai 2017 - Modifié le 3 mai 2017 à 12:51
lau-vaya Messages postés 2 Date d'inscription mardi 2 mai 2017 Statut Membre Dernière intervention 3 mai 2017 - 3 mai 2017 à 17:02
Bonjour,

Je dispose actuellement d'un fichier word contenant des informations avec la forme suivante:

" Nom: A1
Superficie: B1
Description: C1

Nom: A2
Superficie: B2
Description: C2

(...) "

En gros, chaque triplet "Nom, Superficie, Description" correspond à un objet.
J'aimerais passer ces informations sur excel avec la forme suivante:

Première ligne: Nom / Superficie / Description (une colone par item)
Deuxième ligne: A1 / B1 / C1
Troisième ligne: A2 / B2 / C2
(...)

Je suis en train de coder une macro depuis excel pour faire ça. Ma question est la suivante: Je suis pour le moment capable de trouver la première occurence de "Nom:" et donc de sélectionner et copier A1 dans excel, mais je cherche à trouver tous les "Noms:" afin de pouvoir copier A1 puis A2 puis A3... Je cherche donc une commande qui me permettrait de trouver le "Nom:" suivant et pas de revenir au début.

Pour le moment mon code est:

    For i = 1 To (mon nombre d'objets)
WApp.Selection.HomeKey unit:=6
WApp.Selection.Find.ClearFormatting
WApp.Selection.Find.Execute "Nom:"
WApp.Selection.MoveRight unit:=3, Count:=2, Extend:=2
Set WSel = WApp.Selection
ws.Cells(i, 1) = Split(WSel, ":")(1)
Next


Si quelqu'un sait comment mettre en forme la commande qui me manque ce serait génial. (quelque chose du type "Forward"?)

Merci beaucoup !
Laurène
A voir également:

1 réponse

lau-vaya Messages postés 2 Date d'inscription mardi 2 mai 2017 Statut Membre Dernière intervention 3 mai 2017
3 mai 2017 à 17:02
Bonjour, j'ai trouvé ma solution. Pour ceux que ça intéresse je mets mon code plus loin. L'astuce que j'utilise est qu'une fois que jai trouvé le 1er "Nom:" je le modifie et je recommence à chercher un "Nom", je trouve donc le 2e et ainsi de suite.

Sub import_word()

' -- Déclaration des variables
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 i As Integer
Dim Text As String
Dim nbipa As Integer
Dim country As String

' -- Initialisation des variables
Set wb = ThisWorkbook 'on travaille sur ce fichier excel
Set ws = wb.Sheets(1) 'on sauvegarde dans la 1re feuille
sChemin = ThisWorkbook.Path & "\" 'si les fichiers Word se trouvent dans le même répertoire que le fichier Excel

sNomFichier = "algeria.doc"
nbipa = 20 'nombre dIPA dans le pays, attention a avoir le nombre exact sinon rajout de lignes
country = "Algeria"

Set WApp = CreateObject("Word.Application")
WApp.Visible = True 'ne pas afficher Word pendant l'exécution

i = 1 '1re ligne où on va écrire les données dans le fichier Excel

Application.ScreenUpdating = False

Set WDoc = WApp.Documents.Open(sChemin & sNomFichier) 'ouvre le document Word

' SITE NAME (International name)
WApp.Selection.HomeKey unit:=6
For i = 1 To nbipa
WApp.Selection.Find.ClearFormatting
WApp.Selection.Find.Execute "SITE NAME (International name):" 'On trouve le texte "SITE NAME (International name):"
WApp.Selection.MoveRight unit:=3, Count:=2, Extend:=2 'On se déplace de 3 mots
Set WSel = WApp.Selection 'sélection du texte trouvé
ws.Cells(i + 1, 1) = Split(WSel, ":")(1)
WApp.Selection.Find.Execute Replace:=wdReplaceOne
With WApp.Selection.Find
.Text = "SITE NAME (International name):"
.Replacement.Text = "SITE NAME (International name) DONE :"
End With
WDoc.Save
Next

Application.ScreenUpdating = True
WApp.Quit

End Sub


Vous pouvez clôre mon post (je ne trouve pas comment faire) ^^
Merci!
0