Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment "ripper" les données d'une base de données en ligne sous excel vers un tableau word?

15 réponses
Avatar
chalo
Bonjour =E0 tous, je suis confront=E9 au probl=E8me suivant:j'ai sous word
des tableaux dont je souhaite transf=E9rer les donn=E9es vers excel d'une
part, et d'autre paret je voudrais pouvoir remplir une base de donn=E9es
sous excel (l=E0 =E7a va sous liste en formulaire ou avec un userform ) et
transf=E9rer ( c'est l=E0 que je perds pied....) les donn=E9es obtenues sous=

word dans ces tableaux d'autre part.
Les tableau du document word une fois copier-coller sous excel se
pr=E9sente comme ceci
http://www.cijoint.fr/cjlink.php?file=3Dcj200802/cij2316455295505.xls.

Merci par avance =E0 tous.

Chalo

10 réponses

1 2
Avatar
francois.forcet
Salut à toi

Copier vers word n'est jamais trés facile car pour atteindre le bon
emplacement un repère est necessaire car contrairement à excel où l'on
s'appuie sur l'adresse des cellules Word n'est pas étudié pour cette
gymnastique
Toute fois c'est toujours possible mais un modèle du document Word
dans lequel tu souhaites rapporter les précieuses informations me
serait utile pour t'apporter une solution

Peux tu sur :

http://www.cijoint.fr/index.php

m'en fournir un et me dire où se situes tes données dans ton document
Excel ainsique précisément l'endroit où tu souhaites les mettre dans
ce document

Dans l'attente de te lire (trés certainement demain)
Avatar
chalo
On 25 fév, 18:03, wrote:
Salut à toi

Copier vers word n'est jamais trés facile car pour atteindre le bon
emplacement un repère est necessaire car contrairement à excel où l' on
s'appuie sur l'adresse des cellules Word n'est pas étudié pour cette
gymnastique
Toute fois c'est toujours possible mais un modèle du document Word
dans lequel tu souhaites rapporter les précieuses informations me
serait utile pour t'apporter une solution

Peux tu sur :

http://www.cijoint.fr/index.php

m'en fournir un et me dire où se situes tes données dans ton document
Excel  ainsique précisément l'endroit où tu souhaites les mettre d ans
ce document

Dans l'attente de te lire (trés certainement demain)


Merci de t'intéresser à mon problème, voici à quoi ressemble mon
document
http://www.cijoint.fr/cjlink.php?file=cj200802/cij10340277965646.doc.

La problématique est double faire que la saisie se fasse sous
excel(afin de controler par formulaire les incohérences, par exemple
date du retour antérieure à la date de l'aller sur un trajet) et
transposer le resultat sous forme de tableaux word d'une part
et d'autre part exploiter les tableaux du document word une fois celui
ci créé et pour ce faire basculer facilement les données du tableau
dans un classeur excel qui fasse office de base de données laquelle
puisse à son tour alimenter un TCD par exemple de manière à pouvoir
appliquer rapidement des stats par divers critères.

La chose à savoir:les collaborateurs envoie par mail en pièce jointe
le doc word, c'est cette pièce jointe que j'ai besoin de traiter sous
excel;l'idéal serait donc aussi de proposer une saisie par formulaire
aux collaborateurs avant leur envoi de manière à limiter le risque
d'étourderies (d'ailleurs aussi peut être possible directement sous
word par macro et système de champ bloqués mais là je poserais ma
question sous le forum word et je pense que c'est plus facile à
programmer sous excel).

Je suis tout à fait preneur d'une solution excel d'un bout à l'autre
de la chaine ie qu'on m'envoie un fichier excel en pièce jointe
reprenant à peu près la présentation du document word.

Ce que je ne vois pas c'est la méthode à appliquer par programme pour
relever une donnée particulière d'un tableau word et l'exporter dans
un classeur excel.

Merci par avance.
Chalo

Avatar
francois.forcet
Salut Chalo

Excuses moi de te faire attendre
Je ne peux me pencher sur ton dossier qu'entre 2 réunions
Aprés analyse compte tenu de l'ampleur de tes tableaux et de la
multiplicité des données éventuelles à manipuler je pense que la
meilleur des solutions est de ramener l'intégralité dans une feuille
Excel

Tu pourras ainsi à partir d'Excel actualiser les valeurs les récupérer
pour tes TCD etc...
puis une fois prêt ramener l'ensemble dans le document Word en
remplacement

Supposant l'onglet de travail "Feuil1"
Pour celà 2 codes :

Code d'importation :
'On nettoie la feuille Excel
Sheets("Feuil1").Cells.Clear
Dim oWdApp As Object
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
Set WordDoc = oWdApp.Documents.Open("C:CheminDocument Word.doc")
'On positionne le curseur sur le début du tableau
oWdApp.Selection.Find.ClearFormatting
With oWdApp.Selection.Find
.Text = "V O Y A G E"
End With
oWdApp.Selection.Find.Execute
'On sélectionne tous les tableaux et on les copie
oWdApp.Selection.SelectCurrentIndent
oWdApp.Selection.Copy
End With
'On recopie les tableaux dans Excel
Workbooks("Classeur excel.xls").Activate
Sheets("Feuil1").Activate
Range("A1").Activate
ActiveSheet.Paste
'On ferme le document et l'application Word
WordDoc.Close
oWdApp.Quit

A actualiser :

C:CheminDocument Word.doc" qui est l'adresse et le nom de ton
fichier Word
On peut mettre à la place une boîte de dialogue pour le sélectionner
si il y en a plusieurs
A toi de voir

"Classeur excel.xls" qui est le nom de ton classeur Excel dans lequel
tu rapportes les données Word


Code d'exportation :
Sheets("Feuil1").Activate
'On sélectionne les Tableaux et on les copies
Range("A1", "P" & Range("A1").SpecialCells(xlLastCell).Row).Copy
Dim oWdApp As Object
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
Set WordDoc = oWdApp.Documents.Open("C:CheminDocument Word.doc")
'On positionne le curseur sur le début du tableau en place
oWdApp.Selection.Find.ClearFormatting
With oWdApp.Selection.Find
.Text = "V O Y A G E"
End With
oWdApp.Selection.Find.Execute
'On sélectionne tous les tableaux et on recopies les nouveaux par
dessus
oWdApp.Selection.SelectCurrentIndent
oWdApp.Selection.PasteExcelTable False, False, False
End With
'On ferme le document en le sauvegardant et l'application Word
WordDoc.Close SaveChanges:=wdPromptToSaveChanges
oWdApp.Quit

Sur ce lien un exemple que tu peux tester aprés avoir actualiser dans
les 2 codes :

"C:CheminDocument Word.doc"


http://www.cijoint.fr/cjlink.php?file=cj200802/cij1275971355641.xls.

Fais des essais et dis moi !!!!!
Avatar
francois.forcet
On 26 fév, 16:58, wrote:
Salut Chalo

Excuses moi de te faire attendre
Je ne peux me pencher sur ton dossier qu'entre 2 réunions
Aprés analyse compte tenu de l'ampleur de tes tableaux et de la
multiplicité des données éventuelles à manipuler je pense que la
meilleur des solutions est de ramener l'intégralité dans une feuille
Excel

Tu pourras ainsi à partir d'Excel actualiser les valeurs les récupér er
pour tes TCD etc...
puis une fois prêt ramener l'ensemble dans le document Word en
remplacement

Supposant l'onglet de travail "Feuil1"
Pour celà 2 codes :

Code d'importation :
'On nettoie la feuille Excel
Sheets("Feuil1").Cells.Clear
Dim oWdApp As Object
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
Set WordDoc = oWdApp.Documents.Open("C:CheminDocument Word.doc")
'On positionne le curseur sur le début du tableau
oWdApp.Selection.Find.ClearFormatting
 With oWdApp.Selection.Find
        .Text = "V O Y A G E"
 End With
 oWdApp.Selection.Find.Execute
'On sélectionne tous les tableaux et on les copie
    oWdApp.Selection.SelectCurrentIndent
    oWdApp.Selection.Copy
End With
'On recopie les tableaux dans Excel
Workbooks("Classeur excel.xls").Activate
Sheets("Feuil1").Activate
Range("A1").Activate
ActiveSheet.Paste
'On ferme le document et l'application Word
WordDoc.Close
oWdApp.Quit

A actualiser :

C:CheminDocument Word.doc" qui est l'adresse et le nom de ton
fichier Word
On peut mettre à la place une boîte de dialogue pour le sélectionner
si il y en a plusieurs
A toi de voir

"Classeur excel.xls" qui est le nom de ton classeur Excel dans lequel
tu rapportes les données Word

Code d'exportation :
Sheets("Feuil1").Activate
'On sélectionne les Tableaux et on les copies
Range("A1", "P" & Range("A1").SpecialCells(xlLastCell).Row).Copy
Dim oWdApp As Object
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
Set WordDoc = oWdApp.Documents.Open("C:CheminDocument Word.doc")
'On positionne le curseur sur le début du tableau en place
oWdApp.Selection.Find.ClearFormatting
 With oWdApp.Selection.Find
        .Text = "V O Y A G E"
 End With
 oWdApp.Selection.Find.Execute
'On sélectionne tous les tableaux  et on recopies les nouveaux par
dessus
    oWdApp.Selection.SelectCurrentIndent
    oWdApp.Selection.PasteExcelTable False, False, False
End With
'On ferme le document en le sauvegardant et l'application Word
WordDoc.Close SaveChanges:=wdPromptToSaveChanges
oWdApp.Quit

Sur ce lien un exemple que tu peux tester aprés avoir actualiser dans
les 2 codes :

"C:CheminDocument Word.doc"

http://www.cijoint.fr/cjlink.php?file=cj200802/cij1275971355641.xls.

Fais des essais et dis moi !!!!!


Rebonjours Chalo

Une précision d'importance :

Il faut cocher la référence Microsoft Word Object Library (Outils/
Références)

Avatar
chalo
On 27 fév, 08:12, wrote:
On 26 fév, 16:58, wrote:





Salut Chalo

Excuses moi de te faire attendre
Je ne peux me pencher sur ton dossier qu'entre 2 réunions
Aprés analyse compte tenu de l'ampleur de tes tableaux et de la
multiplicité des données éventuelles à manipuler je pense que la
meilleur des solutions est de ramener l'intégralité dans une feuille
Excel

Tu pourras ainsi à partir d'Excel actualiser les valeurs les récup érer
pour tes TCD etc...
puis une fois prêt ramener l'ensemble dans le document Word en
remplacement

Supposant l'onglet de travail "Feuil1"
Pour celà 2 codes :

Code d'importation :
'On nettoie la feuille Excel
Sheets("Feuil1").Cells.Clear
Dim oWdApp As Object
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
Set WordDoc = oWdApp.Documents.Open("C:CheminDocument Word.doc")
'On positionne le curseur sur le début du tableau
oWdApp.Selection.Find.ClearFormatting
 With oWdApp.Selection.Find
        .Text = "V O Y A G E"
 End With
 oWdApp.Selection.Find.Execute
'On sélectionne tous les tableaux et on les copie
    oWdApp.Selection.SelectCurrentIndent
    oWdApp.Selection.Copy
End With
'On recopie les tableaux dans Excel
Workbooks("Classeur excel.xls").Activate
Sheets("Feuil1").Activate
Range("A1").Activate
ActiveSheet.Paste
'On ferme le document et l'application Word
WordDoc.Close
oWdApp.Quit

A actualiser :

C:CheminDocument Word.doc" qui est l'adresse et le nom de ton
fichier Word
On peut mettre à la place une boîte de dialogue pour le sélectionn er
si il y en a plusieurs
A toi de voir

"Classeur excel.xls" qui est le nom de ton classeur Excel dans lequel
tu rapportes les données Word

Code d'exportation :
Sheets("Feuil1").Activate
'On sélectionne les Tableaux et on les copies
Range("A1", "P" & Range("A1").SpecialCells(xlLastCell).Row).Copy
Dim oWdApp As Object
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
Set WordDoc = oWdApp.Documents.Open("C:CheminDocument Word.doc")
'On positionne le curseur sur le début du tableau en place
oWdApp.Selection.Find.ClearFormatting
 With oWdApp.Selection.Find
        .Text = "V O Y A G E"
 End With
 oWdApp.Selection.Find.Execute
'On sélectionne tous les tableaux  et on recopies les nouveaux par
dessus
    oWdApp.Selection.SelectCurrentIndent
    oWdApp.Selection.PasteExcelTable False, False, False
End With
'On ferme le document en le sauvegardant et l'application Word
WordDoc.Close SaveChanges:=wdPromptToSaveChanges
oWdApp.Quit

Sur ce lien un exemple que tu peux tester aprés avoir actualiser dans
les 2 codes :

"C:CheminDocument Word.doc"

http://www.cijoint.fr/cjlink.php?file=cj200802/cij1275971355641.xls.

Fais des essais et dis moi !!!!!


Rebonjours Chalo

Une précision d'importance :

Il faut cocher la référence Microsoft Word Object Library (Outils/
Références)- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bonjour et un grand merci pour ta réponse

Pour le moment je teste le code d'importation du tableau word:
après avoir coché en référence Microsoft Word Object Library dans m on
éditeur de code VBA,
et changer le chemin du fichier word et le nom du classeur excel,
la macro ouvre bien le bon document word MAIS,
s'affiche alors une boite de dialogue qui m'indique:"l'indice
n'apparteint pas à la sélection".Et puis cela s'arrête et rien n'est
copié dans excel...
Par ailleurs je remarque que le document word n'est pas sélectionné
depuis le départ, je manque les infos pour l'imputation nom client en
particulier etc....(je voudrais que la sélection commence à "nom du
client") et pour ça j'imagine que je dois changer le "Selection.Find"?
En tous cas un grand merci car je m'approche grandement de mon
objectif avec ce code.
Il faudrait juste que le copier coller marche et je ne sais pas où ça
rate pour l'instant.
Je me penche sur l'exportation maintenant....
Chalo


Avatar
chalo
On 26 fév, 16:58, wrote:
Salut Chalo

Excuses moi de te faire attendre
Je ne peux me pencher sur ton dossier qu'entre 2 réunions
Aprés analyse compte tenu de l'ampleur de tes tableaux et de la
multiplicité des données éventuelles à manipuler je pense que la
meilleur des solutions est de ramener l'intégralité dans une feuille
Excel

Tu pourras ainsi à partir d'Excel actualiser les valeurs les récupér er
pour tes TCD etc...
puis une fois prêt ramener l'ensemble dans le document Word en
remplacement

Supposant l'onglet de travail "Feuil1"
Pour celà 2 codes :

Code d'importation :
'On nettoie la feuille Excel
Sheets("Feuil1").Cells.Clear
Dim oWdApp As Object
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
Set WordDoc = oWdApp.Documents.Open("C:CheminDocument Word.doc")
'On positionne le curseur sur le début du tableau
oWdApp.Selection.Find.ClearFormatting
 With oWdApp.Selection.Find
        .Text = "V O Y A G E"
 End With
 oWdApp.Selection.Find.Execute
'On sélectionne tous les tableaux et on les copie
    oWdApp.Selection.SelectCurrentIndent
    oWdApp.Selection.Copy
End With
'On recopie les tableaux dans Excel
Workbooks("Classeur excel.xls").Activate
Sheets("Feuil1").Activate
Range("A1").Activate
ActiveSheet.Paste
'On ferme le document et l'application Word
WordDoc.Close
oWdApp.Quit

A actualiser :

C:CheminDocument Word.doc" qui est l'adresse et le nom de ton
fichier Word
On peut mettre à la place une boîte de dialogue pour le sélectionner
si il y en a plusieurs
A toi de voir

"Classeur excel.xls" qui est le nom de ton classeur Excel dans lequel
tu rapportes les données Word

Code d'exportation :
Sheets("Feuil1").Activate
'On sélectionne les Tableaux et on les copies
Range("A1", "P" & Range("A1").SpecialCells(xlLastCell).Row).Copy
Dim oWdApp As Object
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document Word
Set WordDoc = oWdApp.Documents.Open("C:CheminDocument Word.doc")
'On positionne le curseur sur le début du tableau en place
oWdApp.Selection.Find.ClearFormatting
 With oWdApp.Selection.Find
        .Text = "V O Y A G E"
 End With
 oWdApp.Selection.Find.Execute
'On sélectionne tous les tableaux  et on recopies les nouveaux par
dessus
    oWdApp.Selection.SelectCurrentIndent
    oWdApp.Selection.PasteExcelTable False, False, False
End With
'On ferme le document en le sauvegardant et l'application Word
WordDoc.Close SaveChanges:=wdPromptToSaveChanges
oWdApp.Quit

Sur ce lien un exemple que tu peux tester aprés avoir actualiser dans
les 2 codes :

"C:CheminDocument Word.doc"

http://www.cijoint.fr/cjlink.php?file=cj200802/cij1275971355641.xls.

Fais des essais et dis moi !!!!!


je viens de tester l'exportation depuis excel vers word, cela marche
au poil c'est vraiment bluffant!Encore un grand merci!
Chalo

Avatar
francois.forcet
Salut Chalo

Peux tu m'indiquer sur quelle ligne s'arrète le code (faire Débugage
pour la déterminer)

Si tu as le message ":"l'indice n'apparteint pas à la sélection" c'est
que la ligne concerné fait référence à un paramètre qui n'existe p as
(Le nom d'un classeur, d'un onglet, d'un document etc...)

Merci de me communiquer cette ligne afin que je puisse t'orienter
Avatar
chalo
On 27 fév, 10:56, wrote:
Salut Chalo

Peux tu m'indiquer sur quelle ligne s'arrète le code (faire Débugage
pour la déterminer)

Si tu as le message ":"l'indice n'apparteint pas à la sélection" c'est
que la ligne concerné fait référence à un paramètre qui n'existe pas
(Le nom d'un classeur, d'un onglet, d'un document etc...)

Merci de me communiquer cette ligne afin que je puisse t'orienter


Et bien ça a l'air de s'arrêter ici :
Workbooks("Classeur1.xls").Activate
Cela voudrait dire qu'il faudrait pque je précisse le chemin où se
trouve le classeur excel?

Avatar
francois.forcet
Rebonjours Chalo

La ligne :

Workbooks("Classeur1.xls").Activate

demande d'activer le classeur Excel nommé Classeur1.xls

C'est dans ce classeur que je comptais recopier les données Word
C'est dans celui-là que j'ai inclu la macro
Comme cette macro est entrain de s'éxécuter ce classeur est
obligatoirement ouvert donc la ligne ne dois pas buger

Je suppose que la macro d'importation est dans un fichier Excel qui ne
porte pas ce nom
d'ou le plantage à cette ligne

3 solutions :

Soit tu actualises cette ligne en remplaçant "Classeur1.xls" par le
nom du classeur qui porte la macro
Les données Word seront rapportées dans la feuille active de celui-ci
Si tu souhaites spécifié l'onglet de réception des données tu peux
rajouter cette ligne en suivant :

Workbooks("Nom du classeur.xls").Activate
Sheets("Nom de l'onglet").Activate

Soit tu actualises cette ligne en remplaçant "Classeur1.xls" par le
nom du classeur qui doit recevoir les données
Mais attention ce classeur doit être ouvert

Soit tu ouvres un nouveau classeur dans lequel on rapportera les
données en remplaçant la ligne par :

Workbooks.Add

A toi de me dire ce que tu souhaites
Avatar
chalo
On 27 fév, 13:14, wrote:
Rebonjours Chalo

La ligne :

Workbooks("Classeur1.xls").Activate

demande d'activer le classeur Excel nommé Classeur1.xls

C'est dans ce classeur que je comptais recopier les données Word
C'est dans celui-là que j'ai inclu la macro
Comme cette macro est entrain de s'éxécuter ce classeur est
obligatoirement ouvert donc la ligne ne dois pas buger


et pourtant c'est bien ce qui se passe à moins qu'excel nommant un
nouveau classeur par défaut classeur1 dans mon système, il y ait
plusieurs classeur1 qui se baladent......En fait la macro ouvre bien
word mais ensuite elle semble peiner à revenir su excel avec un
classeur activé....




Je suppose que la macro d'importation est dans un fichier Excel qui ne
porte pas ce nom
d'ou le plantage à cette ligne

3 solutions :

Soit tu actualises cette ligne en remplaçant "Classeur1.xls" par le
nom du classeur qui porte la macro
Les données Word seront rapportées dans la feuille active de celui-ci
Si tu souhaites spécifié l'onglet de réception des données tu peux
rajouter cette ligne en suivant :

Workbooks("Nom du classeur.xls").Activate
Sheets("Nom de l'onglet").Activate

Soit tu actualises cette ligne en remplaçant "Classeur1.xls" par le
nom du classeur qui doit recevoir les données
Mais attention ce classeur doit être ouvert


Cette solution là est la seule que j'arrive à faire fonctionner et
c'est déjà pas mal!


Soit tu ouvres un nouveau classeur dans lequel on rapportera les
données en remplaçant la ligne par :

Workbooks.Add

A toi de me dire ce que tu souhaites


1 2