Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2011, 19h01   #1
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
Par défaut Macro pour enregistrer Page Web

Bonsoir,

j'ai fait une macro pour enregistrer une page web :

Code :
1
2
3
4
5
6
7
8
9
10
11
Dim MyText2 as String
Dim MyText3 as String
MyText2 = "http://www.nomdusite.com"
Documents.Open fileName:=MyText2    ' on ouvre la page web    
     ChangeFileOpenDirectory "C:\Users\MyName\Desktop\Mon Dossier"
    ActiveDocument.SaveAs fileName:=MyText3, FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
        :=False, SaveNativePictureFormat:=True, SaveFormsData:=False, _
        SaveAsAOCELetter:=False    
        ActiveDocument.Close
Lorsqu'il y a une erreur d'orthographe dans l'adresse du site, il apparait une erreur :
Error 5174
Fichier introuvable
(http://www.nomdusite.com)
J'aimerai savoir quel code je dois appliquer pour gérer l'Error.
Merci d'avance de votre aide.
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 19h10   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 343
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 343
Points : 29 254
Points : 29 254
Salut,

__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 19h34   #3
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
Merci,
mais comme je débute, je ne sais pas comment utiliser ce code. Pourriez-vous être plus explicite?
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 19h37   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 343
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 343
Points : 29 254
Points : 29 254
Salut,

Ce code permet d'ignorer toutes les erreurs générées par le code.

Les lignes de code sont lues dans l'ordre où elles sont écrites.

Plus tu mets tôt cette ligne dans ta procédure, plus elle agira tôt.

Donc, je dirais jute derrière la déclaration de la procédure.

Code :
1
2
3
4
Sub Maprocedure()
On Error Resume Next
...
...
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 20h01   #5
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
Merci, j'ai déja compris ce premier point. Ma macro en fait enregistre plusieurs pages web à partir d'une liste. Si une adresse est mauvaise dans la liste, j'aimerai que la procédure continue en passant à l'adresse suivante. En rajoutant juste On Error Resume Next, je stoppe la macro. Comment puis-je faire pour sauter l'étape de l'enregistrement de la page qui ne s'ouvre pas et passer à Next i (l'adresse suivante)?
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 20h29   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 343
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 343
Points : 29 254
Points : 29 254
Salut,

en utilisant On Error Resume Next, c'est tout le contraire, l'erreur est ignorée et la macro continue.

Au vu de ton commentaire, tu n'as pas essayé.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 20h56   #7
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
Je confirme que j'ai essayé plusieurs fois. J'ai une page vierge sur laquelle je colle mes liens. Au milieu, y'en a un qu'est pas bon. La macro stoppe toujours dès qu'elle exécute ce lien, et me propose même d'enregistrer les modifs de la page contenant les liens.
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 21h08   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 343
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 343
Points : 29 254
Points : 29 254
Salut,

Le code que j'ai donné n'est à utiliser que lorsqu'on maîtrise son code.
Comme il ignore les erreurs et qu'il continue sur l'instruction suivante, on peut faire planter la machine.

C'est que dans l'exécution de ton code, une autre ligne importante est ignorée et que Word demande une action à l'utilisateur.

Essaie en pas à pas pour voir ce qui se passe.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 21h25   #9
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
J'ai essayé d'utiliser On Error GoTo erreur pour faire en sorte que lorsque la page ne peux pas s'ouvrir, il saute l'étape où il faut l'enregistrer :

Code :
1
2
3
4
5
6
7
8
9
10
11
    Documents.Open fileName:=MyText2 ' on ouvre la page web    
On Error GoTo erreur
     ChangeFileOpenDirectory "C:\Users\MyName\Desktop\Mon Dossier"
    ActiveDocument.SaveAs fileName:=MyText3, FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
        :=False, SaveNativePictureFormat:=True, SaveFormsData:=False, _
        SaveAsAOCELetter:=False    
        ActiveDocument.Close        
erreur:                      
Next i
Mais y'a toujours une erreur d'exécution 5174.
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 21h30   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 343
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 343
Points : 29 254
Points : 29 254
Salut,

Le On Error se met au début de la procédure.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 21h41   #11
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
Merci, on dirait que ça va mieux maintenant. Mais il reste un problème dès qu'il apparait une 2ème adresse fausse. On dirait qu'il ne tolère pas plus d'une seule erreur !
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 11h10   #12
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
Bonjour,
mon code macro peut être recopié tel quel pour être testé :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Sub A111111EnregistrerPagesWeb()
' A partir d'une page word où ne sont enregistrées que des adresses de pages web, enregistrer ces même pages web au format ".docx"
' On Error Resume Next
 
On Error GoTo erreur
Dim MyText0 As String
MyText0 = "http://"
Dim count As Integer
Selection.HomeKey Unit:=wdStory          ' place le curseur en debut du document
count = 0
' on détermine le nombre d'adresse dans la page
With ActiveDocument.Content.Find
Do While .Execute(FindText:=MyText0, Format:=False, MatchCase:=False, MatchWholeWord:=True) = True
count = count + 1
Loop
End With
Dim i As Integer
Dim MyText1 As String
Dim MyText2 As String
Dim MyText3 As String
Selection.HomeKey Unit:=wdStory          ' place le curseur en debut du document
i = 1
For i = 1 To count
Selection.Collapse Direction:=wdCollapseStart
With Selection.Find
    .Forward = True
    .ClearFormatting
    .MatchWholeWord = True
    .MatchCase = False
    .Wrap = wdFindContinue
    .Execute FindText:="http://"    
    End With    
    Selection.EndKey Unit:=wdLine          ' place le curseur en fin du document
    Selection.TypeText Text:="&&&"    
Next i  
For i = 1 To count
' On sélectionne l'adresse htm qui commence par "http://" et se termine par "&&&"
With Selection.Find
.ClearFormatting
.Text = "http://"
.MatchWildcards = 0
.Forward = 1
.Replacement.Text = ""
.Replacement.ClearFormatting
.Execute ' recherche du mot1
.Text = "&&&"
Selection.Extend ' etendre la selection
.Execute ' atteindre le mot2
End With
MyText1 = Selection.Text
' On sélectionne la page à ouvrir et on lui attribue un nom d'enregistrement
MyText2 = Replace(MyText1, "&&&", "")
MyText3 = "MaPageWeb"
Selection.Delete
    Documents.Open fileName:=MyText2 ' on ouvre la page web    
' ChangeFileOpenDirectory "C:\Users\MyName\Desktop\Mon dossier" 
     ActiveDocument.SaveAs fileName:=MyText3 & i, FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles:=True, _
        WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
         SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False
        ActiveDocument.Close       
erreur:
Next i
End Sub
Si vous tapez une adresse fausse, ça marche. Si vous en tapez 2, ça fait une Error.
OK

Plantage!
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h23.


 
 
 
 
Partenaires

Hébergement Web