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 :

[W-03][W-07] Macro Word 2003 ne fonctionnant plus sur Word 2007


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [W-03][W-07] Macro Word 2003 ne fonctionnant plus sur Word 2007
    Bonjour,
    Cette excellent macro permettant de lancer plusieurs macros à la fois sur des fichiers situés dans différents répertoires ne fonctionne plus sur Word 2007, la propriété FileSearch (Application.FileSearch) n'étant plus supportée par ce dernier.
    Apparemment, il faut utiliser la fonction Dir ou Dir$ à la place.
    Est-ce que le code peut être adapté facilement ?
    Merci d'avance.
    Dave

    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
    Sub MacroRunner()
     
    Dim folderList() As String
    Dim macroList() As String
    Dim oFolderPath As String
    Dim macroName As String
    Dim i As Long, j As Long, k As Long
    Dim oDoc As Document
     
        Application.ScreenUpdating = False
        ReDim folderList(0)
        ReDim macroList(0)
        Do
            With Dialogs(wdDialogCopyFile)
                If .Display <> 0 Then
                    oFolderPath = .Directory
                    folderList(UBound(folderList)) = oFolderPath
                    ReDim Preserve folderList(UBound(folderList) + 1)
                  Else
                    MsgBox "Cancelled by User"
                    Exit Sub
                End If
            End With
        Loop While MsgBox("Do you want to process an additional folder?", vbYesNo + vbQuestion, _
        "More Folders?") = vbYes
        Do
            macroName = InputBox("Enter the name of the macro that you want to run. CodeZapper, ToggleHideParaNos...", "Macro Name", "CodeZapper")
            If Len(macroName) = 0 Then
                MsgBox ("Nothing entered. Exiting routine.")
                Exit Sub
              Else
                macroList(UBound(macroList)) = macroName
                ReDim Preserve macroList(UBound(macroList) + 1)
            End If
        Loop While MsgBox("Do you want to run an additional macro?", vbYesNo + vbQuestion, _
        "More macros?") = vbYes
     
        For i = 0 To UBound(folderList) - 1
            With Application.FileSearch
                .NewSearch
                .LookIn = folderList(i)
                .SearchSubFolders = False
                .FileType = msoFileTypeAllFiles
                If Not .Execute() = 0 Then
                    For j = 1 To .FoundFiles.Count
                        Set oDoc = Documents.Open(.FoundFiles(j))
                        For k = 0 To UBound(macroList) - 1
                            Application.Run macroList(k)
                        Next k
                        ActiveDocument.Save
                        ActiveDocument.Close
                        Set oDoc = Nothing
                    Next j
                  Else
                    MsgBox "No files in specified folder(s)"
                End If
            End With
        Next i
        Application.ScreenUpdating = True
        MsgBox "All Done"
    End Sub

  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
    Bonjour et bienvenue sur les forums Office de DVP.

    Effectivement, la fonction FileSearch est disparue avec 2007.

    Je pense que passer par FileSystemObject est plus efficient et pour choisir les fichiers ou répertoire FileDialog devrait aussi te venir en aide.
    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 !

  3. #3
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    bonsoir,

    tiens j'ai l'impression de me répéter j'ai donné la même réponse que sur le forum excel il y as 5 minutes.


    http://silkyroad.developpez.com/vba/classefilesearch/


    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je pense que passer par FileSystemObject est plus efficient et pour choisir les fichiers ou répertoire FileDialog devrait aussi te venir en aide.
    Merci. Peut-on donc faire un échange standard des lignes concernées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Application.FileSearch
    .NewSearch
    .LookIn = folderList(i)
    .SearchSubFolders = False
    .FileType = msoFileTypeAllFiles
    ou faut-il tout reprendre ? J'avoue que j'ai du mal à suivre le code d'origine.

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je suppose qu'en exécutant la macro tu comprends ce qu'elle réalise... Il serait donc bien que tu précises ce sur quoi tu achoppes Quelle boucle te pose question ? La première ? La seconde ? Les boucles For ?
    A+

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    C'est la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Application.FileSearch
    car FileSearch n'existe plus dans Word 2007.

    Dave

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je répondais à ça :
    J'avoue que j'ai du mal à suivre le code d'origine.
    Pour FileSearch, JackOuYA t'a passé une adresse où il est possible de charger un xla à charger et à valider dans Excel (-> Outils -> Macros complémentaires) et l'url t'indique la manière de procéder.
    Ce que fait la boucle impliquant Filesearch ? Il recherche les fichiers dans la liste des répertoires sélectionnés dans la première boucle, ouvre ces fichiers et exécute la/les macro/s qu'il contient et dont tu as également donné la liste dans la boucle Do While précédente.
    Bonne journée

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci Ouskel'n'or et JackOuYA.
    Le chargement de ce xla (dans un module Word ?) permet-il donc de faire tourner sur Word 2007 les macros écrites pour Word 2003 et faisant appel à Filesearch, sans modifier le code de celles-ci ?
    J'essaie de saisir son but et son mode de fonctionnement.
    Dave

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Le chargement de ce xla ... sans modifier le code de celles-ci ?
    Non, tu devras l'adapter.
    Bonne soirée

Discussions similaires

  1. Macro Excel 2003 ne fonctionne plus sous 2007/2010
    Par leloup84 dans le forum Général VBA
    Réponses: 0
    Dernier message: 13/11/2013, 19h41
  2. [AC-2010] Macro commande pour envoyer un formulaire sur Word
    Par emilie27 dans le forum IHM
    Réponses: 21
    Dernier message: 16/04/2012, 16h53
  3. [WD-2007] Fonction AutoClose ne fonctionne plus sous Word 2007
    Par iloyer dans le forum VBA Word
    Réponses: 2
    Dernier message: 20/05/2009, 00h32
  4. Réponses: 1
    Dernier message: 09/01/2009, 20h28
  5. Réponses: 3
    Dernier message: 16/12/2005, 15h30

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