Lecture seule macro Excel fermeture access
Bonjour,
Je rencontre un souci dans ma macro Excel celle-ci ouvre Access ,supprime une table ,exécution une macro Access qui récupére un fichier Excel et le copie dans la table supprimer (j'ai été obliger de faire comme ça car à chaque copie il me gardait les données d'avant et me créait autant de ligne que mon fichier excel pouvait avoir ,si mon fichier excel à 1000 ligne ,il me copiait tout je n'ai pas réussi a importer que les lignes remplis) mais ce n'est pas vraiment le problème ,ensuite dans access j'ai une requête sélection que j'importe dans un onglet de mon fichier excel par Données\Données externe et me colle mon résultat qui fonctionne parfaitement .
Le problème est que l’exécution de ma macro excel qui fait tout ça ne fonctionne qu'une seul fois car le lien de mon importation données externe fait que access se retrouve en lecture seule ,de ce fait j 'ai un débogage sur ma ligne:
' Exécuter l'instruction SQL
oAcApp.DoCmd.RunSQL "DELETE * FROM Evolrefval"delet je suis allé voir dans access et là access est en lecture seule
je n'arrive pas a fermer Access correctement définitivement , mais si je ferme mon fichier Excel et que je l'ouvre de nouveau ça coupe le lien ET REMARCHE omment puis-je rectifier mon code VBA
Sub Mise_a_jour_pop()
Dim oAcApp As Object 'Access.Application
Dim strSQL As String
Set oAcApp = CreateObject("Access.Application")
'Ouvrir la base de données
oAcApp.OpenCurrentDatabase "Q:\support et controle\SERVICES INSTITUTIONNELS\CONTROLES PRODUCTION\SUIVI VALEURS\BASE ACCESS\SOCPROPRI.accdb"
' Exécuter l'instruction SQL
oAcApp.DoCmd.RunSQL "DELETE * FROM Evolrefval"
'Exécuter la macro
oAcApp.DoCmd.RunMacro "ImporEvolrefval"
'Fermer la base de données
oAcApp.CloseCurrentDatabase
'Libérer les ressources
Set oAcApp = Nothing
'--Actualisation de l'onglet "PopValeurs" - Requête d'extraction de la table de la base Access
Sheets("Pop_Valeurs").Select
Range("A1").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("A1").Select
Sheets("PILOTAGE").Select
Range("A1").Activate
Sheets("PILOTAGE").Select
Range("O2").Select
Selection.Copy
Range("D17").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
MsgBox (" Mise à jour de la population valeurs par société propriétaire terminée")
End Sub
Bonjour,
A tus testé en supprimant la connexion une fois les données importées ?
With Sheets("Pop_Valeurs").Range("A1").ListObject.QueryTable
.Refresh BackgroundQuery:=False
.Delete '<-- suppression de la connexion
End WithHervé.
Bonjour,
Non je n'ai pas essayé je vais voir ça encore merci .
re bonjour
A quel niveau tu mets ce code car j'ai essayé mais toujours un débogage cette fois ci sur la ligne With,je suis désolé je suis novice
Encore merci
Bonsoir,
Essai comme ça :
Sub Mise_a_jour_pop()
Dim oAcApp As Object 'Access.Application
Dim strSQL As String
Set oAcApp = CreateObject("Access.Application")
'Ouvrir la base de données
oAcApp.OpenCurrentDatabase "Q:\support et controle\SERVICES INSTITUTIONNELS\CONTROLES PRODUCTION\SUIVI VALEURS\BASE ACCESS\SOCPROPRI.accdb"
' Exécuter l'instruction SQL
oAcApp.DoCmd.RunSQL "DELETE * FROM Evolrefval"
'Exécuter la macro
oAcApp.DoCmd.RunMacro "ImporEvolrefval"
'Fermer la base de données
oAcApp.CloseCurrentDatabase
'Libérer les ressources
Set oAcApp = Nothing
'--Actualisation de l'onglet "PopValeurs" - Requête d'extraction de la table de la base Access
With Sheets("Pop_Valeurs").Range("A1").ListObject.QueryTable
.Refresh BackgroundQuery:=False
.Delete '<-- suppression de la connexion
End With
Sheets("PILOTAGE").Select
Range("A1").Activate
Sheets("PILOTAGE").Select
Range("O2").Select
Selection.Copy
Range("D17").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
MsgBox (" Mise à jour de la population valeurs par société propriétaire terminée")
End SubHervé.
Bonjour,
Toujour pareil fonctionne une fois mais dés que j’exécute une seconde fois debug sur with il considère que le lien n'est pas coupé entre Excel et Access
'--Actualisation de l'onglet "PopValeurs" - Requête d'extraction de la table de la base Access
With Sheets("Pop_Valeurs").Range("A1").ListObject.QueryTable debug
.Refresh BackgroundQuery:=False
.Delete '<-- suppression de la connexion