IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Macro pour enregistrer Page Web


Sujet :

VBA Word

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut Macro pour enregistrer Page Web
    Bonsoir,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,


  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Merci,
    mais comme je débute, je ne sais pas comment utiliser ce code. Pourriez-vous être plus explicite?

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Maprocedure()
    On Error Resume Next
    ...
    ...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    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)?

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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é.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    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.

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Le On Error se met au début de la procédure.

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    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 !

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Bonjour,
    mon code macro peut être recopié tel quel pour être testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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!

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/05/2011, 18h19
  2. macro pour enregistrer sous
    Par macromega dans le forum Général VBA
    Réponses: 2
    Dernier message: 03/05/2007, 19h17
  3. hébergeur free pour mes pages web
    Par ziz2005 dans le forum Hébergement
    Réponses: 2
    Dernier message: 19/03/2007, 12h00
  4. Jauge dynamique pour ma page web
    Par rohstev dans le forum ASP.NET
    Réponses: 4
    Dernier message: 13/02/2007, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo