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

Macros et VBA Excel Discussion :

faire fonctionner macro excel 2007 [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut faire fonctionner macro excel 2007
    bonjour

    je me permet de demander pour un ami qui fonctione sous excel 2007 d'adapter la macro suivante afin de la faire fonctionner sous excel 2007

    voici la macro:
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    '############################################
    '#    Ajouter impérativement la référence   #
    '#   suivante dans Menu Outils/Références   #
    '#                                          #
    '#    Microsoft Forms 2.0 Object Library    #
    '#      C:\WINDOWS\system32\FM20.DLL        #
    '############################################
     
    '### Constantes à adapter ###
    Const AFFICHER_DANS_LISTBOX As Boolean = True  'True si on veut afficher le résultat dans une ListBox
    Const AFFICHER_DANS_FEUILLE As Boolean = False 'True si on veut afficher le résultat dans une nouvelle feuille
    '############################
     
    Const LARGEUR_UF As Double = 320
    Const HAUTEUR_UF As Double = 240
    Const MARGE_UF As Double = 20
     
    Public DataListBox As Variant
     
    Sub RechercheDansClasseurs_2()
    Dim FS As FileSearch
    Dim WB As Workbook
    Dim S As Worksheet
    Dim R As Range
    Dim Recherche
    Dim var
    Dim i&
    Dim k&
    Dim cpt&
    Dim A$
    Dim T()
    Dim bool As Boolean
    Recherche = Application.InputBox( _
      prompt:="Tapez le mot recherché.", _
      Title:="Recherche dans les classeurs des clients", _
      Type:=2)
    If Recherche = False Then Exit Sub
    Set FS = Application.FileSearch
    FS.NewSearch
    FS.LookIn = ThisWorkbook.Path
    FS.FileType = msoFileTypeExcelWorkbooks
    If FS.Execute() = 0 Then Exit Sub
    '--- Si classeur déjà ouvert, on sort ---
    On Error Resume Next
    For i& = 1 To FS.FoundFiles.Count
      If FS.FoundFiles(i&) <> ThisWorkbook.FullName Then
        Err.Clear
        A$ = Mid(FS.FoundFiles(i&), InStrRev(FS.FoundFiles(i&), "\") + 1)
        Set WB = Workbooks(A$)
        If Err = 0 Then
          MsgBox "Le classeur ''" & A$ & "'' est ouvert. Veuillez le fermer."
          Exit Sub
        End If
      End If
    Next i&
    On Error GoTo 0
    '--- Recherche dans les classeurs ---
    Application.ScreenUpdating = False
    For i& = 1 To FS.FoundFiles.Count
      If FS.FoundFiles(i&) <> ThisWorkbook.FullName Then
        Set WB = GetObject(FS.FoundFiles(i&))
        Set S = WB.Sheets(1)
        Set R = S.Range(S.Cells(1, 1), S.Cells(S.[f65536].End(xlUp).Row, 7))
        var = R
        For k& = 1 To UBound(var, 1)
          If Trim(LCase(var(k&, 6))) = Trim(LCase(Recherche)) Then
            cpt& = cpt& + 1
            ReDim Preserve T(1 To 3, 1 To cpt&)
            T(1, cpt&) = WB.Name
            T(2, cpt&) = var(3, 3)
            T(3, cpt&) = Recherche
          End If
        Next k&
        WB.Close False
        Set WB = Nothing
      End If
    Next i&
    Set FS = Nothing
    If cpt& = 0 Then
      MsgBox "Aucune occurence du mot ''" & Recherche & "'' n'a été trouvé."
      Application.ScreenUpdating = True
      Exit Sub
    End If
    '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
      '°°° Inscription du résultat dans une nouvelle feuille °°°
    If AFFICHER_DANS_FEUILLE Then
      Set WB = ThisWorkbook
      Set S = WB.Sheets.Add(after:=WB.Sheets(WB.Sheets.Count))
      Set R = S.Range(S.Cells(2, 1), S.Cells(UBound(T, 2) + 1, UBound(T, 1)))
      R = Application.Transpose(T)
      Set R = S.Range("a1:c1")
      R = Array("CLASSEUR", "CLIENT", "MOT RECHERCHE")
      R.Font.Bold = True
      R.HorizontalAlignment = xlCenter
      R.Interior.ColorIndex = 35
      S.Cells.Columns.AutoFit
    End If
      '°°° Inscription du résultat dans un UserForm ListBox °°°
    If AFFICHER_DANS_LISTBOX Then
      DataListBox = Application.Transpose(T)
      bool = UserForm_aLaVolee
      Application.ScreenUpdating = True
    End If
    '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    Application.ScreenUpdating = True
    End Sub
     
    Private Function UserForm_aLaVolee() As Boolean
    Dim UF As Object
    Dim LB As MSForms.ListBox
    Dim CB As MSForms.CommandButton
    Dim A$
    Dim nbCol&
    Dim i&
    On Error GoTo Erreur
    '--- Crée dynamiquement un UserForm ---
    Set UF = ThisWorkbook.VBProject.VBComponents.Add(3)
    With UF
      .Properties("Caption") = "Mots trouvés"
      .Properties("Height") = HAUTEUR_UF
      .Properties("Width") = LARGEUR_UF
    End With
    '--- Crée le bouton de fermeture ---
    Set CB = UF.Designer.Controls.Add("forms.CommandButton.1")
    With CB
      .Caption = "Fermer"
      .Left = (LARGEUR_UF - CB.Width) / 2
      .Top = HAUTEUR_UF - (3 * MARGE_UF)
    End With
    '--- Crée la ListBox ---
    Set LB = UF.Designer.Controls.Add("forms.ListBox.1")
    With LB
      nbCol& = UBound(DataListBox, 2)
      .Left = MARGE_UF
      .Top = MARGE_UF
      .Height = CB.Top - (2 * MARGE_UF)
      .Width = LARGEUR_UF - (2 * MARGE_UF)
      .ColumnCount = nbCol&
      .BoundColumn = 1
        '°°° Calcul de ColumnWidths °°°
      For i& = 1 To nbCol&
        A$ = A$ & (.Width - nbCol&) \ nbCol& & ";"
      Next i&
      .ColumnWidths = Mid(A$, 1, Len(A$) - 1)
        '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
      .BackColor = &HC0E0FF
      .BorderStyle = fmBorderStyleSingle
    End With
        '°°° Ajout du code évènementiel °°°
    A$ = "Sub CommandButton1_Click()" & _
      vbCrLf & "Unload Me" & _
      vbCrLf & "End Sub" & _
         vbCrLf & "Sub UserForm_Initialize()" & _
         vbCrLf & "ListBox1.List=DataListBox" & _
         vbCrLf & "End Sub"
    With UF.codemodule
      i& = .CountOfLines
      .insertlines i& + 1, A$
    End With
    '--- Affiche le UserForm ---
    VBA.UserForms.Add(UF.Name).Show
    '--- Détruit le UserForm ---
    Erreur:
    If Not UF Is Nothing Then ThisWorkbook.VBProject.VBComponents.Remove UF
    If Err <> 0 Then UserForm_aLaVolee = True
    End Function
    Cordialement.

    Merci de vos aides

    @+

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Une recherche sur le forum ou sur google te montreras que FileSearch
    n'existe plus, il faut soit faire autrement, soit utiliser une classe

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    merci mais etant tres novice en vba, la on peur dire que je "nage"
    j'ai fait une recherche sur google et adapte un complement pour excel 2007 et vb sur filesearch
    mais cela ne marche pas

    cela bloque a la ligne Set FS = Application.FileSearch

    merci d'apporter un peut d'aide
    @+

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    merci mais comme je la disais meme avec le complement ca ne fonctione pas ou je n'ai pas adapter la macro correctement si il faliat la modifier

    merci de m'aider

    @+

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Tu a bien ajouter la référence...
    Microsoft Scripting Runtime
    Edit: Ca bloque ??? Mais quel est le message d'erreur ?
    Edit : Sorry, mais j'étais occupé sur un autre truc et j'ai mélanger les deux.
    Dans les références c'est la ligne "ClFileSearch" que tu doit checker

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    merci pour ta réponse mais je doit la mettre a quel endroit de la macro le microsoft scripting runtine ?

    sinon ca bloque a la ligne
    Set FS = Application.FileSearch

    j'ai l'impression que cela avance petit a petit grace aux aides de chacun

    merci pour vos aides
    @+

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Tu ne doit le mettre nulle part dans la macro mais l'ajouter en référence.
    >> Outils >> Référence >> et checker la case de la référence.
    Edit : Sorry, mais j'étais occupé sur un autre truc et j'ai mélanger les deux.
    Dans les références c'est la ligne "ClFileSearch" que tu doit checker
    PS: tu ne donne toujours pas le libellé de l'erreur que tu a ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    bonjour,
    excuse moi, voici l'erreur
    erreur d'execution '13'
    imcompatibilite de type
    et si je clique sur debogage
    la ligne set FS=Clfilesearch.nouvelle_recherche est surlignee en jaune

    merci de ton aide

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Heuuu..
    Ca serrait pas plutôt
    et pas de set !
    Mais tu a le modèle dans ton code d'origine
    A+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    rebonsoir

    si j'enleve la ligne set FS=Clfilesearch.nouvelle_recherche
    et que il y a fs.newsearch

    j'ai un autre message erreur execution 91
    variable objet ou variable de bloc with non defini

    merci de ton aide une fois de plus

    @+

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Comprend plus..
    je me permet de demander pour un ami qui fonctione sous excel 2007 d'adapter la macro suivante afin de la faire fonctionner sous excel 2007
    Laisse supposer que cette macros fonctionnait sous d'autre version ?
    Si tu a bien installé l'add in et coché la référence elle devrait fonctionner sous 2007 ?

    Si tu à modifier le code montre nous ce qu'il en est maintenant.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    bonjour

    cette macro fonctione sous excel 2003
    et ne marche pas sous excel 2007 meme avec les complements
    ci joint les fichiers
    je ne comprend pas pourquoi cela ne fonctione pas


    @+
    Fichiers attachés Fichiers attachés

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bon, reprenons tout à zéro,
    Dans les référence de excel 2007, tu à bien coché la ligne "ClFileSearch"
    Où à-tu télécharger le AddIN ?
    Sur le lien que je t'ai donné ?
    Si oui, tu a dézipé ?
    il y a 2 classeurs dans le zip, lequel tu à mis ?

    Pour pouvoir t'aider j'ai ajouter l'AddIn bien que je ne m'en sert jamais, et tout fonctionne parfaitement mais il faut employer l'addin de Silkyroad ET les commandes qui vont avec.
    Tu répond à toutes les questions..

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    bonsoir
    excuse moi d'etre un peut débutant!
    pour repondre a toute les question, comment faire car il n'y a pas d'executable
    j'ai simplement extrait les 2 fichiers classfilesearch et je les ai copier dans le repertoire document......\ addin

    j'ai choisi dans le complement excel 2007 le fichier xla

    j'ai coché filesearch dans outils/reference de vba

    quoi d'autre a faire

    il y a autre chose a faire?

    merci de m'aider une fois de plus....
    @+

  16. #16
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Lequel des deux fichiers a-tu sélectionner pour mettre en complément ?
    Il y en a un de 62 K et un de 22 K
    Mois j'ai mis celui de 62 K
    Ensuite dans le zip il y a également un fichier.doc, je l'ai ouvert, (je l'ai lu aussi et j'ai fait un copier/coller du code qui y est inclu.
    Je l'ai mis dans un nouveau module.
    Adapter le répertoir et Op, c'était aussi simple que celà.
    Pour toi suffira d'adapter à ce que ru veux faire.
    La classe n'est pas verrouillée, ont peu donc suivre au pas à pas et comprendre comment ça fonctionne.
    Si tu est avec visa, le dossier renseigné dans le doc n'est pas bon, pour le trouver c'est pas difficille; tu fait comme pour ajouter un nouveau complément et tu note le dossier par défaut qui est ouvert. C'est quand même mieux de le mettre dans le bon dossier.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    bonsoir
    bof désolé de te derranger avec mon probleme, j'ai essayer mais cela ne marche pas
    peut tu envoyer la macro que tu a modifieée
    j'ai utilisé le fichier de 62k
    j'ai mis la macro exemple dans un module
    mais cela ne marche pas
    as tu un exemple de fichier qui marche ?

    Cordialement

  18. #18
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    J'ai repris le code que tu poste dans ton premier poste, et il me semble que vouloir absolument travailler avec cet Add in qu'il faudra ajouter sur chaque poste qui a Excel 2007 est plutôt génant. Je pense qu'il vaux mieux transformer la macros pour qu'elle soit compatible 97.. 2007.
    Pour ça il faut employer FileSystemObject à la place de FileSearch , de toute façon, c'est ce que fait l'add in.
    Remplace tout le code à partir de Option Explicit

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    Option Explicit
     
    '############################################
    '#    Ajouter impérativement la référence   #
    '#   suivante dans Menu Outils/Références   #
    '#                                          #
    '#    Microsoft Forms 2.0 Object Library    #
    '#      C:\WINDOWS\system32\FM20.DLL        #
    '############################################
     
    '### Constantes à adapter ###
    Const AFFICHER_DANS_LISTBOX As Boolean = True  'True si on veut afficher le résultat dans une ListBox
    Const AFFICHER_DANS_FEUILLE As Boolean = False 'True si on veut afficher le résultat dans une nouvelle feuille
    '############################
     
    Const LARGEUR_UF As Double = 320
    Const HAUTEUR_UF As Double = 240
    Const MARGE_UF As Double = 20
     
    Public DataListBox As Variant
     
    Sub RechercheDansClasseurs_2()
    Dim FS, F, f1, sf
    Dim Ext As String, Chemin As String, Mot As String
    Dim Ouvert As Boolean
    Dim WB As Workbook
    Dim S As Worksheet
    Dim R As Range, RCh As Range
    Dim Recherche
    Dim var
    Dim i&
    Dim k&
    Dim cpt&
    Dim A$
    Dim T()
    Dim bool As Boolean
    Recherche = Application.InputBox( _
      prompt:="Tapez le mot recherché.", _
      Title:="Recherche dans les classeurs des clients", _
      Type:=2)
    If Recherche = "" Then Exit Sub
        Chemin = ThisWorkbook.Path 'adapter au répertoir où sont situés les fichiers.
        Ext = "xls"
        Set FS = CreateObject("Scripting.FileSystemObject")
        Set F = FS.GetFolder(Chemin)
        Set sf = F.Files
        '--- Recherche dans les classeurs ---
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        For Each f1 In sf
            If f1.Name <> ThisWorkbook.Name Then
                If Right(f1.Name, 3) = Ext Then  'pour être certain que c'est un bon fichier
                    'ici le fichier contient l'extention xls.
                    'Pas besoin de tester s'il est ouvert, si oui ont ne le referme pas.
                    On Error Resume Next
                    Set WB = Workbooks.Open(f1.Name)
                    If Err Then
                        Ouvert = True
                        Set WB = Workbooks(f1.Name)
                    Else
                        Ouvert = False
                    End If
                    Err.Clear
                    Set S = WB.Sheets(1)
                    Set R = S.Range(S.Cells(1, 1), S.Cells(S.[f65536].End(xlUp).Row, 7))
                    For Each RCh In R
                        If Trim(LCase(RCh)) = Trim(LCase(Recherche)) Then
                          cpt& = cpt& + 1
                          ReDim Preserve T(1 To 3, 1 To cpt&)
                          T(1, cpt&) = WB.Name
                          T(2, cpt&) = RCh.Address
                          T(3, cpt&) = Recherche
                        End If
                    Next RCh
                    If Not Ouvert Then WB.Close False
                End If
            End If
        Next f1
     
        Set FS = Nothing
        If cpt& = 0 Then
          MsgBox "Aucune occurence du mot ''" & Recherche & "'' n'a été trouvé."
          Application.ScreenUpdating = True
          Application.EnableEvents = True
          Exit Sub
        End If
    '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
      '°°° Inscription du résultat dans une nouvelle feuille °°°
    Jusque cette ligne, j'ai tester pour les ouverture/fermeture de classeur

    Je pense que j'ai aussi un peu optimiser le code, plus besoin d'obliger les utilisateurs de fermer les classeurs ouvert, ont teste aussi dans les classeurs ouvert mais sans les refermer.
    Tu dis, et s'il devait y avoir des erreurs n'oublie pas de dire Sur quel ligne et quel type d'erreur.
    A+

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Par défaut
    Bonjour, je me permet d'intervenir dans la discussion car j'ai déjà rencontré le même souci.

    Citation Envoyé par LeForestier Voir le message
    Je pense qu'il vaux mieux transformer la macros pour qu'elle soit compatible 97
    Je suis entierement d'accord avec toi. L'objectif est que la macro marche sur n'importe quel poste peu importe la version d'excel.

    Citation Envoyé par LeForestier Voir le message
    Pour ça il faut employer FileSystemObject à la place de FileSearch
    Perso je ne ferais pas ça. En tout cas pas pour une recherche de fichier.
    Comme c'est écrit dans la macro de vbanovice
    Citation Envoyé par vbanovice
    Recherche dans les classeurs des clients
    il recherche des clients. Donc il peut y en avoir 3 comme 3 000 ou même 300 000
    Faire une boucle sur les Folder.Files ca me parrait être trop énorme.
    Le souci sera vraiment en terme de perf de ta macro....

    Il existe une solution beaucoup plus performante et surtout bcp plus légère en ligne de code : passer par cmd

    Admettons tu cherches dans le dossier c:\Clients tous les fichiers xls contenant le "dupont"
    dans cmd ca va donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >c:
    >cd c:\Clients
    >dir *.xls | FIND "dupont"
    donc ca va s'afficher dans la console

    tu peux modifier les options d'affichage en faisant par exemple :
    /s inclure les ss dossiers
    /b n'ecrire que le chemin complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >c:
    >cd c:\Clients
    >dir /s/b *.xls | FIND "dupont"
    pour plus d'infos va sur le site
    http://ss64.com/nt/dir.html

    Maintenant le truc a faire absolument est de récupérer ces infos dans un fichier txt,donc tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >c:
    >cd c:\Clients
    >dir /s/b *.xls | FIND "dupont" >> resultat.txt
    Et voila le tour est joué, tu as un fichier avec le resultat de ta recherche.
    Donc il faudra l'ouvrir et regarder ce qui t'interesse.

    Bon maintenant tu veux le faire en macro.
    J'y viens.

    l'astuce est d'utiliser un shell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Shell "Cmd.exe /c " TACOMMANDE, vbNormalFocus
    si je reprends mes trucs plus haut ca fera un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "Cmd.exe /c " & "C:" & " && cd C:\Clients && dir /s/b *.xls | FIND ""dupont"" >> resultat.txt", vbNormalFocus
    adaptable en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DRIVE="C:"
    CHEMIN_COMPLET = "C:\Clients"
    FORMAT= "xls"
    RECHERCHE = "dupont"
    Shell "Cmd.exe /c " & DRIVE & ":" & " && cd "& CHEMIN &" && dir /s/b *." & FORMAT & " | FIND """& RECHERCHE &""" >> resultat.txt", vbNormalFocus
    en remplacant les variables par les tiennes

    Une fois la recherche effectué, tu parcours ton fichier result
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Open CHEMIN & "\resultat.txt" For Input as #1
    Do While Not EOF(1)
        Line Input #1, ligne
    Loop
    Close #1
    Voila,
    Grâce à ca, j'ai gagné environ 15 min pour chaque requete (c'était sur environ 5 000 fichiers)
    Bon courage!!

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    bonsoir a tous

    merci de consacrer du temps pour mon probleme

    ce que j'aimerais c'est une recherche dans une feuille particuliere du dossier et dans une colonne definie ( par ex "F")

    si joint un exemple qui serait agreable de faire fonctionner en excel 2007

    merci de vos aides

    cordialement
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. enregistrement macro Excel 2007
    Par aladot dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/07/2009, 14h23
  2. Macro Excel 2007 dans VB.net 2005
    Par peregna2007 dans le forum VB.NET
    Réponses: 2
    Dernier message: 12/08/2008, 22h35
  3. signer une macro excel 2007
    Par alsimbad dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/12/2007, 05h43
  4. Activation de Macros, Excel 2007
    Par alec-- dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/07/2007, 10h13
  5. Probleme lancement macro excel 2007
    Par nico63vb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/03/2007, 13h55

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