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

Récupération de données Excel dans Word

6 réponses
Avatar
Herdet
Bonjour,
Les liaisons Word-Excel par la fonction LINK =E9tant tr=E8s=20
gourmandes en RAM pour la lecture de 300 valeurs Excel, je=20
m'oriente plut=F4t vers une solution VBA pour r=E9cup=E9rer ces=20
valeurs de cellules nomm=E9es d'Excel dans une feuille Word.

J'ai une bonne connaissance d'Excel et du VBA mais de=20
grosses lacunes de Word.

Avez-vous une proc=E9dure pour r=E9soudre ce probl=E8me ?

Merci de votre aide
Robert Dezan

6 réponses

Avatar
Geo
Bonjour Robert


Bonjour,
Les liaisons Word-Excel par la fonction LINK étant très
gourmandes en RAM pour la lecture de 300 valeurs Excel, je
m'oriente plutôt vers une solution VBA pour récupérer ces
valeurs de cellules nommées d'Excel dans une feuille Word.

J'ai une bonne connaissance d'Excel et du VBA mais de
grosses lacunes de Word.


Ca dépend si tu pilotes Word à partir d'Excel ou l'inverse.
Amha la grosse différence entre les deux c'est que dans Excel tu
traites le contenu de cellules, en Word c'est du texte.
D'accord, c'est évident, mais ça va mieux en le disant, d'autant plus
que Word travaille surtout à partir du point d'insertion (curseur si
on préfère) et non par référence de lignes et de colonnes.
En Word il faut donc déplacer le point d'insertion comme on le fait au
clavier, pour pouvoir faire quelque chose et surtout pas référencer
une ligne par sa position.
En Word on manipule bien les lettres, les mots, les paragraphes, les
dessins, les tableaux; nettement moins bien les lignes et les pages.
Pour ajouter du texte la commande la plus usuelle est
Selection.InsertAfter.
Il y a la technique des signets qui s'apparente un peu aux plages
nommées d'Excel.
Les tableaux ressemblent aussi (en vba) à une plage de cellules Excel.

ceci te donnera peut-être un point de départ, sinon reviens-nous.

--

A+

Avatar
Anacoluthe
Bonjour !

'Herdet' nous a écrit ...
Les liaisons Word-Excel par la fonction LINK étant très
gourmandes en RAM pour la lecture de 300 valeurs Excel, je
m'oriente plutôt vers une solution VBA pour récupérer ces
valeurs de cellules nommées d'Excel dans une feuille Word.
J'ai une bonne connaissance d'Excel et du VBA mais de
grosses lacunes de Word.


Rien ne peut remplacer la puissance d'un lien ole LINK
lequel est gourmand parce qu'il est dynamique !! Tout
dépend de ce que vous voulez faire. Parfois un simple
copier-coller suffit ! Ailleurs le publipostage est une
façon très simple de placer des données Excel dans Word
et de les mettre à jour. Pour ce qui est du vba, c'est
le même que celui d'Excel; il suffit de se familiariser
un peu avec son modèle objet. Depuis Excel, ouvrez une
instance Word, créez un nouveau document, placez vos
données comme a dit Geo. Si vous avez vraiment besoin
de vba pour mettre vos données XL dans Word, nous avons
plein d'exemples superfétatoires... ;-)

Anacoluthe
« Il n'y a pas de substitut à l'excellence. »
- Thomas BOSWELL

Avatar
Herdet
Bonsoir Géo et Anacoluthe,
Merci pour vos réponses.
Pour préciser un peu mon problème, dont le cahier des charges n'est pas
encore défini, le pilotage se fera depuis Word pour renseigner des schémas
comportant des zones de texte isolées ou bien des objets de dessin avec un
texte à l'intérieur.
Comme les données sont issues de formules un peu complexes, elles seront
calculées dans Excel (ou bien Access suivant leur quantité)
Il y aura environ 30 fichiers Word et un seul fichier Excel externe qui
concentrera toutes les cellules de données lues par lesdits fichiers Word.
Le publipostage me parait lourd car les liens avec les données subsisteront
aussi il me semble que pour supprimer tous ces liens (200 à 300 par fichier)
une procédure VBA identique pour tous les fichiers Word pourrait faire cette
récup de valeurs XL à chaque ouverture ou par des évènements déclanchants
(touches, bouton, click...)
Les concepteurs (avertis) des schémas auront à charge de gérer les noms des
signets Word et des zones Excel nommées.
J'essaierai par la suite de faire une lecture avec le fichier Excel fermé
comme cela se fait en macros Excel par ADO.
Je suis bien sûr preneur des "exemples superfétatoires" dont parle
Anacoluthe où bien des adresses de sites où je pourrais les trouver.
J'espère avoir été assez clair.
Cordiales salutations
Robert Dezan


"Anacoluthe" a écrit dans le message de news:

Bonjour !

'Herdet' nous a écrit ...
Les liaisons Word-Excel par la fonction LINK étant très
gourmandes en RAM pour la lecture de 300 valeurs Excel, je
m'oriente plutôt vers une solution VBA pour récupérer ces
valeurs de cellules nommées d'Excel dans une feuille Word.
J'ai une bonne connaissance d'Excel et du VBA mais de
grosses lacunes de Word.


Rien ne peut remplacer la puissance d'un lien ole LINK
lequel est gourmand parce qu'il est dynamique !! Tout
dépend de ce que vous voulez faire. Parfois un simple
copier-coller suffit ! Ailleurs le publipostage est une
façon très simple de placer des données Excel dans Word
et de les mettre à jour. Pour ce qui est du vba, c'est
le même que celui d'Excel; il suffit de se familiariser
un peu avec son modèle objet. Depuis Excel, ouvrez une
instance Word, créez un nouveau document, placez vos
données comme a dit Geo. Si vous avez vraiment besoin
de vba pour mettre vos données XL dans Word, nous avons
plein d'exemples superfétatoires... ;-)

Anacoluthe
« Il n'y a pas de substitut à l'excellence. »
- Thomas BOSWELL



Avatar
Geo
Bonjour Herdet


Bonsoir Géo et Anacoluthe,
Merci pour vos réponses.
Pour préciser un peu mon problème, dont le cahier des charges n'est
pas encore défini, le pilotage se fera depuis Word


Ok tu dois savoir faire, sinon ça se trouve.

pour renseigner
des schémas comportant des zones de texte isolées ou bien des objets
de dessin avec un texte à l'intérieur.


Aie, je ne sais pas si les signets marchent dans ce cas !
Quand tu dis des schémas, comment seront-ils créés ?
Ou plutôt : si tu les fais(ais) à la main, comment tu comptes les
faire ?
Quand tu dis : zone de texte,
ce sont bien des zones de texte faites à partir de la barre d'outil de
dessin ?

Comme les données sont issues de formules un peu complexes, elles
seront calculées dans Excel (ou bien Access suivant leur quantité)


Là dessus personne ne te contredira.

Il y aura environ 30 fichiers Word

pas de difficulté particulière, ce sont quasiment les mêmes
commandes en Word et Excel.


et un seul fichier Excel externe
qui concentrera toutes les cellules de données lues par lesdits
fichiers Word. Le publipostage me parait lourd


Là : joker sur tout ce qui est publipostage (d'ailleurs madame Grognon
annonçait des explications que je n'ai pas trouvées)

car les liens avec les
données subsisteront aussi il me semble que pour supprimer tous ces
liens (200 à 300 par fichier) une procédure VBA identique pour tous
les fichiers Word pourrait faire cette récup de valeurs XL à chaque
ouverture ou par des évènements déclenchants (touches, bouton,
click...)
Les concepteurs (avertis) des schémas auront à charge de gérer les
noms des signets Word et des zones Excel nommées.


Si les signets sont accessibles, pas de problème,
sinon on cherchera une solution.

Tu peux déjà aller voir la faq de la webmistress marina
(où il y en plein d'autres bonnes choses aussi)
http://faqword.free.fr

--
A+

Avatar
Herdet
Bonsoir Geo,
Les schémas seraient créés à partir de la barre d'outils (Formes
automatiques et Zone de texte) ou bien par importation depuis Visio mais le
résultat est le même car ces objets sont similaires.
Si je comprends bien, le problème se pose principalement pour l'accès aux
signets à intégrer dans les objets dessinés.
Il faut peut être explorer les champs de "Liaisons et renvois" , non ?
J'ai fais le petit test VBA suivant qui peut être une piste à explorer.
------------------------------------------------------------
' créer un dessin avec la barre d'outils ==> "Canvas 3"
' sélectionner le dessin puis faire "Insertion => Signet"
' nommer le signet "Val_1"
Sub TEST()
' ------- procédure ... (à simplifier)
ActiveDocument.Shapes("Canvas 3").Select
Selection.GoTo What:=wdGoToBookmark, Name:="Val_1"
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.TypeText Text:="Bonjour"
' ---- ce texte peut être lu dans un tableau Excel

End Sub
-------------------------------------------------------------------
"Tu peux déjà aller voir la faq de la webmistress marina"
Cette chère et sympathique Marina que je n'ai pas vue depuis un an et que
j'aurais plaisir à revoir.
J'ai fais un petit tour sur le site de la FAQ mais je vais m'y replonger un
peu plus à fond.
Sacrément animé ce site, çà bouge de partout mais il est lisible et très
bien fait !

Cordialement
Robert
Avatar
Geo
Bonjour Herdet

Je me demande si on peut atteindre des signets définis dans des
schémas ou des boites de texte, mais je n'ai pas testé, c'est
peut-être un faux problème.
Mais si les boites de texte ont un nom connu, ça augure bien de la
suite car on pourra sans doute en adresser directement le contenu via
ce nom.

--

A+