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

Résolu
yadla133 Messages postés 6 Date d'inscription mardi 7 août 2007 Statut Membre Dernière intervention 2 avril 2010 - 1 avril 2010 à 09:35
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 ?

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 avril 2010 à 13:08
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.
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 avril 2010 à 10:07
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)
0
yadla133 Messages postés 6 Date d'inscription mardi 7 août 2007 Statut Membre Dernière intervention 2 avril 2010
1 avril 2010 à 10:43
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 ?
0
yadla133 Messages postés 6 Date d'inscription mardi 7 août 2007 Statut Membre Dernière intervention 2 avril 2010
1 avril 2010 à 10:59
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.
0

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

Posez votre question
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
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...
0
Rejoignez-nous