A voir également:
- Charger les feuilles d'un fichier dont le nom évolue
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
6 réponses
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Ambassadeur
1 557
20 mars 2020 à 11:55
20 mars 2020 à 11:55
bonjour,
"importer": dans quoi?
"Je peux récupérer le N° de semaine du classeur actuellement chargé dans la table A, colonne3,Ligne2": où se trouve cette table A?
je pense que tu dois commencer par acquérir des bases en VBA.
"importer": dans quoi?
"Je peux récupérer le N° de semaine du classeur actuellement chargé dans la table A, colonne3,Ligne2": où se trouve cette table A?
je pense que tu dois commencer par acquérir des bases en VBA.
Oui, effectivement pour le moment j'en suis la :
identifier si un nouveau fichier est présent dans le répertoire :
Une fois le fichier identifié, j'aimerais pouvoir mettre à jour les différentes tables de la base Access avec les différentes feuilles du nouveau fichier.
Quelles sont les instructions ?
des tables déjà existantes dont les noms n'ont pas changées mais dont les données ont pu évoluer.
Merci d'avance pour vos conseils.
identifier si un nouveau fichier est présent dans le répertoire :
Private Sub test()
DoCmd.OpenTable "TableA", acViewNormal, acEdit
DoCmd.GoToRecord acDataTable, "TableA", acFirst, 2
DoCmd.SelectObject acTable, "TableA", False
var = Screen.ActiveDatasheet.Controls(4)
Dim Chemin As String, Fichier As String, Resultat As String, NewFichier As Integer
'Définir le chemin d'accés
Chemin = "d:\Users\Desktop\DonnéesAccess\"
Fichier = Dir(Chemin & "*xlsb", vbNormal)
NewFichier = var + 1
'Si il y a un fichier qui contient un N° de semaine >= à la semaine présente dans la tableA alors
le fichier est identifier "NewWeek"
Do While Fichier <> ""
If Mid(Fichier, 15, 2) >= NewFichier Then
Resultat = "NewWeek"
Exit Do
End If
Fichier = Dir
Loop
Une fois le fichier identifié, j'aimerais pouvoir mettre à jour les différentes tables de la base Access avec les différentes feuilles du nouveau fichier.
Quelles sont les instructions ?
des tables déjà existantes dont les noms n'ont pas changées mais dont les données ont pu évoluer.
Merci d'avance pour vos conseils.
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
20 mars 2020 à 18:01
20 mars 2020 à 18:01
je pense que ceci t'aidera: https://docs.microsoft.com/fr-ch/office/vba/api/access.docmd.transferspreadsheet
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
20 mars 2020 à 18:31
20 mars 2020 à 18:31
je vois que tu utilises ta table A comme si c'était un tableau Excel. par ailleurs, la technique que tu utilises pour extraire les données de la table est assez inhabituelle et compliquée.
si tu es content comme cela, parfait. quoi qu'il sera encore un peu plus compliqué de mettre à jour la table avec cette technique.
si tu veux améliorer, commençons par la structure de ta table A: quels sont les champs, leur noms et leur contenus?
si tu es content comme cela, parfait. quoi qu'il sera encore un peu plus compliqué de mettre à jour la table avec cette technique.
si tu veux améliorer, commençons par la structure de ta table A: quels sont les champs, leur noms et leur contenus?
Bonjour,
Merci pour ton lien, j'ai cependant une erreur sur l’exécution, "Erreur exécution 13"
La première partie du code fonctionne, j'arrive a avoir le N° de la semaine actualisé dans la Table A, ce qui me permet de vérifier si des fichiers plus récents existent et de déterminer le chemin d’accès. mais le code ci dessus ne fonctionne pas.
As tu une idée ?
Comment procéderais tu ?
La table A contient environ 35 colonnes, et environ 1500 lignes, mais c'est variable car actualisé toutes les semaines.
Dans la colonne4 on retrouve le N° de la semaine actualisé.
Merci pour ton lien, j'ai cependant une erreur sur l’exécution, "Erreur exécution 13"
If Resultat = "NewWeek" Then
DoCmd.TransferSpreadsheet acImport, "TableA", "d:\Users\Desktop\DonnéesAccess\Semaine" & NewFichier & "xlsb", True
Else
DoCmd.TransferSpreadsheet acImport, "TableA", "d:\Users\Desktop\DonnéesAccess\Semaine" & var & "xlsb", True
End If
La première partie du code fonctionne, j'arrive a avoir le N° de la semaine actualisé dans la Table A, ce qui me permet de vérifier si des fichiers plus récents existent et de déterminer le chemin d’accès. mais le code ci dessus ne fonctionne pas.
As tu une idée ?
Comment procéderais tu ?
La table A contient environ 35 colonnes, et environ 1500 lignes, mais c'est variable car actualisé toutes les semaines.
Dans la colonne4 on retrouve le N° de la semaine actualisé.
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
23 mars 2020 à 11:32
23 mars 2020 à 11:32
peux-tu utiliser les balises de code (en précisant basic) quand tu partages du code VBA?
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
chaque fois que tu communiques un erreur, prend soin de préciser à quelle ligne elle se produit.
peux-tu être plus précis:
- "La première partie du code": quelle première partie?
- "avoir le N° de la semaine actualisé dans la Table A", que veux-tu dire par "avoir": lire ou écrire?
- "le code ci dessus": tout ton code est au dessus
- "ne fonctionne pas": quel est le symptôme?
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
chaque fois que tu communiques un erreur, prend soin de préciser à quelle ligne elle se produit.
peux-tu être plus précis:
- "La première partie du code": quelle première partie?
- "avoir le N° de la semaine actualisé dans la Table A", que veux-tu dire par "avoir": lire ou écrire?
- "le code ci dessus": tout ton code est au dessus
- "ne fonctionne pas": quel est le symptôme?
La première partie présente dans mon mail du 20 Mars 16h27 fonctionne, il me permet de lire le N° de la semaine actuellement dans la base Access et de vérifier si un nouveau fichier a été déposé dans le répertoire défini.
le code :
l'erreur est sur :
le code :
If Resultat = "NewWeek" Then DoCmd.TransferSpreadsheet acImport, "TableA", "d:\Users\Desktop\DonnéesAccess\Semaine" & NewFichier & "xlsb", True Else DoCmd.TransferSpreadsheet acImport, "TableA", "d:\Users\Desktop\DonnéesAccess\Semaine" & var & "xlsb", True End If
l'erreur est sur :
DoCmd.TransferSpreadsheet acImport, "TableA", "d:\Users\Desktop\DonnéesAccess\Semaine" & NewFichier & "xlsb", True
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
23 mars 2020 à 14:04
23 mars 2020 à 14:04
il serait préférable que tu montres ton code complet, et pas des morceaux.
je vois une erreur évidente dans ta ligne de code sur laquelle tu obtiens une erreur.
pour t'aider à la découvrir, je suggère de la remplacer par:
je vois une erreur évidente dans ta ligne de code sur laquelle tu obtiens une erreur.
pour t'aider à la découvrir, je suggère de la remplacer par:
dim cheminnouveaufichier as string cheminnouveaufichier = "d:\Users\Desktop\DonnéesAccess\Semaine" & NewFichier & "xlsb" if dir(cheminnouveaufichier) = "" then msgbox "oups, pas de fichier " + cheminnouveaufichier else DoCmd.TransferSpreadsheet acImport, "TableA", cheminnouveaufichier , True end if
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour ton retour,
j'ai modifié et testé ton code, j'ai rajouté le point ".xlsb".
il y a encore une erreur sur le après le Else,
Erreur d’exécution 13.
Le fichier excel contenant plusieurs onglet, ne doit on pas préciser l'onglet que l'on souhaite importer ?
Merci d'avance,
j'ai modifié et testé ton code, j'ai rajouté le point ".xlsb".
il y a encore une erreur sur le après le Else,
DoCmd.TransferSpreadsheet acImport, "TableA", cheminnouveaufichier , True
Erreur d’exécution 13.
Le fichier excel contenant plusieurs onglet, ne doit on pas préciser l'onglet que l'on souhaite importer ?
Merci d'avance,
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
24 mars 2020 à 11:41
24 mars 2020 à 11:41
les informations à préciser sont expliquées en #5.
20 mars 2020 à 13:24
J'ai déjà développé quelques appli avec vba Excel , mais pas depuis access c'est pourquoi j'ai besoin de vos conseils.
Je souhaite importer dans la base access ou se trouve la table A, le fichier avec les différentes feuilles mises à jour au fil des semaines.
20 mars 2020 à 13:32