Créer / Ouvrir document word

Salut à tous,

J'ai besoin de vous, j'ai un petit problème de macro à chaque fois qu'il s'agit d'agir sur une autre application que excel je suis perdu

En fait, ma requête va paraître très simple a certain d'entre vous. J'aimerai ouvrir un fichier word s'il existe et le créer s'il existe pas.

Pour le test, savoir s'il existe ou non c'est bon ! C'était du gâteau. En revanche, ouvrir word et enregistrer sous ...

En regardant sur internet on trouve beaucoup de chose mais c'est plutôt complexe à adapter.

Merci par avance pour votre aide !

Sub article()
Dim appWD As Word.Application
Dim oDoc As Word.Document
Dim Chemin As String
Chemin = ("C:\Users\Archimed-Eval\Desktop\TestBIP")
Dim year As String
year = Range("A1").Value
Dim mois As String
mois = Range("C1").Value
Dim article As String
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
Selection.Offset(0, -4).Select
article = ActiveCell.Value
Dim redacteur As String
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
Selection.Offset(0, -2).Select
redacteur = ActiveCell.Value
Dim Txt As String
Txt = Dir("C:\Users\Archimed-Eval\Desktop\TestBIP\" & article)

If Txt = "" Then
'Ici le document n'existe pas
'J'aimerais alors ouvrir Word, ajouter le nom de l'article dans la première ligne, enregistrer sous (par rapport au chemin ci-dessus), et le nommer par le nom de l'article;
Else
'Ici le document existe
'J'aimerais juste l'ouvrir.
End If

End Sub

cdlt,

Heya

J'ai pas de réponse précise à ta question (Car j'avais fait ça il y a plus d'un an )

mais je pense que tu peux trouver des éléments de réponses dans ce fil (en regardant le code proposé)

https://forum.excel-pratique.com/excel/pilotage-word-depuis-excel-t80620.html

cordialement (désolée de pas fournir une réponse plus précise, mais ça te décoincera peut être déjà un peu avant que qqun réponde plus précisement)

Salut, Merci mais c'est pas vraiment ce que je cherche :/

Dorénavant, j'en suis ici. Mon dernier problème est que le fichier s'ouvre mais il ne remplace pas les mots.

De plus, il ne s'affiche pas je suis obliger de changer de fenêtre. Enfin, il ne s'enregistre pas non plus.

Sub article()
Dim Chemin As String
Chemin = ("C:\Users\Archimed-Eval\Desktop\TestBIP")
Dim CheminB As String
CheminB = ("C:\Users\Archimed-Eval\Desktop\TestBIP\doc1.docx")
Dim year As String
year = Range("A1").Value
Dim mois As String
mois = Range("C1").Value
Dim article As String
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
Selection.Offset(0, -4).Select
article = ActiveCell.Value
Dim redacteur As String
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
Selection.Offset(0, -2).Select
redacteur = ActiveCell.Value
Dim Txt As String
Txt = Dir("C:\Users\Archimed-Eval\Desktop\TestBIP\" & article)

If Txt = "" Then
'Ici le document n'existe pas
'J'aimerais alors ouvrir Word, ajouter le nom de l'article dans la première ligne, enregistrer sous (par rapport au chemin ci-dessus), et le nommer par le nom de l'article;
Set appWrd = CreateObject("Word.Application") 'creation session Word
                appWrd.Visible = True 'pour que word reste masqué pendant l'operation
Set docword = appWrd.Documents.Open(CheminB)
                docword.Content.Find.Execute FindText:="Article", ReplaceWith:=article, Replace:=wdReplaceAll
                'Set appWrd = CreateObject("Word.Application")
                'appWrd.ActiveDocument.SaveAs Filename:= _
                ' Chemin & "\" & article & ".docx"
Else
Set appWrd = CreateObject("Word.Application") 'creation session Word
                appWrd.Visible = True 'pour que word reste masqué pendant l'operation
                Set docword = appWrd.Documents.Open(Chemin & "\" & article & ".docx")
                docword.Content.Find.Execute
End If
'

          

Hello !

Alors. C'est peut être une idée à la c** mais.. et si tu remplaces "wdReplaceAll" par 2 ?

genre :

Replace:=wdReplaceAll

devient :

Replace:=2

Cordialement

Bonjour,

Ci-joint une démo de création d'un .doc à partir d'Excel. Le code est commenté et propose plusieurs type d'insertion (paragraphe, tableau, signet, logo, titre, ...). Le fichier généré est enregistré dans "Mes document\Word" avec un nom horodaté.

Pierre

142creer-doc-word.xlsm (35.53 Ko)

Salut,

Merci, je vais regarder ça de plus près et si je n'arrive pas a en tirer quelque chose je vous dit

Re,

Bon finalement j'ai réussi à faire ce que je voulez. Il me reste cependant une petit chose pour laquelle j'aimerai vous solliciter

-> Tout fonctionne comme je veux, sauf que quand mon fichier word est créé il est censé s'ouvrir, ce qu'il fait.

Le problème c'est que quand il s'ouvre il ne s'affiche pas .. il reste en tâche de fond jusqu'à ce que je le sélectionne dans ma barre de tâche.

Merci beaucoup pour votre temps et vos compétences

Sub article()

'Récupération de l'année
Dim ann As String
ann = Range("A1").Value
'Récupération du mois
Dim mois As String
mois = Range("C1").Value
'Récupération du nom de l'article
Dim article As String
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
Selection.Offset(0, -4).Select
article = ActiveCell.Value
'Récupération du rédacteur
Dim redacteur As String
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
Selection.Offset(0, -2).Select
redacteur = ActiveCell.Value
'Chemin d'accès
Dim Chemin As String
Chemin = ("C:\Users\Archimed-Eval\Desktop\TestBIP")
'Destination du document
Dim dest As String
dest = (Chemin & "\" & ann & "\" & mois & "\" & redacteur)

Dim Txt As String
Txt = Dir(dest & "\" & article & ".docx")

  On Error Resume Next
MkDir Chemin & "\" & ann
MkDir Chemin & "\" & ann & "\" & mois
MkDir Chemin & "\" & ann & "\" & mois & "\" & redacteur
On Error GoTo 0

Dim adres As String
adres = (Chemin & "\" & ann & "\" & mois & "\" & redacteur)

If Txt = "" Then 'ici je veux que si le document n'existe pas il se créé
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Add
WordDoc.Application.ActiveDocument.SaveAs (dest & "\" & article & ".docx")
WordApp.Application.Quit

Else 'ici le document s'ouvre car il existait déjà.

Set appWrd = CreateObject("Word.Application")
    appWrd.Visible = True
    Set docword = appWrd.Documents.Open(dest & "\" & article & ".docx")
    docword.Content.Find.Execute
Set docword2 = appWrd.Documents.Activate(dest & "\" & article & "\" & ".docx")
    docword2.Content.Find.Execute
End If
End Sub

Hello,

t'as laissé tombé la recherche du mot "article" ?

Sinon, essaye avec ce genre de choses :

  appWrd.Visible = True
  appWrd.WindowState = 1
  appWrd.Activate

Non Zohnya, Regarde bien sa y est toujours avec la variable "Txt".

Merci pour ta réponse j'avais effectivement trouvé sur un forum Access bizarrement.

Voici la solution !

Sub article()

'Récupération de l'année
Dim ann As String
ann = Range("A1").Value
'Récupération du mois
Dim mois As String
mois = Range("C1").Value
'Récupération du nom de l'article
Dim article As String
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
Selection.Offset(0, -4).Select
article = ActiveCell.Value
'Récupération du rédacteur
Dim redacteur As String
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
Selection.Offset(0, -2).Select
redacteur = ActiveCell.Value
'Chemin d'accès
Dim Chemin As String
Chemin = ("C:\Users\Archimed-Eval\Desktop\TestBIP")
'Destination du document
Dim dest As String
dest = (Chemin & "\" & ann & "\" & mois & "\" & redacteur)
'Emplacement du fichier sur le réseau
Dim Txt As String
Txt = Dir(dest & "\" & article & ".docx")

On Error Resume Next
MkDir Chemin & "\" & ann
MkDir Chemin & "\" & ann & "\" & mois
MkDir Chemin & "\" & ann & "\" & mois & "\" & redacteur
On Error GoTo 0

If Txt = "" Then 'ici je veux que si le document n'existe pas il se créé
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.documents.Add
WordDoc.Application.ActiveDocument.SaveAs (dest & "\" & article & ".docx")
Set docword = WordApp.documents.Open(dest & "\" & article & ".docx")
    docword.Content.Find.Execute
    WordApp.Activate

Else 'ici le document s'ouvre car il existait déjà.

Set appWrd = CreateObject("Word.Application")
    appWrd.Visible = True
    Set docword = appWrd.documents.Open(dest & "\" & article & ".docx")
    docword.Content.Find.Execute
    appWrd.Activate
End If
End Sub

Hmm tu as du mal me comprendre.

je parlais de

docword.Content.Find.Execute

qui a remplacé

docword.Content.Find.Execute FindText:="Article", ReplaceWith:=article, Replace:=wdReplaceAll

Du coup je me demandais si tu avais changé ce que tu voulais. C'est tout (j'ai du mal a trouver ce que fait docword.Content.Find.Execute sans aucun arguments).

(simple curiosité enfaite)

Ahh oui, sa j'ai abandonné. Enfin pas vraiment, je part en fait d'un fichier vide puisque tout est à écrire dedans de toute manière.

Le but aurait été simplement de renseigner le titre de l'article .. je pense pas que sa puisse fatigué le rédacteur de le faire manuellement

Mais oui j'ai supprimé ça.

bhaa.. ça marche comme ça si jamais (en remplaçant le Replace par Replace :=2)

docword.Content.Find.Execute FindText:="Article", ReplaceWith:="articlebtw", Replace:=2

Oui j'ai pas essayé et je t'ai pas répondu du coup, excuse moi ^^.

Et tu peux m'expliquer pourquoi sa marche comme ça ? Mdr.

Moi j'avais déjà réalisé une macro auparavant qui fonctionner avec "wdreplaceall" (truc du genre comme j'avais écris précédemment), et sa fonctionner très bien bizarrement.

Alors. J'avais constaté ça quand j'avais travaillé sur du Pilotage Excel depuis Word.

Mais je crois que c'est une question de référence à ajouter.

Si t'ajoutes pas la référence, c'est obligé d'utiliser le numéro plutôt que le nom. (je crois que c'est ça)

par exemple : pour WdReplace :

https://msdn.microsoft.com/en-us/library/bb238124(v=office.12).aspx

en générale tu tapes le nom suivit de "enumeration" sur google, et tu tombes sur le MSDN qui te donne le numéro correspondant.

voilà voilà.

Ah oui, bien vu. C'est vrai je me souviens avoir du activer une référence.

C'est toujours bon à savoir ! Merci pour ton éclairage

Rechercher des sujets similaires à "creer ouvrir document word"