[Déplacé .Net --> VBA] Supression données d'une table via VBA Excel [Résolu]

Messages postés
6
Date d'inscription
mardi 7 août 2007
Statut
Membre
Dernière intervention
2 avril 2010
- - Dernière réponse : yadla133
Messages postés
6
Date d'inscription
mardi 7 août 2007
Statut
Membre
Dernière intervention
2 avril 2010
- 1 avril 2010 à 13:36
Bonjour,

Je recherche à supprimer toutes les données d'une table access, dont le nom est celui du fichier Excel d'où le code suivant est lancé :

nom_table_access = Workbooks(2).Name
Set BdD = CreateObject("Access.Application")
BdD.Visible = True
On Error Resume Next
BdD.UserControl = True '
BdD.OpenCurrentDatabase "C:\dossier\mabase.mdb;"
BdD.DoCmd.RunSQL "DELETE * FROM nom_table_access;"


J'ai une erreur : "Le moteur de la base de donnée Microsoft Jet ne peut pas trouver la table 'nom_table_access'. Assurez-vous qu'elle existe et qu'elle est correctement orthographiée."

J'ai vérifié... Donc je ne comprends pas pourquoi ca ne marche pas... ??

Quelqu'un peut m'aider ?

Merci beaucoup.

D'ailleurs, suis-je obligée d'ouvrir la base ?? Je peux le faire directement dans le fichier Access sans l'ouvrir ?
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
3
Merci
lol, je pensais que tu nous masquais le nom de ta table volontairement.
Oui, bien sûr :
conn.Execute "DELETE * FROM [" & nom_table_access & "]"
J'ai ajouté les crochets [ et ] afin de permettre la prise en compte des noms de table avec espace ou carctères accentués.

Il serait peut-être bon de te familiariser avec les règles de base du VB, notamment la manpulation de chaine.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
0
Merci
Salut
Commence par supprimer cet affreux "On Error Resume Next" qui peut masquer le vrai problème : L'ouverture de la DB est-il effectif ?
--> <ce lien>

D'autre part, l'application Access n'est qu'une interface aux DB, ce n'est pas le moteur.
Heureusement d'ailleurs, sinon les DB de type MDB ne pourraient pas être utilisées sur des machines ne possèdant pas Access !
Mieux vaudrait adresser ton code au moteur ADODB, exemple :
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset  ' si besoin
    Set conn = New ADODB.Connection
    conn.ConnectionString = _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=C:\dossier\mabase.mdb;" & _
        "Persist Security Info=False"
    conn.Open
    If Not conn.State = adStateOpen Then
        MsgBox "Erreur connexion"
        Exit Sub  ' ou Function
    End If
    conn.Execute "DELETE * FROM nom_table_access"
    ...
    conn.Close


Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
6
Date d'inscription
mardi 7 août 2007
Statut
Membre
Dernière intervention
2 avril 2010
0
Merci
Bonjour Jack, et merci pour ta modif.
J'ai tenté de lancer le code comme ca, mais j'ai toujours la même erreur... ("Le moteur de la base de donnée Microsoft Jet ne peut pas trouver la table 'nom_table_access'. Assurez-vous qu'elle existe et qu'elle est correctement orthographiée." )

nom_table_access est une variable. Je récupère justement le nom de la table dans un champs Excel. Est-ce que c'est pas ça qui pose problème ?
Commenter la réponse de yadla133
Messages postés
6
Date d'inscription
mardi 7 août 2007
Statut
Membre
Dernière intervention
2 avril 2010
0
Merci
Ok, effectivement, le nom_table_access doit etre le vrai nom, et pas une variable...

Est-ce que c'est possible du coup de mettre une variable ? Parce que je fais ca dans une boucle, car il y a plusieurs tables, dont les noms sont répertoriés sur la feuille Excel.
Commenter la réponse de yadla133
Messages postés
6
Date d'inscription
mardi 7 août 2007
Statut
Membre
Dernière intervention
2 avril 2010
0
Merci
Merci bcp !!

Je suppose que mon programme va encore bugger par rapport à ca...

En fait je pensais que lorsqu'il faut mettre le nom de la table, les "" étaient de rigueur... Et non... Surtout qu'ailleurs j'en ai pas eu besoin. Hé hé, je suis passée au travers de l'erreur par oubli :) Je m'en sors bien. Du coup, je me disais qu'une variable était acceptée...

Bref, merci beaucoup pour ton aide.

J'essaie de trouver des documentations

J'ai ajouté les crochets [ et ] afin de permettre la prise en compte des noms de table avec espace ou carctères accentués.

Il serait peut-être bon de te familiariser avec les règles de base du VB, notamment la manpulation de chaine.


Je ne trouve aucun document qui liste les méthodes de conversion... Je cherche surement mal...
Commenter la réponse de yadla133