Connexion de données excel dynamique

Fermé
printfx000 - 13 nov. 2012 à 09:17
 printfx000 - 14 nov. 2012 à 12:14
Bonjour,

j'ai un fichier excel MAJ.xls dans laquelle j'ai des feuilles qui se mettent à jour automatiquement au lancement du fichier grâce à des connexions à d'autres fichiers .csv.
Ces fichiers .csv se trouvent dans le même dossier que mon fichier MAJ.xls. Ainsi, un chemin fixe est défini pour aller chercher ces fichiers .csv et les importer dans MAJ.xls.

Le problème qui se pose est le suivant : si je déplace les fichiers .csv dans un autre fichier, les connexions de données seront brisées.
Existe t-il un moyen pour mettre à jour automatiquement le chemin du fichier .csv à importer dans mon fichier MAJ.xls, svp ?

Merci.



A voir également:

9 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
13 nov. 2012 à 09:22
Bonjour,

Il est toujours possible de faire une recherche automatique de tes fichiers csv par excel, mais celle ci va considérablement allonger le temps d'exécution de ta procédure......

Si tu nous disais plutôt quel est le problème et pourquoi tu souhaites déplacer ces fichiers csv?
0
salut,

tout d'abord, merci d'avoir répondu.

Ensuite, si je souhaite savoir, c'est parce que les fichiers en questions se trouvent sur un serveur commun à plusieurs utilisateurs. Si l'on souhaite faire tourner le fichier MAJ.xls directement sur ce serveur, ça fonctionnera sans problème, mais le temps d'éxécution est assez long (30 secondes au moins).
Ainsi, la plupart des utilisateurs préfèrent copier/coller les fichiers concernés sur leur répertoire local et exécuter le fichier MAJ.xls sur leur poste (pour gain de temps). Cependant, en faisant ça, les chemins des connexions de données sont brisées et la mise à jour est alors impossible à moins de modifier manuellement le chemin des fichiers.

Donc, existe t-il un moyen pour changer dynamiquement le chemin des fichiers .csv à importer par celui du répertoire où ils ont été copiées, svp ?

Merci.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
13 nov. 2012 à 10:17
Si chaque utilisateur copie/colle les fichiers concernés (donc tous les fichiers .csv + le fichier MAJ.xls) sur leur poste, mais dans le même répertoire il n'y a pas de souci.
En effet, tu peux, dans ce cas, utiliser le chemin du fichier MAJ.xls comme étant le répertoire qui contient les fichiers csv.
Avec le code ThisWorkbook.Path tu récupères le chemin de tes fichiers si tant est que ceux ci sont situés dans le même répertoire.
Essaie cette macro de test dans le fichier MAJ.xls :

Sub test()
Dim Chemin As String
Chemin = ThisWorkbook.Path & "\"
MsgBox Chemin
End Sub


Si cela fonctionne, tu pourras utiliser tes fichiers .csv en les appelant par :
Chemin & NomDuFichierCsv.csv
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
13 nov. 2012 à 10:17
Si tu les déplaces manuellement, via l'explorateur Windows : pas de solution
Si tu les déplaces par programmation (VBA, par exemple) : tout est possible .. Dans ta macro, tu déplaces tes fichiers et du même coup tu modifie le liens dans ton fichier "MAJ.xls". Ta maco se trouvant dans ce fichier, bien sûr.
C'est une façon de faire (il y a d'autres façons certainement).
0
si j'ai bien compris, je dois obligatoirement passer par une macro excel pour rendre cela dynamique, c'est bien ça ?
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
13 nov. 2012 à 13:35
Au moment où j'ai écrit mon msg, ton message n'était pas affiché ! Je n'en connaît pas la raison.
En attendant que tout soit centralisé sur ton serveur, fait ce que pijaku t'as conseillé. En avertissant les utilisateurs qu'ils doivent tout 'coller' dans le même dossier bien sûr!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
13 nov. 2012 à 13:38
Bon.
Tes "connections" ne sont pas une réelle programmation. Il s'agit de liens entre fichiers???

Si c'est cela, on ne peux modifier ces liaisons entre fichiers que
- manuellement à chaque déplacement,
- automatiquement, grâce à du VBA.
0
d'accord. Et en VBA, comment tu fais pour changer l'adresse de ton fichier ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
13 nov. 2012 à 14:25
Bon. Reprenons.
Tu dis :
MAJ.xls dans laquelle j'ai des feuilles qui se mettent à jour automatiquement au lancement du fichier grâce à des connexions à d'autres fichiers .csv.
Comment se mettent elles à jour automatiquement? Qu'appelle tu connections?
Par des formules dans les feuilles, du style :
='G:\Franck\[test.csv]test'!$A$1
Parce que si c'est cela, les formules se mettent à jour automatiquement...

Je penses qu'à ce stade et pour pouvoir continuer, un exemple de fichier csv et de ton fichier MAJ.xls ne seraient pas de trop...
0
Ce que j'appelle connexions:
dans microsoft excel 2000, à l'onglet Données, t'as une option "Connexions existantes". En cliquant dessus, t'as accès à toutes les "connexions" que t'as créées. dans mon cas, y'en a deux (pour 2 fichiers .csv) qui s'appellent table_export_stock et table_export_zone.

table_export_stock est programmé pour s'éxécuter au lancement du fichier MAJ.xls. Elle va extraire les données qui se situent dans le fichier monRepertoire/table_stock.csv et les copier dans feuill1 de MAJ.xls.

table_export_zone est programmé pour s'éxécuter aussi au lancement du fichier MAJ.xls. Elle va extraire les données qui se situent dans le fichier monRepertoire/table_zone.csv et les copier dans feuill2 de MAJ.xls.

monRepertoire/table_export.csv et monRepertoire/table_zone.csv sont des données écrits en dur dans les paramètres de mes "connexions".

Mon problème est que si un utilisateur déplace MAJ.xls, table_stock.csv, et table_zone.csv dans un autre répertoire, table_export_stock et table_export_zone ne fonctionneront plus car monRepertoire/ aura changé.

Comment faire pour modifier monRepertoire/ de telle sorte à ce qu'il ait le même nom que le répertoire en cours ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
13 nov. 2012 à 14:55
Là, j'avoue ne pas savoir.
Désolé.

Par contre, comme ton sujet est déjà traité ici, je te recommande d'en créer un nouveau, à moins qu'Heliotte ne connaisse...

Par contre, précise dès le départ à quoi correspondent tes "connexions"...

Désolé
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
13 nov. 2012 à 17:45
"Connexions existantes": Je n'ai jamais utilisé car quand je travaille sur plusieurs fichier (Excel ou csv) je le fait souvent avec les classeurs fermés.
Tu travailles probablement avec "Microsoft SQL Server".
Désolé de ne pouvoir t'être utile, mieux vaut fermé ce post et en créer un nouveau en précisant "connexions" et "Excel"
0
ok ! merci qd meme de votre aide !
0