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

insertion de données depuis xl, dans word

26 réponses
Avatar
gilles
bonjour
j'utilise couramment un code pour insérer dans des fichiers xl, des données
saisies dans un fichier de base
J'aimerais insérer une partie de ces données dans word, et, (pourquoi faire
simple....) dans l'entête, partie droite
si kekun peut me dire kekchose la-dessus, merci d'avance
Gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...

6 réponses

1 2 3
Avatar
CAP2
Salut,

y'a un truc qui m'échappe : Tes macros GetValuesFromAWorkbook et Test sont
des macros EXCEL qui vont travailler avec le fichier EXCEL ouvert pour
récupérer des données. Mais il faut justement que ton fichier EXCEL soit
ouvert, et tu disait sur l'un de tes premiers posts que tu voulais lancer la
mise à jour à l'ouverture de Word, sans avoir à ouvrir le fichier EXCEL !!

Quant à ton dernier code, il va pas non plus, puisqu'il fait un Set xlWb =
xlApp.Workbooks.Open("S:AffairesLeroy GO30208f- Q.S.Efiche info
affaire.xls") et donc il est lié à ce chemin là, tout comme mes codes de
champs.

Alors on fait quoi ? On ouvre EXCEL, on ne l'ouvre pas ??

Parceque si on l'ouvre, le tout premier code en 2 macros que je t'ai fourni
va bien (en remplaçant juste Range("A1").Copy par Range("H8:H10").Copy dans
la macro Entete

??

CAP2

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

CAP,
apparemment ça marche pour l'auto open
Mias il me reste un pb qui m'a rappelé pourquoi j'utilise la macro
d'insertion dans les fichiers XL:
En fait, la liaison qu'on a créee fonctionne avec un fichier XL placé
toujours au même endroit
Moi mon pb, est que ce fichier de base (fiche info affaire) est
selectionné
puis copié dans un autre repertoire, par les utilisateurs
Donc la syntaxe de la liason ne fonctionnera plus
Les macros test et getvalues permettent d'insérer les données d'un fichier
même s'il a changé de place, à condition que le fichier qui récupère les
données soit placé lui aussi dans ce repertoire, ce que je fais par macro.
En fait, il faudrait que je trouve un code qui fasse l'équivalent
j'en avais trouvé un sur developpez-com mais ça bug
je te le joins a tout hasard:

Sub donneeAvecExcel()
'Déclaration des variables
Dim xlApp As Excel.Application
Dim xlWb As Excel.Workbook
Dim xlSh As Excel.Worksheet
Dim iR As Integer
Dim iC As Integer
Dim i As Integer, j As Integer


'Affectation des données aux variables
Set xlApp = New Excel.Application
Set xlWb = xlApp.Workbooks.Open("S:AffairesLeroy GO30208f-
Q.S.Efiche
info affaire.xls")
Set xlSh = xlWb.Worksheets(1)
'Récupération du nombre de lignes et de colonnes
iR = xlSh.UsedRange.Rows.Count
iC = xlSh.UsedRange.Columns.Count
'Boucle pour adresser les cellules contenant des données
'en excluant la première ligne qui contient les titres
For i = 5 To iR
For j = 1 To iC
Debug.Print xlSh.Cells(i, j)
Next j
Next i


xlWb.Close
xlApp.Quit
Set xlSh = Nothing
Set xlWb = Nothing
Set xlApp = Nothing


End Sub

merci
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire
aujourd'hui,
mais à chaque jour suffit sa peine...





Avatar
gilles
salut CAP
effectivement
tu te donnes du mal et t'as l'impression que je ne te dis pas tout
en fait je m'explique comme un manche, mais je vais essayer d'être plus
clair (même si cest long)

J'ai un repertoire-type, sur le reseau, qui contient un fichier XL appelé
Fiche info affaire
Chaque fois, qu'une nouvelle affaire est à créer, l'utlisateur copie ce
repertoire -type dans les repertoires qui lui sont reservés, pour creer son
affaire
il ouvre le fichier Fiche info affaire, et le complète de tous les
renseignements qui seront utiles à tous les gens qui travailleront sur cette
affaire
ensuite une macro crée des S/repertoires et y insère et renomme une copie de
tous les documents types qui sont utiles sur une affaire. (env une trentaine)
Dans chaque document-type XLS incorporé, il y a un onglet qui s'appelle
"info affaire", et quand on l'ouvre, une private sub workbook open lance la
macro test et get values, afin d'aller chercher les renseignements, sur le
fichier "Fiche info affaire" (qui lui est fermé), et les porte sur l'onglet
'"info affaire" du fichier qu'on a ouvert
Cette macro GetValuesFromAWorkbook devrait s'appeler
GetValuesFromAclosedWorkbook, mais elle fonctionne bien comme ça

Par contre pour les doc en word, je ne peux pas faire ça, car je n'ai pas la
macro qui va bien, et les utilisateurs continuent à porter manuellement tous
les renseignements utiles

Donc, pour résumer:
- si je mets dans le fichier word une liaison, telle que tu me l'as trouvé
hier, ce fichier, lorsqu(il sera copié dans le rep de l'utilisateur,restera
en liaison avec le fichier "Fiche info affaire" qui est dans le type (selon
le chemin écrit), et non pas avec la copie du fichier que l'utilisateur a
placé dans ses repertoires.

- Quant à ton dernier code, il va pas non plus....Ben non, t'as raison

- Alors on fait quoi ? On ouvre EXCEL, on ne l'ouvre pas ??.... NON, on ne
l'ouvre pas
Le but c'est que quand on ouvre n'importe quel fichier incorporé dans le rep
de l'utilisateur, il se mette tout seul à jour, quel que soit l'endroit ou
est le fichier reférence (FIche info affaire)

Excuses moi d'être longuet
je ne sais pas si je suis clair

Un grand merci, malgré tout


"CAP2" a écrit :

Salut,

y'a un truc qui m'échappe : Tes macros GetValuesFromAWorkbook et Test sont
des macros EXCEL qui vont travailler avec le fichier EXCEL ouvert pour
récupérer des données. Mais il faut justement que ton fichier EXCEL soit
ouvert, et tu disait sur l'un de tes premiers posts que tu voulais lancer la
mise à jour à l'ouverture de Word, sans avoir à ouvrir le fichier EXCEL !!

Quant à ton dernier code, il va pas non plus, puisqu'il fait un Set xlWb =
xlApp.Workbooks.Open("S:AffairesLeroy GO30208f- Q.S.Efiche info
affaire.xls") et donc il est lié à ce chemin là, tout comme mes codes de
champs.

Alors on fait quoi ? On ouvre EXCEL, on ne l'ouvre pas ??

Parceque si on l'ouvre, le tout premier code en 2 macros que je t'ai fourni
va bien (en remplaçant juste Range("A1").Copy par Range("H8:H10").Copy dans
la macro Entete

??

CAP2

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

> CAP,
> apparemment ça marche pour l'auto open
> Mias il me reste un pb qui m'a rappelé pourquoi j'utilise la macro
> d'insertion dans les fichiers XL:
> En fait, la liaison qu'on a créee fonctionne avec un fichier XL placé
> toujours au même endroit
> Moi mon pb, est que ce fichier de base (fiche info affaire) est
> selectionné
> puis copié dans un autre repertoire, par les utilisateurs
> Donc la syntaxe de la liason ne fonctionnera plus
> Les macros test et getvalues permettent d'insérer les données d'un fichier
> même s'il a changé de place, à condition que le fichier qui récupère les
> données soit placé lui aussi dans ce repertoire, ce que je fais par macro.
> En fait, il faudrait que je trouve un code qui fasse l'équivalent
> j'en avais trouvé un sur developpez-com mais ça bug
> je te le joins a tout hasard:
>
> Sub donneeAvecExcel()
> 'Déclaration des variables
> Dim xlApp As Excel.Application
> Dim xlWb As Excel.Workbook
> Dim xlSh As Excel.Worksheet
> Dim iR As Integer
> Dim iC As Integer
> Dim i As Integer, j As Integer
>
>
> 'Affectation des données aux variables
> Set xlApp = New Excel.Application
> Set xlWb = xlApp.Workbooks.Open("S:AffairesLeroy GO30208f-
> Q.S.Efiche
> info affaire.xls")
> Set xlSh = xlWb.Worksheets(1)
> 'Récupération du nombre de lignes et de colonnes
> iR = xlSh.UsedRange.Rows.Count
> iC = xlSh.UsedRange.Columns.Count
> 'Boucle pour adresser les cellules contenant des données
> 'en excluant la première ligne qui contient les titres
> For i = 5 To iR
> For j = 1 To iC
> Debug.Print xlSh.Cells(i, j)
> Next j
> Next i
>
>
> xlWb.Close
> xlApp.Quit
> Set xlSh = Nothing
> Set xlWb = Nothing
> Set xlApp = Nothing
>
>
> End Sub
>
> merci
> --
> en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire
> aujourd'hui,
> mais à chaque jour suffit sa peine...
>
>
>





Avatar
CAP2
Gilles,

patiente un instant, je suis en train de terminer un truc qui va le faire je
pense.

A tout à l'heure ;o))

CAP2
Avatar
CAP2
Bon,

j'avance bien, on va procéder par étapes :

Partant du principe que tes utilsateurs vont avoir un dossier contenant
plein de fichiers, dont Fiche info affaire.xls, et des fichiers WORD où tu
veux récupérer les valeurs des cellule H8 à H10, tu vs créer un doc WORD
vierge dans ton dossier où il y a tout...

Et sur son Open, tu mets ce code (le code cherche le nom du dossier en
cours, part à la recherche de Fiche info affaire.xls et de ses cellules H8 à
H10 dans ce dossier, et fait crée mon code de champs. C'est une première
étape, parce qu'ensuite il faudra automatiser le positionnement du code là
où tu le veux. Tu me diras ça après. Tente déjà ce code) :

Private Sub Document_Open()
Dim dossier
Dim lien As String
Dim final As String

dossier = Replace(ActiveDocument.Path, "", "")

lien = Chr(34) & dossier & "Fiche info affaire.xls" & Chr(34)

final = "LINK Excel.Sheet.8 " & lien & " fiche!L8C8:L10C8 t "

Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=final

Selection.Fields.Update

End Sub

Ca donne quoi ? Chez moi, ça marche bien !

CAP2
Avatar
gilles
Re-Salut
NI-ckel !!
là tu me bluffes
je reste en ligne

--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


"CAP2" a écrit :

Bon,

j'avance bien, on va procéder par étapes :

Partant du principe que tes utilsateurs vont avoir un dossier contenant
plein de fichiers, dont Fiche info affaire.xls, et des fichiers WORD où tu
veux récupérer les valeurs des cellule H8 à H10, tu vs créer un doc WORD
vierge dans ton dossier où il y a tout...

Et sur son Open, tu mets ce code (le code cherche le nom du dossier en
cours, part à la recherche de Fiche info affaire.xls et de ses cellules H8 à
H10 dans ce dossier, et fait crée mon code de champs. C'est une première
étape, parce qu'ensuite il faudra automatiser le positionnement du code là
où tu le veux. Tu me diras ça après. Tente déjà ce code) :

Private Sub Document_Open()
Dim dossier
Dim lien As String
Dim final As String

dossier = Replace(ActiveDocument.Path, "", "")

lien = Chr(34) & dossier & "Fiche info affaire.xls" & Chr(34)

final = "LINK Excel.Sheet.8 " & lien & " fiche!L8C8:L10C8 t "

Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=final

Selection.Fields.Update

End Sub

Ca donne quoi ? Chez moi, ça marche bien !

CAP2





Avatar
CAP2
Bon,

déjà si ça marche avec ce premier jet, c'est qu'on avance dans la bonne
direction ;o))

Maintenant, l'import ne concerne-t-il que la plage H8:H10 ou bien y'a-t-il
d'autres plages à insérer ?
De plus, tu veux qu'on insère ça dans quelle zone de ton doc WORD ?

CAP2
1 2 3