Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

remplir un champ

  • Initiateur de la discussion paul
  • Date de début
P

paul

Guest
Bonsoir à tous,

Voila j'ai trouve un bout de code sur le site qui "apparement" permets de remplir des "Textbox" dans word depuis un classeur excel.

Le problème est que je n'arrive pas a creer un champ "Textbox" dans word.

Qq'un a t'il une idee de comment créer se champ dans le document word ? (je sais que c'est le grand match à la tele mais cette histoire commence à m'agaser )

Merci d'avance

Paul

PS : voici le code

Private Sub CourrierWord()

Dim AppWord As New Word.Application
Set AppWord = New Word.Application
With AppWord
.Documents.Open ("d:\Mes Documents\Courrier.doc")
.ActiveDocument.TextBox1.Value = Cells(1, 1).Value
.ActiveDocument.TextBox2.Value = Cells(1, 2).Value
.ActiveDocument.TextBox3.Value = Cells(1, 3).Value
.ActiveDocument.TextBox4.Value = Cells(1, 4).Value
.ActiveDocument.TextBox5.Value = Cells(1, 5).Value
.ActiveDocument.PrintOut
.ActiveDocument.Close
End With
Set AppWord = Nothing

End Sub
 
O

omicron

Guest
Bonsoir Paul,

Pour créer une TextBox dans un document Word celà est extrêmement simple : il suffit d'activer la barre d'outils intitulée "Boîte à outils Contrôle", de sélectionner l'icône "Zone de texte" et par un Glisser/Poser, de l'insérer à l'endroit voulu dans le document. Ensuite de sélectionner ce contrôle par un double Clic et de régler ses propriétés dans VB.

Par contre si tu veux faire la même opération par programmation (insertion dynamique) c'est un peu plus compliqué car il faut trouver ou positionner le contrôle dans le document. La méthode la plus simple est alors de positionner un "Signet" au point d'insertion et à repérer par programmation le signet avant de créer dynamiquement le Contrôle.

Je pense que la première option devrait répondre au problème posé. Si ce n'est pas le cas, tu peux me recontacter pour plus d'explications.

Cordialement.

Omicron
 
P

paul

Guest
c'est ok (j'avais pas bien regardé) -

Parcontre je joints un petit zip pour l'exemple que je veut faire (je suis nouveau dans le monde VB)

Explications :

J'ai mon fichier excel qui regroupe une liste des impayées.

Je voudrais que mon fichier word se remplise automatiquement (dans les textbox correspondantes) quand je clique sur le bouton et qu'il imprime un exemplaire pour chaque enregistrement de ma feuille excel qui a un montant total different de zero.

voila pour l'instant si j'arrive a faire ca c'est du bonheur.

Merci d'avance.

Paul

NB : si qq est très fort et peut ressoudre le pb dans un seul coup je lui rajoute encore un (je vienne de penser) : je voudrais que dans ma lettre word dans le champ "Periode" il me marque les mois (janvier, février) pour lesquels on a renseigné des impayées
 

Pièces jointes

  • test.zip
    20.4 KB · Affichages: 29
  • test.zip
    20.4 KB · Affichages: 30
  • test.zip
    20.4 KB · Affichages: 31
G

Gérard DEZAMIS

Guest
Bonsoir Paul

Petite question toute bête :
Puisque tu veux imprimer sous Word des données qui sont sous excel avec des critères (montant <>0) pourquoi ne pas utiliser simplement un publipostage avec une requête. Tu aurais ainsi toutes les données directement traitées (même la date du jour pour l'en-tête du courrier).
Tu as surement une bonne raison ...
Non ? alors envoyer petit exemple de données source (fichier .XLS) et on regarde si on peut "optimiser" tout ça !
Bonne nuit quand même !
@+ GD
 
P

paul

Guest
Bonjour Gérard et le forum,

Le fichier d'exemple est joint - La solution du publipostage je l'ai pas encore exploré mais pourquoi faire simple quand on peut faire complique ? Non le but est d'avoir moins des documents à gèrer (ex: tenir la feuille excel à jour, basculer sur word, faire le publipostage etc etc).

Dans ma solution (si elle va marcher un jour) on gère tout depuis excel et on n'en parle plus.

Ou je ne sait plus faire c'est boucler sur les lignes de ma feuille excel avec les condition decrites au debut du fil de discution.

Merci d'avance si qq peut me donner un coup de main

@+ Paul

NB : Je reste à votre entière disposition si vous avez des questions à me poser - ou si carrement vous n'avez pas compris le problème (comme je ne m'exprime pas bien en francais je ne me rends pas compte)
 

Pièces jointes

  • test.zip
    20.4 KB · Affichages: 34
  • test.zip
    20.4 KB · Affichages: 35
  • test.zip
    20.4 KB · Affichages: 36
C

chris

Guest
Bonjour
je suis d'accord avec Gérard.
Rien ne t'empêche de déclencher le publipostage depuis ton VB Excel : j'ai fais pour un client une application pour imprimer des traites : on saisit dans Excel quelques infos et Word crache les traites normalisées via un publipostage sans que l'utilisateur ne voit rien d'autre que sa feuille Excel.
C'est beaucoup plus fiable et évolutif que les textbox à mon avis.
Chris
 
P

paul

Guest
ok je vais explorer cette piste - mais comme je suis a mes debuts peut tu me donner un petit exemple ? si c'est pas trop demandé ?

merci d'avance

Paul
 
C

chris

Guest
Re
Si tu as des données à filtrer le + simple est de filter, copier coller les données dans une nouveau classeur qui s'appelera toto disons, que tu enregistres en format csv et que tu fermes après enregistrement.
Dans Word tu crée ton document type et tu l'associe au document toto.csv, et tu places tes champs de fusion.
Puis tu sauves ton document word et fermes Word.

Dans Excel ta macro doit recréer le fichier toto.csv en fonction du filtre, le fermer et lancer word, ouvrir le document, déclencher le publipostage puis quitter Word.

Note : il faut que tes colonnes excel aient un titre pour que Word identifie le champ de fusion.

Tu auras qq chose du genre :

Sub publi()
Dim AppWord As Object
Set AppWord = CreateObject("Word.application")
With AppWord
.Documents.Open ("d:\Mes Documents\Publi.doc")
With .ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With

.Application.PrintOut
.ActiveDocument.Close SaveChanges:=0
End With
Set AppWord = Nothing
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…