Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fermer l'application Word

2 réponses
Avatar
maxou07
Bonjour,
Voila, j'ai fait une macro vba (avec de l'aide) qui s'exécute à l'ouverture
d'un document; elle remplace des mots par d'autres venant d'un fichier .ini.
une fois les mots remplacés, j'enregistre dans un nouveau document que je
referme dans la foulée mais je n'arrive pas à fermer Word.
Pouvez-vous m'aider s'il vous plait ? je vous mets le code de la macro
ci-dessous; Merci d'avance.
Maxou 07
'*****************
'Déclaration des API à retranscrire sans erreur
'*****************
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias
"GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias
"WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileSection& Lib "kernel32" Alias
"GetPrivateProfileSectionA" _
(ByVal lpAppName As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String)

Public Function ExisteSectionIni(Section As String, Fich As String) As
Boolean
Dim Retour As Long
Dim Valeur As String

Valeur = String(32767, 0) '32767 est la longueur maxi que peut avoir
une section
' Retour représente la longueur de la section, donc si elle est supérieure à
0, elle existe
Retour = GetPrivateProfileSection(Section, Valeur, 32766, Fich)
If Retour > 0 Then ExisteSectionIni = True
End Function

Public Function LireCleIni(Section As String, Cle As String, Fich As String)
As String
Dim Retour As Long
Dim Valeur As String

Valeur = String(256, 0) 'ici on considère qu'une valeur ne sera pas de
longueur supérieur à 256
' si vous travaillez avec des valeurs de grandes longueur augmentez ce
chiffre.
Retour = GetPrivateProfileString(Section, Cle, "", Valeur, 255, Fich)
If Retour > 0 Then 'renvoie la longueur de la valeur
Valeur = Left(Valeur, Retour) 'enlève les caractères en trop
Else
Valeur = "" 'elle n'existe pas
End If
LireCleIni = Valeur
End Function

Sub AutoOpen()
'*******************************
' nom du doc ayant la macro
'*******************************
If ActiveDocument.Name = "essai_pub.doc" Then

' on déclare toutes les variables que l'on va utiliser
Dim NomChantier As String, NumeroChantier As String

NomChantier = LireCleIni("LISTE", "NomChantier", "C:\Mes
Documents\DB.ini")
With Selection.Find
.Text = "||NomChantier||"
.Replacement.Text = NomChantier
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
End With
Selection.Find.Execute Replace:=wdReplaceAll


NumeroChantier = LireCleIni("LISTE", "NumeroChantier", "C:\Mes
Documents\DB.ini")
With Selection.Find
.Text = "||NumeroChantier||"
.Replacement.Text = NumeroChantier
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
End With
Selection.Find.Execute Replace:=wdReplaceAll




ActiveDocument.SaveAs FileName:= _
"nouvel_essai.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="",
AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False,
EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False

Documents("nouvel_essai.doc").Close SaveChanges:=wdSaveChanges
Word.Application.Quit
End If

End Sub

2 réponses

Avatar
Pierre TISSENDIER
Bonjour Maxou,
Essaye de mettre "application.quit" dans l'évènement Document_Close je crois
que c'est mieux
@+

"maxou07" a écrit dans le message de news:
4692642d$0$27374$
Bonjour,
Voila, j'ai fait une macro vba (avec de l'aide) qui s'exécute à
l'ouverture
d'un document; elle remplace des mots par d'autres venant d'un fichier
.ini.
une fois les mots remplacés, j'enregistre dans un nouveau document que je
referme dans la foulée mais je n'arrive pas à fermer Word.
Pouvez-vous m'aider s'il vous plait ? je vous mets le code de la macro
ci-dessous; Merci d'avance.
Maxou 07
'*****************
'Déclaration des API à retranscrire sans erreur
'*****************
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias
"GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias
"WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileSection& Lib "kernel32" Alias
"GetPrivateProfileSectionA" _
(ByVal lpAppName As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String)

Public Function ExisteSectionIni(Section As String, Fich As String) As
Boolean
Dim Retour As Long
Dim Valeur As String

Valeur = String(32767, 0) '32767 est la longueur maxi que peut avoir
une section
' Retour représente la longueur de la section, donc si elle est supérieure
à
0, elle existe
Retour = GetPrivateProfileSection(Section, Valeur, 32766, Fich)
If Retour > 0 Then ExisteSectionIni = True
End Function

Public Function LireCleIni(Section As String, Cle As String, Fich As
String)
As String
Dim Retour As Long
Dim Valeur As String

Valeur = String(256, 0) 'ici on considère qu'une valeur ne sera pas de
longueur supérieur à 256
' si vous travaillez avec des valeurs de grandes longueur augmentez ce
chiffre.
Retour = GetPrivateProfileString(Section, Cle, "", Valeur, 255, Fich)
If Retour > 0 Then 'renvoie la longueur de la valeur
Valeur = Left(Valeur, Retour) 'enlève les caractères en trop
Else
Valeur = "" 'elle n'existe pas
End If
LireCleIni = Valeur
End Function

Sub AutoOpen()
'*******************************
' nom du doc ayant la macro
'*******************************
If ActiveDocument.Name = "essai_pub.doc" Then

' on déclare toutes les variables que l'on va utiliser
Dim NomChantier As String, NumeroChantier As String

NomChantier = LireCleIni("LISTE", "NomChantier", "C:Mes
DocumentsDB.ini")
With Selection.Find
.Text = "||NomChantier||"
.Replacement.Text = NomChantier
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
End With
Selection.Find.Execute Replace:=wdReplaceAll


NumeroChantier = LireCleIni("LISTE", "NumeroChantier", "C:Mes
DocumentsDB.ini")
With Selection.Find
.Text = "||NumeroChantier||"
.Replacement.Text = NumeroChantier
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
End With
Selection.Find.Execute Replace:=wdReplaceAll




ActiveDocument.SaveAs FileName:= _
"nouvel_essai.doc", FileFormat:= _
wdFormatDocument, LockComments:úlse, Password:="",
AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:úlse,
EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:úlse, SaveFormsData:úlse, _
SaveAsAOCELetter:úlse

Documents("nouvel_essai.doc").Close SaveChanges:=wdSaveChanges
Word.Application.Quit
End If

End Sub




Avatar
maxou07
Merci, c'était bien çà ; je suis très con des fois




"Pierre TISSENDIER" a écrit dans le
message de news:
Bonjour Maxou,
Essaye de mettre "application.quit" dans l'évènement Document_Close je
crois

que c'est mieux
@+

"maxou07" a écrit dans le message de news:
4692642d$0$27374$
Bonjour,
Voila, j'ai fait une macro vba (avec de l'aide) qui s'exécute à
l'ouverture
d'un document; elle remplace des mots par d'autres venant d'un fichier
.ini.
une fois les mots remplacés, j'enregistre dans un nouveau document que
je


referme dans la foulée mais je n'arrive pas à fermer Word.
Pouvez-vous m'aider s'il vous plait ? je vous mets le code de la macro
ci-dessous; Merci d'avance.
Maxou 07
'*****************
'Déclaration des API à retranscrire sans erreur
'*****************
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias
"GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias
"WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileSection& Lib "kernel32" Alias
"GetPrivateProfileSectionA" _
(ByVal lpAppName As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String)

Public Function ExisteSectionIni(Section As String, Fich As String) As
Boolean
Dim Retour As Long
Dim Valeur As String

Valeur = String(32767, 0) '32767 est la longueur maxi que peut avoir
une section
' Retour représente la longueur de la section, donc si elle est
supérieure


à
0, elle existe
Retour = GetPrivateProfileSection(Section, Valeur, 32766, Fich)
If Retour > 0 Then ExisteSectionIni = True
End Function

Public Function LireCleIni(Section As String, Cle As String, Fich As
String)
As String
Dim Retour As Long
Dim Valeur As String

Valeur = String(256, 0) 'ici on considère qu'une valeur ne sera pas
de


longueur supérieur à 256
' si vous travaillez avec des valeurs de grandes longueur augmentez ce
chiffre.
Retour = GetPrivateProfileString(Section, Cle, "", Valeur, 255,
Fich)


If Retour > 0 Then 'renvoie la longueur de la valeur
Valeur = Left(Valeur, Retour) 'enlève les caractères en trop
Else
Valeur = "" 'elle n'existe pas
End If
LireCleIni = Valeur
End Function

Sub AutoOpen()
'*******************************
' nom du doc ayant la macro
'*******************************
If ActiveDocument.Name = "essai_pub.doc" Then

' on déclare toutes les variables que l'on va utiliser
Dim NomChantier As String, NumeroChantier As String

NomChantier = LireCleIni("LISTE", "NomChantier", "C:Mes
DocumentsDB.ini")
With Selection.Find
.Text = "||NomChantier||"
.Replacement.Text = NomChantier
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
End With
Selection.Find.Execute Replace:=wdReplaceAll


NumeroChantier = LireCleIni("LISTE", "NumeroChantier", "C:Mes
DocumentsDB.ini")
With Selection.Find
.Text = "||NumeroChantier||"
.Replacement.Text = NumeroChantier
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
End With
Selection.Find.Execute Replace:=wdReplaceAll




ActiveDocument.SaveAs FileName:= _
"nouvel_essai.doc", FileFormat:= _
wdFormatDocument, LockComments:úlse, Password:="",
AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:úlse,
EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:úlse, SaveFormsData:úlse, _
SaveAsAOCELetter:úlse

Documents("nouvel_essai.doc").Close SaveChanges:=wdSaveChanges
Word.Application.Quit
End If

End Sub