Autres Transfert de données Excel dans formulaire Word

jeanmi

XLDnaute Occasionnel
Bonjour à tous,

Je suis sous 2003 pour word et excel,

Ce que j’aimerai faire, mais je n’arrive pas à trouver des exemples de mise en œuvre pour essayer d’adapter à mon cas.
Je souligne que je ne sait pas programmer avec le code VBA, mais il semble que cela soit, d'après les lectures que j'ai faite la seule solution pour mettre en œuvre mon projet.
donc, je fait des essais mais c'est pas concluant.

a) J’ai des données dans un document Excel (X cellules, Nom, Prénom, adresse, CP, Tél, et autres…)
b) Je veux récupérer les données des cellules est les attribuées aux champs du formulaire d'un doc Word, uniquement si la première cellule de la ligne est non vide.
c) sauvegarder ce doc avec le nom d'une cellule + au autre
d) créer un PDF de ce doc mais ça on verra plus tard.

Donc par exemple :

La cellule Excel A3 passe dans le champs formulaire Word Texte1, et ainsi de suite… si la cellule A1 est non vide ou comporte un x (au choix, le plus simple à mettre en œuvre)
La cellule Excel B8, si il y a une donnée, passe dans CaseACocher1, donc, case à cocher et ainsi de suite…
A la fin le document est sauvegardé avec le nom + la date de deux cellule.
et la procédure continue pour toutes les lignes A1, normalement il y aura moins de 100 lignes à analyser.

Avez-vous une piste, un début de solution ?
j'ai tenté de faire quelque macro, mais rien ne marche correctement jusqu'au bout.
j'ai mis mes fichier à jour. depuis excel Ctrl+T pour lancer ma procédure qui ne marche pas encore il n'y à que l'ouverture du doc après ça bloc.

En vous remerciant par avance

Bien cordialement
 

Pièces jointes

  • 2021-08-planning-vesrion 2.xls
    117 KB · Affichages: 23
  • BL vierge version 2.doc
    82 KB · Affichages: 16
Dernière édition:

jeanmi

XLDnaute Occasionnel
Cells(dg, 1).Value = "Editer" 'remplace le x de la colonne 1 par Editer
Case Else

Bonjour herve62 , bonjour à tous

J’ai ajouté ta solution du post #24 pour gérer les x de la colonne B, ça marche très bien.
J’ai juste changé le Cells(dg, 1).Value en Cells(x, 1).Value

j'ai un pb que je n'arrive pas à résoudre, j'y suis depuis ce matin 6h , j'en peux plus .

A l’ouverture de mon classeur, j’ai le message, ce classeur comporte des liaisons avec un autre classeur ?

J’ai dû faire quelque chose mais quoi ????

Depuis mon ancienne version, j'ai créé un ruban spécifique jeanmi avec les cdes macros qui sont dans les modules, et j'ai aussi supprimé le bouton de commande initialement utilisé pour lancer la macro Fill_Form puisque je lance les macros à partir d’un onglet du ruban spécifique.

Mais je ne voie pas de cause due à ces actions

La galère lorsqu’on ne maîtrise pas.

Cordialement
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir , slt Jeanmi
Pour éclaircir ton soucis de liaisons , je te rappelle que tu as mis une formule en col G faisant référence à un fichier .xls qui est autre que celui utilisé et cela pour une REchercheV ? donc ne recherche plus le pourquoi ;) moi j'ai : planning-vesrion 6.xls alors que le fichier actuel est planning-vesrion HD-4 donc la fonction va vouloir rechercher dans l'autre fichier d'où la raison de la liaison : remet ta fonction à jour et tu n'auras plus le message
Je te l'ai fait pour mon fichier modifié : select case appliqué, et formule redéfinie
Je n'ai plus le message des liaisons
Je poursuis pour la fin
 

Pièces jointes

  • planning-vesrion HD-4.xlsm
    88.3 KB · Affichages: 6

laurent950

XLDnaute Barbatruc
Bonsoir @herve62, @jeanmi
je viens de voir votre code il est très bien @herve62

En Bleu : (Option de champ Text)
En Vert : (Case à cocher)

Vous pouvez remercier @herve62 qui vous a fait un super travail pour vous @jeanmi

Biensur le code à @herve62 prend en compte 9 Colonnes du tableau Excel

Pour compléter :
Exemple ci-dessous pour @herve62


J'ai ajouter en Bleu la colonne du tableau B du Tableau pour la quantité
J'ai ajouter en Vert la colonne du tableau 0 du Tableau pour (Mettre la croix)

' ***** boucle qui renseigne le document Wort à partir du fichier Excel *****
' Pour la quantité de la citerne
WordDoc.FormFields("Texte15").Result = Cells(x, 2)

' Pouc cocher la case 600 0u 650 Ou 750
Select Case Cells(x, 15)
Case "600"
WordDoc.FormFields("CaseACocher1").CheckBox.Value = True
Case "650"
WordDoc.FormFields("CaseACocher2").CheckBox.Value = True
Case "750"
WordDoc.FormFields("CaseACocher3").CheckBox.Value = True

End Select
For i = 1 To 9
Set s = WordDoc.Bookmarks("Texte" & i) ' affecte le texte/i à la variable s
If s Is Nothing Then GoTo Suite
WordDoc.Activate
s.Select
WordApp.Options.ReplaceSelection = True
If Cells(x, 2) <> "" Then 'test si dans la cellule dg,2 il y a une information ? ne faut-il pas tester sur la 1 et non 2
WordApp.Selection.TypeText Cells(x, i + 2) ' dg = la ligne qui est traitée avec i+2 la colonne
pos = WordApp.Selection.Range.End
Set s = WordDoc.Range(pos - Len(Cells(x, i + 2)), pos)
End If
WordDoc.Bookmarks.Add "Texte" & i, s
On Error GoTo 0
Suite:
Next i
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir, Slt Laurent
je continue d'avancer pas à pas , Merci Laurent pour tes commentaires en //
Donc là je vais joindre mon dernier fichier issu des modifs de Jeanmi et que j'ai à nouveau adapté ! SAUF qu'il n'a pas encore fait attention à l'ordre des signets (ce n'est pas moi) > x= 1 à 9 .. or les col sont de 2 à 10 .. ?? donc pour moi le i c'est + 1 et non pas + 2 (Cells(x, i + 2)) Non ???
Il me faut encore modifier l'ordre des colonnes I J K afin d'avoir une boucle continue en rapport à l'ordre des Signets TEXTE
Là C'est juste pour montrer la suite avec les cases à cocher ... juste pour le volume car j'en vois pas plus de Excel à transférer vers word ?
J'ai fait simple avec IF .. Laurent fait avec Select Case c'est Idem sauf que j'utilise qu'en cas d'ambigüité comme le test en A
@jeanmi : teste ce fichier et remarque que tes signets sont erronés !!! POURTANT je t'avais mis le bon fichier ??

Prochaine version :
- Fin du doc word avec ce qui est demandé
- Securité ; Mise en place de l'accès au fichier Excel via USF pour Mdp et verrouillage
- Export du DOC en PDF

Ci joint fichier Excel avec erreurs signets , le corrigé viendra plus tard et Word signets adaptés ( Qté = texte1)
 

Pièces jointes

  • planning-vesrion HD-4.xlsm
    91.2 KB · Affichages: 4
  • BL vierge version HD.docm
    35.5 KB · Affichages: 2

laurent950

XLDnaute Barbatruc
SAUF qu'il n'a pas encore fait attention à l'ordre des signets (ce n'est pas moi) > x= 1 à 9 .. or les col sont de 2 à 10 .. ?? donc pour moi le i c'est + 1 et non pas + 2 (Cells(x, i + 2)) Non ???
Avec cette procedure VBA vous pouvez lister tous les signets dans le documents Word
Ouvrir le document Word
Coller le code VBA dans le fichier Word
Les Signets seront sélectionné les un après les autres : myFld.Select
Affichage de leurs Noms : MsgBox myFld.Name
Il faut le faire au cas par cas pour avoir le bon nom de signet
Conserve le nom avant Modification au cas Ou : NomSignetAvantModification = myFld.Name '
Puis Renommages des signets : myFld.Name = "Choix du texte"

Oui il commence a Texte2
Par exemple renommer Texte2 en Texte1 avec cette procédure en Mode Debugge

VB:
' En récupérant le nom du Formfield, Ont peux l'utiliser pour les signets.
Sub TestOlivier()
Dim myFld As FormField
For Each myFld In ActiveDocument.FormFields
    myFld.Select
    MsgBox myFld.Name
    NomSignetAvantModification = myFld.Name '
    myFld.Name = "Choix du texte"
    ' Renommer
    'Debug.Print myFld.Name & " -:::- " & myFld.Result
    'myFld.CheckBox.Value = False
Next myFld
End Sub
 

laurent950

XLDnaute Barbatruc
Il me faut encore modifier l'ordre des colonnes I J K afin d'avoir une boucle continue en rapport à l'ordre des Signets TEXTE
Aussi ici avec votre Boucle
For i = 1 To 9
Pour changer l'ordre sans désorganiser le tableau Excel passer par une variable tableau
Exemple
Code:
Sub test()
Dim Tab1() As Variant
    Tab1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
    For i = LBound(Tab1) To UBound(Tab1)
        MsgBox Tab1(i)
    Next i
    Erase Tab1
    Tab1 = Array(5, 4, 6, 3, 7, 2, 8, 1, 9)
    For i = LBound(Tab1) To UBound(Tab1)
        MsgBox Tab1(i)
    Next i
End Sub
 

jeanmi

XLDnaute Occasionnel
Bonjour,

Merci à tous pour votre aide et en particulier herve62 et laurent950, je vais regarder tous cela et essayer de comprendre.
J'avance sur la mise en page et les protections à mettre en place pour que mon fils puisse l'utiliser aussi avec le moins de problèmes possible ( utilisateur, 0 en informatique c'est pas comme moins qui suit 0+ ) Hi, Hi, Hi
J'espère que vous ne vous découragerez pas devant mes questions sur ce projet, car mois j'avance doucement par rapport à vous.

Message pour herve62 : pour les messages d'erreur, effectivement je n'avais pas vu ce problème de colonne G, je vais voir cela. pb de copier/coller surement.
j'ai aussi supprimer le ruban spécifique et n'est plus de problème. Je suis revenu comme tu avait commencé avec des boutons activ x. ça marche très bien.

Heureusement qu'il y a des aides comme vous. l'orientation est incontestable et l'implication remarquable.
Je vais m’arrêter là car autrement, je vais finir par dire des inepties.

Bien cordialement à tous
 

jeanmi

XLDnaute Occasionnel
Bonjour, Merci et merci encore.

il me reste plus qu'a bien intégrer tous vos commentaires à mon projet, pour pouvoir l'utiliser.
j'ai un contrainte supplémentaire qu'il faut que j'arrive à résoudre :

si dans la case B, la quantité est supérieur à 1 alors créer autant de BL que la quantité, avec les mêmes noms incrémentés de 1,2,3,.... et les mêmes information que le premier créé.

Après le projet sera figés.

Bien cordialement
 

laurent950

XLDnaute Barbatruc
Bonsoir @jeanmi

J'ai suivis ce poste car c'est toujours intéressant de pouvoir comprendre le code d'Excel Vers Word ou Vice-versa.

J'ai pas compris cela :
si dans la case B, la quantité est supérieur à 1 alors créer autant de BL que la quantité, avec les mêmes noms incrémentés de 1,2,3,.... et les mêmes information que le premier créé.

@herve62 vous a fait un super travail, je regarde cela de loin et je laisse @herve62 faire la suite du code.
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bon , Etant Bon Prince ci joint la solution sans Pb
@laurent : J'ai pour principe que le demandeur n'est pas expert VBA et qu'il doit être capable de comprendre le code facilement , secondo : il y a 40 ans ( en vrai prog informatique , PC euh ?? ) on m'a appris à d'abord structurer le squelette afin de modeler le corps et pas l'inverse ( ce que tu fais avec ta mixture de TAB pour inverser l'ordre )
Plus simplement Pourquoi mettre des Col : 1 2 3 4 5 6 .. pour ensuite traiter 1 2 3 6 5 4 ???????
Donc comme le form Doc est logique dans ses champs , j'ai interverti les col du tableau .. est ce critique ??
Donc voilà pourquoi je fais simple quand tu fais compliqué ???
Mon adage : quelque soit la méthode .. à coût identique ( pas ici) c'est le résultat qui compte !!
sinon très bien pour tes connaissances !!

@jeanmi : CONSEIL : Reprend ce fichier fait plusieurs enregistrements s'il le faut pour tes modif
il n'y aura que les noms de chemin ou doc à modifier Cela facilitera la suite

@laurent950 : juste encore en rédaction je viens de voir ton dernier POST : en fait il veut créer un ou X pdf selon Qté donc il faut à nouveau ( via nouvelle sub pour pas d'interférence) créer le nom idem Doc et ajouter l'index Qté comme si docm= 20181242- 1 LEDUC 1- Yves 1 .. on ajoute -1 puis -2

Dernière version qui fonctionne nickel chez moi pour signets TEXTE et case à cocher VOLUME
Bonne nuit !!
 

Pièces jointes

  • planning-vesrion HD-5.xlsm
    90.2 KB · Affichages: 4
  • BL vierge version HD.docm
    35.5 KB · Affichages: 5
Dernière édition:

jeanmi

XLDnaute Occasionnel
Bonsoir , slt Jeanmi
Pour éclaircir ton soucis de liaisons , je te rappelle que tu as mis une formule en col G faisant référence à un fichier .xls qui est autre que celui utilisé et cela pour une REchercheV ? donc ne recherche plus le pourquoi ;) moi j'ai : planning-vesrion 6.xls ....
Re bonjour,
Effectivement j'ai compris le Pb de cette liaison.
Je n'aurai jamais recherché là.
Merci beaucoup
je vais faire la modification sur le fichier finale.
j'avais supprimé les informations, qui étaient sur l'onglet C_poste. Pourquoi ?
Cordialement
Bonsoir @jeanmi

J'ai suivis ce poste car c'est toujours intéressant de pouvoir comprendre le code d'Excel Vers Word ou Vice-versa.

J'ai pas compris cela :
si dans la case B, la quantité est supérieur à 1 alors créer autant de BL que la quantité, avec les mêmes noms incrémentés de 1,2,3,.... et les mêmes information que le premier créé.

@herve62 vous a fait un super travail, je regarde cela de loin et je laisse @herve62 faire la suite du code.
Dans la case B, il y a une quantité généralement de 1 à 12 max . lorsque l'on créé la fiche cette information n'est pas prise en compte actuellement dans la création des BL, car pas imaginé au départ.

Donc, il n'y a qu'un document à réaliser par ligne actuellement.

ce que je souhaiterai, c'est avoir autant de BL, que de quantité pour cette ligne de la colonne B.
j'espère avoir exprimé l'information correctement, mais, il ne faut pas hésiter à questionner, car lorsque que l'on est dans le projet on ne pense pas toujours à le définir clairement.

Cordialement
 

jeanmi

XLDnaute Occasionnel
Bon , Etant Bon Prince ci joint la solution sans Pb
@laurent : J'ai pour principe que le demandeur n'est pas expert VBA et qu'il doit être capable de comprendre le code facilement , secondo : il y a 40 ans ( en vrai prog informatique , PC euh ?? ) on m'a appris à d'abord structurer le squelette afin de modeler le corps et pas l'inverse ( ce que tu fais avec ta mixture de TAB pour inverser l'ordre )
Plus simplement Pourquoi mettre des Col : 1 2 3 4 5 6 .. pour ensuite traiter 1 2 3 6 5 4 ???????
Donc comme le form Doc est logique dans ses champs , j'ai interverti les col du tableau .. est ce critique ??
Donc voilà pourquoi je fais simple quand tu fais compliqué ???
Mon adage : quelque soit la méthode .. à coût identique ( pas ici) c'est le résultat qui compte !!
sinon très bien pour tes connaissances !!

@jeanmi : CONSEIL : Reprend ce fichier fait plusieurs enregistrements s'il le faut pour tes modif
il n'y aura que les noms de chemin ou doc à modifier Cela facilitera la suite

@laurent950 : juste encore en rédaction je viens de voir ton dernier POST : en fait il veut créer un ou X pdf selon Qté donc il faut à nouveau ( via nouvelle sub pour pas d'interférence) créer le nom idem Doc et ajouter l'index Qté comme si docm= 20181242- 1 LEDUC 1- Yves 1 .. on ajoute -1 puis -2

Dernière version qui fonctionne nickel chez moi pour signets TEXTE et case à cocher VOLUME
Bonne nuit !!
Bonjour,
Ok Herve62, et merci pour ce travail, très important que tu m'apportes.
Je regarde soit ce soir, mais actuellement, je finalise des mises en formes, ou demain matin et revient vers toi.
Bien cordialement

PS : je viens de finir les mise en forme et essais, tous marche nickel. il ne manque que la dernière contrainte sur la colonne B.
Demain, je ferait les écarts entre ton fichier et le mien afin de mettre à jour au plus propre.
Pour la colonne que tu à ajoutais, elle était déjà dans mon fichier mais en cachée (largeur 0) comme c'est une répétition d'une colonne existante et je ne veux pas la voir deux fois à l'édition du fichier Excel.
Merci encore
 
Dernière édition:

jeanmi

XLDnaute Occasionnel
Bonjour,
Ok Herve62, et merci pour ce travail, très important que tu m'apportes.
Je regarde soit ce soir, mais actuellement, je finalise des mises en formes, ou demain matin et revient vers toi.
Bien cordialement

PS : je viens de finir les mise en forme et essais, tous marche nickel. il ne manque que la dernière contrainte sur la colonne B.
Demain, je ferait les écarts entre ton fichier et le mien afin de mettre à jour au plus propre.
Pour la colonne que tu à ajoutais, elle était déjà dans mon fichier mais en cachée (largeur 0) comme c'est une répétition d'une colonne existante et je ne veux pas la voir deux fois à l'édition du fichier Excel.
Merci encore
Bonjour Herve62 , bonjour à tous,

j'ai fais le jeux des 7 erreurs entre ton code et celui que j'ai sur mon fichier et j'ai apporté les corrections :

a) ajout de la sélection des cases "CaseACocher"
b) un petit if end if pas nécessaire, supprimé
c) je n'ai pas changé le +2 par +1 puisque la quantité sera toujours à 1 sur les BL à éditer. la colonne B sera utilisée uniquement pour définir le nombre de BL à créer pour cette ligne. code à réalisé, je regarde si je peux le faire.
d) le problème de lien, j'ai remis les informations sur l'onglet C_poste, mais à l'ouverture du fichier j'ai encore ce problème. je vais chercher pourquoi. si je ne trouve pas je reviens vers toi. Y a t-il une solution pour voir d'où viennent ces liens ?

Merci encore de l'aide

Bien cordialement

Merci encore de l'aide apporté à mon projet.

Cordialement
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
A la rigueur .... joint ton fichier ...on avancera plus vite non ?
Là je ne peux voir ton avancement

Pour le c) , tu as quand même un champ QTE : faut supprimer ? ou toujours mettre 1 ?

d) dans le dernier fichier que je t'ai joins les liens sont à jour regarde dans une cellule G , si tu as un autre classeur > Pb !!! ; Ensuite As tu mis d'autres formules ailleurs ? c'est TOUJOURS à cause de ça !!
Normalement c'est presque fini

Edit : as tu beaucoup de CP à rechercher selon tes communes ? j'ai la feuille excel complète de France ( grosse) mais on peut restreindre pour une région
 

Discussions similaires

Réponses
4
Affichages
525
Réponses
15
Affichages
1 K
Réponses
27
Affichages
1 K