VBA sous word HELP!!!!!!

  • Initiateur de la discussion Valou
  • Date de début
V

Valou

Guest
Bonjour le forum,

je remercie Christophe qui m'a permis de me "dépatouiller" dans mes balbutiements de vb sous word (dommage que cela ne fonctionne pas comme sous excel !). Bref, je suis bloquée.

Je voudrais donc une fenêtre de dialogue (inputbox) qui apparait dès l'ouverture du fichier. Et que dès que j'ai entrée un texte dans cette fenêtre elle se place à un endroit choisi dans la page word (par le biais d'un signet).

Bon ben jusque là j'ai réussi à créer l'inputbox mais :
- comment faire pour qu'il s'ouvre automatiquement à l'ouverture du fichier
- le bookmark ne fonctionne pas (j'ai inséré un signet "Texte1").

JE SUIS PERDUE, J'EN AI MARRE, je pense que je vais jeter mon micro par la fenêtre (je suis au 2e étage), mais bon, je pense pas que mon patron sera d'accord. Si vous pouviez m'aider (je sais, c'est sous word).

Finalement je pense que je vais m'acheter Visual Basic pour les nuls (je crois que cela me conviendra).

Voilà, ci-dessous seulement ce que j'ai pu faire.

Private Sub ThisDocument()
Dim Message, Title, MyValue 'définit le message
Message = "Entrez le titre du document"
Title = "Essai de titre"
MyValue = InputBox(Message, Title)
With ActiveDocument
.Bookmarks("Texte1").Range.Text = MyValue
End With
End Sub
 
V

Valou

Guest
MERCI MERCI MERCI MERCI Christophe

Cela marche impec... toutes mes félicitations pour ce coup de main et ce coup de maître.

Question : Si je fais ce fichier en .dot, je pourrai donc enregistrer ce fichier sous un nom et me servir du fichier .dot, mais j'ai peur que j'ai toujours ce message à chaque ouverture du fichier, Existe-il un moyen pour qu'une fois le signet rempli (le titre indiqué), l'inputbox ne s'ouvre plus à chaque fois.

En tout cas, encore merci, j'ai passé la journée (entre deux boulots) à m'énerver sur ce truc et décidément, je suis nulle..
 
@

@Christophe@

Guest
Re,

Mais non, ne dis pas cela, j'ai déjà aussi cherché sur certain truc très simple pendant des heures, lol, cela arrive

Ben normalement, parce que Word, c'est pas trop mon truc, rire, mais si tu enregistre sous .dot, il ne sauve pas les macro avec, donc tu ne devrais plus l'avoir dans tes autre document, a essayer, mais cela devrait marché.

Bonne journée

@Christophe@
 
@

@Christophe@

Guest
Re,

Info
Moi j'ai reglé le problème comme cela, parce que je connais une macro sous excel qui supprime toutes les macro du document, mais je n'arrive pas a la faire marché sous Word, aller je copy coller la feuille dans un nouveau doc, pour ensuite sauver le nouveau doc, sous ... ici DocName, et ensuite je ferme le doc d'origine sans sauver les modif. Et le tours est joué.

J'utilise le code suivant, a toi de voir:

Sub SauverDoc()
Dim DocName as string

Selection.WholeStory
Selection.Copy
Documents.Add DocumentType:=wdNewBlankDocument
Selection.PasteAndFormat (wdPasteDefault)

DocName = "Avis d'absence" & Format(Date, "yyyy") & Format(Date, "mm") & Format(Date, "dd")
ActiveDocument.SaveAs FileName:=DocName
ActiveDocument.Close
ActiveDocument.Close Savechanges:=False
End Sub

Tu peux très bien mettre le Titre comme docname, il suffit de récupére la valeur de ton inputbox, ou alors tu modifie ton doc et ta macro t'ouvre la boite de dialog save as, tu ouvre la boite de dialog comme cela, je te montre l'autre code;

Sub SauverDoc()
Selection.WholeStory
Selection.Copy
Documents.Add DocumentType:=wdNewBlankDocument
Selection.PasteAndFormat (wdPasteDefault)
Application.Dialogs(wdDialogFileSaveAs).Show
ActiveDocument.Close
ActiveDocument.Close Savechanges:=False
End Sub


Voila

@Christophe@
 
C

chris

Guest
Bonjour
Lorsqu'on crée une macro on peut préciser dans quel .dot on la met et seuls les documents basés sur ce dot l'utilisent.
Après coup on peut déplacer une macro d'un dot à un autre en passant par outils macros organiser.
Chris
 
V

Valou

Guest
Bonjour le forum
Bonjour Christophe et Chris

Merci à tous les deux pour le .dot. Tout est ok maintenant, et vous remercie du coup de main, c'est sympa.

Néanmoins, je me suis toujours posée la question suivante : pourquoi le vb ne fonctionne pas pareil sous word et excel, ce qui simplifierait la chose.

M'enfin, ce sont les aléas de l'informatique.

Encore MERCI, MERCI, MERCI et @+ sur le forum

Valou
 
C

chris

Guest
Bonjour,
Dans le vba il y a deux parties :
- la logique (boucles etc)
- l'appel aux fonctions applicatives

Comme ce sont des outils très différents dont les premières versions n'avaient rien en commun (Word existait sous Dos tandis qu'Excel est sorti sous windows 1 ou 2) les fonctions applicatives sont différentes.
De plus un fichier Word est un suite de caractères sans repère particulier (tant qu'on n'y ajoute pas des signets ou autres) tandis qu'un tableau Excel est un ensemble fini ou chaque cellule a une adresse.
Ça change beaucoup de choses et explique la différence.

C'était pire avec les macros avant VBA.

Bon courage et haut les coeurs.
Chris
 
M

Maurice

Guest
Bonjour,
J'ai créé sous Excel des tableaux et des graphiques que je veux intégrer à un modèle de document Word ou j'ai créé des signets. Cela met énormément de temps. Y aurait-il une solution plus pratique et plus rapide que celle dont j'envoi le code plus bas?
Merci par avance pour votre aide.


Voici le code sous Excel :
********************
Sub import()
'
Dim Temp, canal
On Error Resume Next

Dim numligne As Integer
Dim numligne1 As Integer
Dim numligne2 As Integer

'initialisation des variables
numligne = 2
numligne1 = 3
numligne2 = 20


MyAppID = Shell("c:\Program Files\Microsoft Office\Office10\Winword.exe c:\Indicateurs\Rapport_gestion_IDF.dot", 1)
AppActivate MyAppID
canal = DDEInitiate("Winword", "system")
'DDEExecute canal, "[ouvrirIDF()]"

Sheets("1trim").Select
Worksheets("Fiche indic").Range("e7").Copy
DDEExecute canal, "[collerA()]"
Worksheets("Fiche indic").Range("e5").Copy
DDEExecute canal, "[collerA()]"
Worksheets("Fiche indic").Range("b13").Copy
DDEExecute canal, "[collerA()]"
Worksheets("Fiche indic").Range("e13").Copy
DDEExecute canal, "[collerA()]"
Worksheets("Fiche indic").Range("e15").Copy
DDEExecute canal, "[collerA()]"
Worksheets("Fiche indic").Range("b29").Copy
DDEExecute canal, "[collerA()]"
Worksheets("Fiche indic").Range("e29").Copy
DDEExecute canal, "[collerA()]"

Sheets("Bilan").Select
Worksheets("Bilan").Range("b2:h19").Copy
DDEExecute canal, "[collerA()]"

Worksheets("Fiche indic").Range("e36").Copy
DDEExecute canal, "[collerA()]"
Worksheets("Fiche indic").Range("e37").Copy
DDEExecute canal, "[collerA()]"
Worksheets("Fiche indic").Range("e38").Copy
DDEExecute canal, "[collerA()]"

DDEExecute canal, "[saut()]"

Worksheets("Bilan").Range("j3").Copy
DDEExecute canal, "[collerA()]"
Worksheets("Bilan").Range("j4:eek:7").Copy
DDEExecute canal, "[collerA()]"

Sheets("Annuel").Select

While Range("b" & numligne) <> ""
Worksheets("Annuel").Range("b" & numligne).Copy
DDEExecute canal, "[collerA()]"
numligne = numligne + 19
Worksheets("Annuel").Range("b" & numligne1 & ":h" & numligne2).Copy
DDEExecute canal, "[collerA()]"
DDEExecute canal, "[saut()]"
numligne1 = numligne1 + 19
numligne2 = numligne2 + 19
Wend

Sheets("Annuel").Select

Worksheets("Annuel").ChartObjects(1).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
DDEExecute canal, "[collerA()]"

Sheets("Bilan").Select

Worksheets("Bilan").ChartObjects(1).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
DDEExecute canal, "[collerA()]"

DDETerminate (canal)

End Sub


Voici le code sous Word :
********************
Global dest As Integer
========================
Sub ouvrirIDF()
'
' Macro1 Macro
' Macro enregistrée le 04/09/02 par dct0242
'
dest = -1
ChangeFileOpenDirectory "c:\indicateurs\"
Documents.Open FileName:="Rapport_gestion_IDF.dot", _
ConfirmConversions:=False, ReadOnly:=True, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto
End Sub
==================
Sub collerA()

dest = dest + 1

WordBasic.WW7_EditGoTo Destination:="a" & dest
Selection.Paste


End Sub

=========================
Sub enregistre()
'
ActiveDocument.SaveAs FileName:="Rapport_gestion_IDF.doc"

End Sub
 
T

Thomas

Guest
Bonjour à tous,

J'aurais trois petites questions à vous poser concernant l'utilisation des macros Word.
En effet, j'aurai tout d'abord voulu savoir si une macro Word (de l'office 2000 Prenium) était utilisable sur toute les autres versions de Word et si non comment faire pour qu'elle le soit?
Deuxièmement je voudrais savoir si je ne risque pas d'avoir des problèmes avec les anti-virus?
Enfin, je voudrais savoir si je ne vais pas rencontrer trop de problèmes si j'ajoute ma macro sur d'autres postes?

Merci d'avance pour vos réponses.
 
M

Marie

Guest
Salut!

J'ai un problème qui doit être facile pour les pros en informatique que vous êtes!
J'ai un document sous word que j'aimerais "automatiser". En fait j'aimerais qu'en ouvrant le fichier une boîte de dialogue s'ouvre et que des questions soient posées. En fonction des réponses mon document se complète aux endroits où j'aurais insérer des champs (ou bien autre chose!?).

J'y connais rien en informatique vba ... et ce serait fantastique d'avoir un programme fait (ressemblant que je puisse arranger).

Et le pire c'est que je suis à la bourre, je suis désolée de vous bousculer mais je cherche desespérément de l'aide.

Merci .
 
K

kaba

Guest
VBA sous word

Bonjour,

Je désire créer un document .dot qui me permette d'insérer automatiquement à l'ouverture, et dans des endroits bien définis de mon document deux choses :

Des informations émanant d'un fichier Excel (loin d'un publipostage) : je voudrai pouvoir choisir la ligne de mon choix dans un numéro de feuille déterminer de mon classeur, et cela au travers d'une boite de dialogue.

Exemple "quel est le nom de la société?" et ma macro recherche la chaîne de caractères dans la colonne A de la feuille 1

Après avoir réalisé cette fusion, je voudrai que ma macro aille rechercher dans un chemin spécifique 4 images différentes qu'elle incorporerait également à mon document.

J’avoue que je suis un novice, je demande peut être des choses qui sortent du rayon de VBA sans en avoir conscience.

Merci d'avance pour toute réponse
 

Discussions similaires

Réponses
11
Affichages
2 K