Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 24/03/2005, 19h53   #1 (permalink)
JC de Lorient
Guest
 
Messages: n/a
Par défaut recherche sur +sieurs classeurs

Bonsoir le forum

je souhaiterais une petite aide dans la mesure du faisable!

pour mon job je gère une centaine de classeurs XL dans un même répertoire, ce que je voudrais obtenir :

je regarde dans tous mes classeurs la colonne B, si dans cette colonne je trouve la valeur 'ma valeur' alors au choix : lister les classeurs ou je trouve cette valeur ou me lister la valeur de la cellule a gauche de 'ma valeur'

ça sent le VBA et même si je progresse un peu je suis loin d'arriver à mes fins

merci a vous

JC
  Réponse avec citation
ANNONCES
Vieux 24/03/2005, 21h42   #2 (permalink)
XLDnaute Barbatruc
 
Avatar de myDearFriend!
 
Date d'inscription: février 2005
Messages: 2 306
Par défaut Re:recherche sur +sieurs classeurs

Bonsoir JC, le Forum.

Ci-joint un fichier avec une méthode possible...

On part de l'hypothèse où ce classeur est situé dans le répertoire à 'scanner' :

Citation:
Public Sub ChercheMaValeur()
Dim Fichiers As Object, Classeur As Object, N As Integer, R As Integer
Dim
ListeClasseurs As New Collection
Dim ListeRetenus() As Variant
Dim
C As Range
Dim MaValeur As Variant
Dim
Chemin As String
      'Définir de la valeur à rechercher
      MaValeur = ThisWorkbook.Sheets('Feuil1').Range('B24').Value
      If MaValeur = '' Then
            MsgBox 'Saisissez une valeur à rechercher !'
            Exit Sub
      End If
      'Lister les Classeurs du dossier
      Application.ScreenUpdating = False
      Chemin = ThisWorkbook.Path
      ThisWorkbook.Sheets('Résultats').Rows('2:65536').D elete
      Set Fichiers = CreateObject('Scripting.FileSystemObject').getfolder(Chemin).Files
      For Each Classeur In Fichiers
            If Right(Classeur.Name, 3) = 'xls' Then
                  If Classeur.Name <> ThisWorkbook.Name Then
                        ListeClasseurs.Add Classeur.Name
                  End If
            End If
      Next
      'Rechercher la valeur dans chaque classeur
      For N = 1 To ListeClasseurs.Count
            Application.EnableEvents = False
            Workbooks.Open Chemin & '\' & ListeClasseurs(N)
            Application.EnableEvents = True
            With ActiveWorkbook
                  Set C = .Sheets(1).Columns(2).Find(MaValeur, LookIn:=xlValues)
                  If Not C Is Nothing Then
                        R = R + 1
                        ReDim Preserve ListeRetenus(1 To 2, 1 To R)
                        ListeRetenus(1, R) = ListeClasseurs(N)
                        ListeRetenus(2, R) = C.Offset(0, -1).Value
                  End If
                  .Close False
            End With
      Next N
      'MAJ de la liste des classeurs retenus
      ListeRetenus = Application.Transpose(ListeRetenus)
      With ThisWorkbook.Sheets('Résultats')
            .Activate
            .Range(.Cells(2, 1), .Cells(UBound(ListeRetenus, 1) + 1, _
                  UBound(ListeRetenus, 2))).Value = ListeRetenus
            .Columns('A:B').AutoFit
      End With
      Application.ScreenUpdating = True
      MsgBox UBound(ListeRetenus, 1) & ' Classeurs contenant ''' & MaValeur & _
            ''' en colonne B.'
End Sub
Cordialement.
[file name=ScanFichiers.zip size=17708]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ScanFichiers.zip[/file]
Fichiers attachés
Type de fichier : zip ScanFichiers.zip (17,3 Ko, 1 affichages)
__________________
Didier_mDF

www.mdf-xlpages.com
myDearFriend! est déconnecté   Réponse avec citation
Vieux 25/03/2005, 08h42   #3 (permalink)
JC de Lorient
Guest
 
Messages: n/a
Par défaut Re:recherche sur +sieurs classeurs

Bonjour Didier, le forum

ben quoi dire? sinon merci !!!!!!

tjrs aussi halluciné par vos performances !!

juste une petite chose concernant ce code, ce que je n'ai pas dit, tous mes classeurs sont avec liaisons et a chaque analyse de classeur XL me demande si je mets a jour ou pas les liaisons.
Est ce possible de 'sauter' cette étape ?

encore merci

JC
  Réponse avec citation
Vieux 25/03/2005, 19h52   #4 (permalink)
JC de Lorient
Guest
 
Messages: n/a
Par défaut Re:recherche sur +sieurs classeurs

re tout le monde

je remets un petit post car suis passé en 2ème page bien avancée ! en espérant que qqu'1 puisse me venir en aide

merci encore

JC
  Réponse avec citation
Vieux 25/03/2005, 21h09   #5 (permalink)
XLDnaute Barbatruc
 
Avatar de myDearFriend!
 
Date d'inscription: février 2005
Messages: 2 306
Par défaut Re:recherche sur +sieurs classeurs

Bonsoir JC, le Forum.


Dans ce cas, je pense qu'il convient d'utiliser la propriété AskToUpdateLinks de l'objet Application comme suit :

Citation:
Public Sub ChercheMaValeur()
Dim Fichiers As Object, Classeur As Object, N As Integer, R As Integer
Dim
ListeClasseurs As New Collection
Dim ListeRetenus() As Variant
Dim
C As Range
Dim MaValeur As Variant
Dim
Chemin As String
      'Définir de la valeur à rechercher
      MaValeur = ThisWorkbook.Sheets('Feuil1').Range('B24').Value
      If MaValeur = '' Then
            MsgBox 'Saisissez une valeur à rechercher !'
            Exit Sub
      End If
      'Lister les Classeurs du dossier
      Application.AskToUpdateLinks = False
      Application.ScreenUpdating = False
      Chemin = ThisWorkbook.Path
      ThisWorkbook.Sheets('Résultats').Rows('2:65536').D elete
      Set Fichiers = CreateObject('Scripting.FileSystemObject').getfolder(Chemin).Files
      For Each Classeur In Fichiers
            If Right(Classeur.Name, 3) = 'xls' Then
                  If Classeur.Name <> ThisWorkbook.Name Then
                        ListeClasseurs.Add Classeur.Name
                  End If
            End If
      Next
      'Rechercher la valeur dans chaque classeur
      For N = 1 To ListeClasseurs.Count
            Application.EnableEvents = False
            Workbooks.Open Chemin & '\' & ListeClasseurs(N)
            Application.EnableEvents = True
            With ActiveWorkbook
                  Set C = .Sheets(1).Columns(2).Find(MaValeur, LookIn:=xlValues)
                  If Not C Is Nothing Then
                        R = R + 1
                        ReDim Preserve ListeRetenus(1 To 2, 1 To R)
                        ListeRetenus(1, R) = ListeClasseurs(N)
                        ListeRetenus(2, R) = C.Offset(0, -1).Value
                  End If
                  .Close False
            End With
      Next N
      'MAJ de la liste des classeurs retenus
      ListeRetenus = Application.Transpose(ListeRetenus)
      With ThisWorkbook.Sheets('Résultats')
            .Activate
            .Range(.Cells(2, 1), .Cells(UBound(ListeRetenus, 1) + 1, _
                  UBound(ListeRetenus, 2))).Value = ListeRetenus
            .Columns('A:B').AutoFit
      End With
      Application.ScreenUpdating = True
      Application.AskToUpdateLinks = True
      MsgBox UBound(ListeRetenus, 1) & ' Classeurs contenant ''' & MaValeur & _
            ''' en colonne B.'
End Sub
Cordialement.
__________________
Didier_mDF

www.mdf-xlpages.com
myDearFriend! est déconnecté   Réponse avec citation
Vieux 26/03/2005, 10h53   #6 (permalink)
JC de Lorient
Guest
 
Messages: n/a
Par défaut Re:recherche sur +sieurs classeurs

Bonjour MDF, le forum

juste une question Didier : c toi qui a inventé le VBA ou quoi !!!! lol

ça marche à merveille
c un peu long en taritement mais quel gain de temps !!

dix mille merci

bonne journée et très bon week end Pascal

JC
  Réponse avec citation
Vieux 05/10/2005, 10h12   #7 (permalink)
KIM
XLDnaute Impliqué
 
Date d'inscription: avril 2005
Messages: 553
Par défaut Re:recherche sur +sieurs classeurs

Bonjour mDF, le forum,
Ce code est très intéressant et je l'utilise, merci .
Actuellement mon besoin est de recopier toute la ligne avec le meme format d'origine (gras, couleur , fond ) pour chaque cellule.
Comment modifier cette ligne?
ListeRetenus(2, R) = C.Offset(0, -1).Value
Merci d'avance
Amicalement
KIM
KIM est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 02h54.


(C) 2006 Excel Downloads