Extraire des cellules d'un nombre indéterminé de classeurs

Adi Kha

XLDnaute Nouveau
Bonjour tout le monde,

Le problème que j'ai a déjà été traité quelques fois, mais cette fois-ci il s'agit d'Excel 2004. J'ai déjà une macro PC trouvée sur le net qui rempli parfaitement son office, mais n'y connaissant malheureusement rien en VBA, je me demandait si il y avait quelqu'un d'assez calé Mac pour ré-écrire cette macro pour Excel 2004, car en l'état elle n'est pas fonctionnelle.

Je vous redonne rapidement les données du problème: Un dossier "Z" comprenant un nombre "N" de classeurs tous identiques avec une feuille "Facture". Un classeur "Synthèse" avec une macro qui va chercher quelques cellules de tous les classeurs du dossier "Z" (peut importe le nombre "N", il est variable) et coller ces valeurs par ligne (une par classeur). Je vous met le code de la macro PC utilisée ci dessous.


Sub synthese()
Range("A1").Select 'sélectionner la cellule de début
Chemin = "C:\Dossier Z\"
fichier = Dir(Chemin & "*.xls")
Do While fichier <> ""
Workbooks.Open Filename:=Chemin & fichier
Set feuille = ActiveWorkbook.Sheets("Facture")

ThisWorkbook.Activate
ActiveCell.Value = feuille.Range("C8").Value
ActiveCell.Offset(0, 1).Value = feuille.Range("E8").Value
ActiveCell.Offset(0, 2).Value = feuille.Range("K57").Value
ActiveCell.Offset(0, 3).Value = feuille.Range("H59").Value

Windows(fichier).Close savechanges:=False
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
fichier = Dir ' Fichier suivant
Loop
End Sub


Voilà, en espérant avoir été clair...

Je vous remercie de votre aide

Adi
 

Adi Kha

XLDnaute Nouveau
Re : Extraire des cellules d'un nombre indéterminé de classeurs

Bonjour le forum, bonjour systmd,

Je te remercie de ta réponse, tu as parfaitement compris de quoi il retournait. Malheureusement cette macro ne fonctionne pas non plus sur mac.

Quelqu'un d'autre veut tenter sa chance ?
 

Adi Kha

XLDnaute Nouveau
Re : Extraire des cellules d'un nombre indéterminé de classeurs

Hé oui, c'est ça mon problème...

On trouve des dizaines de solutions pour PC, mais impossible de trouver quelqu'un qui conçoit pour Mac, et je ne sait absolument pas réinterpréter ces commandes.

Je te remercie tout de même de ton intérêt.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Extraire des cellules d'un nombre indéterminé de classeurs

Bonjour Adi Kha, systmd,

Je ne connais pas non plus, mais modifie ton profil (dans Tab.de bord en haut à gauche) pour y inclure ta version d'Excel et Mac.

Il sera ainsi plus simple pour un utilisateur de Mac de s'arrêter sur ton fil pour y apporter une réponse adaptée.

Bon WE.

Jean-Pierre
 

byrolle78

XLDnaute Nouveau
Re : Extraire des cellules d'un nombre indéterminé de classeurs

Bonjour le forum, bonjour Adi Kha,

Fondamentalement ta macro est parfaitement fonctionnelle, elle ne s'exécute pas à cause de deux spécificités Mac:

1) Les chemins d'accès sont écrit avec : et non pas des \

2) Les caractères de recherche générique comme * et ? n'existent pas, ils sont interprétés comme des lettres normales.

Pour le premier point pas de souci, il suffit de remplacer la syntaxe. Mais si tu déplaces ton dossier, tu devras à chaque fois réadapter le chemin dans la macro, d'où l'avantage d'utiliser un chemin relatif (comme proposé par systmd dans sa macro). On y arrive par la fonction CurDir qui va prendre en compte l'endroit d'où tu ouvres ton classeurs. Là où tu le place dans ton ordi n'a plus d'importance, il suffit qu'il soit un dossier parent avant "Z".

Pour le deuxième, c'est la fonction MacID combinée à Dir qui va nous sauver. Elle permet, comme le ferait l'astérisque, de dégager tous les fichiers d'un même type grâce au Mac File Type (équivalent Mac des extension .xls) avec son code à quatre caractère. Pour nous, il s'agit ici de XLS8 pour les classeurs Excel dès la version 97.

Pour le reste c'est tout bon. :p

Je te met la macro adapté et commentée ci-dessous, je l'ai testée sur XL2004 avec SL.

Bien du plaisir

By

----------

Sub Synthese()

Range("A1").Select 'sélectionne la cellule active initiale •adapter si besoin•

Chemin = CurDir & ":Z:" 'défini le chemin d'accès au dossier "Z" en fonction du répertoire courant
Fichiers = Dir(Chemin, MacID("XLS8")) 'liste les fichiers excel situés dans le dossier "Z"

Do While Fichiers <> "" 'exécute les commandes suivantes jusqu'à ce que tous les fichiers aient été traités

Workbooks.Open Filename:=Chemin & Fichiers 'ouvre un classeur excel du dossier "Z"

Set Feuille = ActiveWorkbook.Sheets("Facture") 'défini la feuille "Facture" de ce classeur comme source de données

ThisWorkbook.Activate 'réactive le classeur actuel et y copie les valeurs depuis la feuille source

ActiveCell.Value = Feuille.Range("C8").Value 'Copie la cellule "C8" dans la cellule active •asb•
ActiveCell.Offset(0, 1).Value = Feuille.Range("E8").Value 'Copie la cellule "E8" à droite de la précédente •asb•
ActiveCell.Offset(0, 2).Value = Feuille.Range("K57").Value 'Copie la cellule "K57" à droite de la précédente •asb•
ActiveCell.Offset(0, 3).Value = Feuille.Range("H59").Value 'Copie la cellule "H59" à droite de la précédente •asb•

Range("A65536").End(xlUp).Offset(1, 0).Select 'Défini la fin de la ligne et passe à la suivante

Windows(Fichiers).Close savechanges:=False 'Ferme le classeur source sans enregistrer les modifications

Fichiers = Dir 'liste à nouveau le dossier "Z"

Loop 'Si présent, passe au classeur suivant, autrement fin

End Sub
 

Adi Kha

XLDnaute Nouveau
Re : Extraire des cellules d'un nombre indéterminé de classeurs

Je faisais de l'ordre dans mes signets lorsque je tombe sur celui-ci. Quel horreur !!! Je me rend compte que je n'ai jamais re-posté sur ce fil. En effet, j'ai bien lu la réponse et m'en suis servi "à l'époque" avec grand succès, c'était exactement ce dont j'avais besoin !

Navré de faire remonter ce post "pour rien", mais au cas où toi, byrolle, tu repasses par là, je tenais à te remercier du fond du cœur, tu m'as tiré une sacrée grosse épine du pied ! Je n'aurais jamais compris tout seul le fonctionnement des types sous Mac, sois-en sincèrement remercié(e) ?!

Adi, un gros mufle malgré lui ;-)
 

Discussions similaires

Statistiques des forums

Discussions
312 980
Messages
2 094 132
Membres
105 944
dernier inscrit
VLAROUDIE