Excel macro, centralisation des données de plusieurs classeurs

Résolu/Fermé
Claire - 25 août 2015 à 12:58
 Claire - 26 août 2015 à 10:15
Bonjour,

Je souhaite regrouper les données de plusieurs classeur excel dans un même classeur. Tous les fichiers sont dans le même dossier, ils sont tous fait de la même manière. Je souhaite par exemple recupéré les données des cellules A2 et A5 de tous les fichiers sur la premiére page qui s'appelle "Dashboard to fill".
Je ne sais pas combien il y aura de classeur dans le dossier, nous créons un classeur à chaque fois que nous réalisons une formation. Les classeurs portent le nom "Workshop dashboard puis le nom de la formation et la date". Le nom de la formation et la date changerons donc pour chaque classeurs. Tous les classeurs sont dans le même dossier.
Ce dossier est sur la plateforme Onedrive de l'équipe pour laquelle je travaille. http://.....SharePoint/...

Je sais codé en Macro la boucle qui permet de récuperer les informations de classeur se trouvant sur dans un même dossier sur mon bureau, mais lorsque je l'utilise pour le dossier en ligne cela ne fonctionne pas.

Option Explicit

Sub En_revue()

Dim Fichier_traité As String, k As Integer
Dim Chemin As String, LigneVide As Integer

Application.ScreenUpdating = False
Range("A2:C65000").ClearContents

Chemin = ThisWorkbook.Path & "\"
Fichier_traité = Dir(Chemin & "*.xlsm")

Do While Fichier_traité <> ""
If Fichier_traité = ThisWorkbook.Name Then GoTo Etiquette
Workbooks.Open Chemin & Fichier_traité
LigneVide = ThisWorkbook.Sheets("Sheet1").Range("A65000").End(xlUp).Row+1
ThisWorkbook.Sheets("Sheet1").Range("A" & LigneVide) = Range("A2")
ThisWorkbook.Sheets("Sheet1").Range("B" & LigneVide) = Range("A5")
ThisWorkbook.Sheets("Sheet1").Range("C" & LigneVide) = Range("AE" & Range("AE65000").End(xlUp).Row)
ThisWorkbook.Sheets("Sheet1").Range("C" & LigneVide) = Fichier_traité

Workbooks(Fichier_traité).Close False
Etiquette:

Fichier_traité = Dir
Loop

End Sub

Quand je l'utilise avec un dossier du OneDrive il trouve une erreur dans cette partie, même si je rentre l'adresse IP du site dans Chemin = il ne veut pas.
Fichier_traité = Dir(Chemin & "*.xlsm")

Avez vous une solution? Savez vous si c'est possible?
N'hésitez pas si vous avez des questions.

J'utilise la dernière version de Microsoft.
Merci
A voir également:

1 réponse

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
25 août 2015 à 13:42
Bonjour,

cf. https://www.developpez.net/forums/d1439714/dotnet/general-dotnet/developpement-office-system/sharepoint/developpement-sharepoint/verifier-vba-presence-d-fichier-d-dossier-sharepoint/

As-tu essayé de connecter l'espace SharePoint en tant que lecteur réseau (ex : Y: ; un "dir Y:" en invite de commande DOS devrait t'indiquer si c'est faisable ou non) ?
0
Merci pour la réponse, en revenche je ne comprends pas tout.
le code donné dans votre lien ne fonctionne pas avec share point et je suis en train d'apprendre à coder en VBA je ne sais pas comme me servir de la commande DOS.
Pouvez vous me donner des précisions Merci.
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
25 août 2015 à 14:14
Oui, le code en suivant le lien ne fonctionne pas, c'est bien ça mon indication.
Je voulais montrer la différence, pour Excel, entre :
- ton lien SharePoint (http://...) qui ne peut pas être utilisé ;
- et ton lien sur le bureau (C:/...) qui peut l'être

Dir, qu'il soit en commande DOS (Menu démarrer --> Exécuter --> cmd) ou en VBA liste les dossiers et/ou fichiers du répertoire donné en argument.

Je te suggère donc d'avoir tes ressources SharePoint dans l'explorateur en le connectant comme lecteur réseau (ex : Y:/): cf. http://www.vtx.ch/fr/corporate/hosting/hosted-exchange/faq/hosted-exchange-faq4
Si ça marche (je ne sais pas, je n'utilise pas SharePoint), tu peux faire le dir non plus sur la ressource d'origine (http://) mais sur le lecteur Y:/.
0
Ca marche mais le dossier et les fichiers sont utilisés depuis plusieurs ordinateurs, et doivent être accessible depuis n'importe ou et par n'importe qui de l'équipe, je ne peux pas programmer tous les ordinateurs, comme ça. J'ai besoin d'une astuce qui soit uniquement codé, tu vois?
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
25 août 2015 à 14:32
0
Super Ca marche,
J'ai juste encore une dernière question comment je peux codé une déconnexion du lecteur réseau,
J'ai pas des collégues trés doués en informatique et moins il y a des trucs inconnus sur leur ordi moins c'est dangereux pour la perte et le mélange d'info.
J'ai fait apparaitre mon dossier dans les connexion réseau comment je peux l'enlever? tu comprends ma question?
Merci
0