OVH Cloud OVH Cloud

Excel et Publisher

6 réponses
Avatar
v
Bonjour,

J'ai une application Excel qui fait appel à Word, donc j'utilise
Word.Application
Mais avec Publisher ?


Parce que j'ai un problème de code si je veux remplacer "word" en
"publisher" :




Private Sub CommandButton3_Click()


Dim monApp As Publisher.Application

Dim lettre As Publisher.Document


Dim myRange As Range
Dim ref As String
Dim nomFic As String
Dim reponse1 As Integer
Dim reponse2 As Integer
Set myRange = Excel.Range("A1", "Y8")
g = 2
i = 2
reponse1 = MsgBox("Voulez vous videz ce tableux a la fin de
l'application ? ", 4)
reponse = MsgBox("Voulez vous (en plus de les créer) imprimer toutes ces
lettres maintenant?", 4, "IMPRESSION")
'on recupere la premiere ref courrier
firstRef = Cells(2, 17).Value
'tant que tout ouvrefic pas parcouru
Do While Not Cells(i, 2).Value = ""
firstRef = Cells(g, 17).Value
lastRef = Cells(i, 17).Value
'tant que meme ref courrier on passe a la ligne suivante
Do While firstRef = lastRef
i = i + 1
lastRef = Cells(i, 17).Value
Loop
'on ouvre la lettre type ref
Set monApp = New Publisher.Application
Set lettre = monApp.Documents("C:\PUBLIPOST\relance\" & firstRef &
".pub")


'on fusionne
With lettre.MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource "C:\PUBLIPOST\ouvrefic2.xls", ReadOnly:=True,
Connection:="myRange"
'on selectionne que les ligne qui nous interresse
.DataSource.FirstRecord = g - 1
.DataSource.LastRecord = i - 2
.Destination = wdSendToNewDocument
.Execute pause:=True
'on sauve au nom de la lettre ref
.Application.ActiveDocument.SaveAs ("C:\PUBLIPOST\resultat\" &
firstRef & ".pub")
End With
With lettre.MailMerge
If reponse = 6 Then
.Application.ActiveDocument.PrintOut
End If
.Application.ActiveDocument.Close
End With
monApp.Documents.Close
g = i
Loop
MsgBox "Toute les relances ont été générées."
If reponse1 = 6 Then
'on vide ouvrefic
Range("A2", "Y" & i & "").Value = ""
MsgBox "Toutes les valeurs ont été supprimées."
End If





End Sub

Private Sub CommandButton4_Click()
'Tri automatique sur une colonne déterminée

Cells.Select

'Sélection sur la "Référence Courrier"
Selection.Sort Key1:=Range("Q2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

'Information
MsgBox "Opération terminée"

End Sub

6 réponses

Avatar
JLG
Bonjour

faite un essai en mettant MSPUB.Application



--
Antispam
retirer "toto" de mon adresse E-mail




v wrote:
Bonjour,

J'ai une application Excel qui fait appel à Word, donc j'utilise
Word.Application
Mais avec Publisher ?


Parce que j'ai un problème de code si je veux remplacer "word" en
"publisher" :




Private Sub CommandButton3_Click()


Dim monApp As Publisher.Application

Dim lettre As Publisher.Document


Dim myRange As Range
Dim ref As String
Dim nomFic As String
Dim reponse1 As Integer
Dim reponse2 As Integer
Set myRange = Excel.Range("A1", "Y8")
g = 2
i = 2
reponse1 = MsgBox("Voulez vous videz ce tableux a la fin de
l'application ? ", 4)
reponse = MsgBox("Voulez vous (en plus de les créer) imprimer toutes
ces lettres maintenant?", 4, "IMPRESSION")
'on recupere la premiere ref courrier
firstRef = Cells(2, 17).Value
'tant que tout ouvrefic pas parcouru
Do While Not Cells(i, 2).Value = ""
firstRef = Cells(g, 17).Value
lastRef = Cells(i, 17).Value
'tant que meme ref courrier on passe a la ligne suivante
Do While firstRef = lastRef
i = i + 1
lastRef = Cells(i, 17).Value
Loop
'on ouvre la lettre type ref
Set monApp = New Publisher.Application
Set lettre = monApp.Documents("C:PUBLIPOSTrelance" & firstRef &
".pub")


'on fusionne
With lettre.MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource "C:PUBLIPOSTouvrefic2.xls", ReadOnly:=True,
Connection:="myRange"
'on selectionne que les ligne qui nous interresse
.DataSource.FirstRecord = g - 1
.DataSource.LastRecord = i - 2
.Destination = wdSendToNewDocument
.Execute pause:=True
'on sauve au nom de la lettre ref
.Application.ActiveDocument.SaveAs ("C:PUBLIPOSTresultat" &
firstRef & ".pub")
End With
With lettre.MailMerge
If reponse = 6 Then
.Application.ActiveDocument.PrintOut
End If
.Application.ActiveDocument.Close
End With
monApp.Documents.Close
g = i
Loop
MsgBox "Toute les relances ont été générées."
If reponse1 = 6 Then
'on vide ouvrefic
Range("A2", "Y" & i & "").Value = ""
MsgBox "Toutes les valeurs ont été supprimées."
End If





End Sub

Private Sub CommandButton4_Click()
'Tri automatique sur une colonne déterminée

Cells.Select

'Sélection sur la "Référence Courrier"
Selection.Sort Key1:=Range("Q2"), Order1:=xlAscending,
Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal

'Information
MsgBox "Opération terminée"

End Sub


Avatar
JLG
Faire un essai avec MSPUB.Application
sinon, voir sur le forum Excel

--
Antispam
retirer "toto" de mon adresse E-mail




v wrote:
Bonjour,

J'ai une application Excel qui fait appel à Word, donc j'utilise
Word.Application
Mais avec Publisher ?


Parce que j'ai un problème de code si je veux remplacer "word" en
"publisher" :




Private Sub CommandButton3_Click()


Dim monApp As Publisher.Application

Dim lettre As Publisher.Document


Dim myRange As Range
Dim ref As String
Dim nomFic As String
Dim reponse1 As Integer
Dim reponse2 As Integer
Set myRange = Excel.Range("A1", "Y8")
g = 2
i = 2
reponse1 = MsgBox("Voulez vous videz ce tableux a la fin de
l'application ? ", 4)
reponse = MsgBox("Voulez vous (en plus de les créer) imprimer toutes
ces lettres maintenant?", 4, "IMPRESSION")
'on recupere la premiere ref courrier
firstRef = Cells(2, 17).Value
'tant que tout ouvrefic pas parcouru
Do While Not Cells(i, 2).Value = ""
firstRef = Cells(g, 17).Value
lastRef = Cells(i, 17).Value
'tant que meme ref courrier on passe a la ligne suivante
Do While firstRef = lastRef
i = i + 1
lastRef = Cells(i, 17).Value
Loop
'on ouvre la lettre type ref
Set monApp = New Publisher.Application
Set lettre = monApp.Documents("C:PUBLIPOSTrelance" & firstRef &
".pub")


'on fusionne
With lettre.MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource "C:PUBLIPOSTouvrefic2.xls", ReadOnly:=True,
Connection:="myRange"
'on selectionne que les ligne qui nous interresse
.DataSource.FirstRecord = g - 1
.DataSource.LastRecord = i - 2
.Destination = wdSendToNewDocument
.Execute pause:=True
'on sauve au nom de la lettre ref
.Application.ActiveDocument.SaveAs ("C:PUBLIPOSTresultat" &
firstRef & ".pub")
End With
With lettre.MailMerge
If reponse = 6 Then
.Application.ActiveDocument.PrintOut
End If
.Application.ActiveDocument.Close
End With
monApp.Documents.Close
g = i
Loop
MsgBox "Toute les relances ont été générées."
If reponse1 = 6 Then
'on vide ouvrefic
Range("A2", "Y" & i & "").Value = ""
MsgBox "Toutes les valeurs ont été supprimées."
End If





End Sub

Private Sub CommandButton4_Click()
'Tri automatique sur une colonne déterminée

Cells.Select

'Sélection sur la "Référence Courrier"
Selection.Sort Key1:=Range("Q2"), Order1:=xlAscending,
Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal

'Information
MsgBox "Opération terminée"

End Sub


Avatar
v
JLG a écrit :
Faire un essai avec MSPUB.Application
sinon, voir sur le forum Excel




Ca ne marche pas

On peut vraiment ouvrir un fichier .pub dans un code VBA se trouvant sur
Excel ?
Avatar
JLG
je ne sais pas;, le mieux est de poser la question sur le forum Excel

news://msnews.microsoft.com/microsoft.public.fr.excel


--
Antispam
retirer "toto" de mon adresse E-mail




v wrote:
JLG a écrit :
Faire un essai avec MSPUB.Application
sinon, voir sur le forum Excel




Ca ne marche pas

On peut vraiment ouvrir un fichier .pub dans un code VBA se trouvant
sur Excel ?


Avatar
Clément Marcotte
Bonjour,

Il l'a déjà fait. Il voudrait prendre une macro qu'il a déjà pour Word,
changer Word pour Publisher à 2 ou 3 places et faire un publitostage dans
Publisher avec cela.

Pourtant je luis ai dit que les modèles d'objets étaient différents. Pour
l'instant, je n'ai pas le temps, de tout refaire sa macro dans Publisher.


"JLG" a écrit dans le message de news:
uyU$
je ne sais pas;, le mieux est de poser la question sur le forum Excel

news://msnews.microsoft.com/microsoft.public.fr.excel


--
Antispam
retirer "toto" de mon adresse E-mail




v wrote:
JLG a écrit :
Faire un essai avec MSPUB.Application
sinon, voir sur le forum Excel




Ca ne marche pas

On peut vraiment ouvrir un fichier .pub dans un code VBA se trouvant
sur Excel ?






Avatar
Clément Marcotte
Bonjour,

Et puis, si ses "victimes" n'ont pas Publisher, elles vont l'haïr. Alors que
pour Word, il y a au moins la visionneuse...

"JLG" a écrit dans le message de news:
uyU$
je ne sais pas;, le mieux est de poser la question sur le forum Excel

news://msnews.microsoft.com/microsoft.public.fr.excel


--
Antispam
retirer "toto" de mon adresse E-mail




v wrote:
JLG a écrit :
Faire un essai avec MSPUB.Application
sinon, voir sur le forum Excel




Ca ne marche pas

On peut vraiment ouvrir un fichier .pub dans un code VBA se trouvant
sur Excel ?