IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA] supression element Acces avec Excel


Sujet :

Macros et VBA Excel

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut [VBA] supression element Acces avec Excel
    Bonjours,

    à l'aide d'excel, je supprime tous les elements de ma BDD acces en utilisant la requete :
    MaRequete = "DELETE * FROM " & NomTable

    => lorsque je lie ensuite ma BDD mes elements sont bien tous supprimés.

    Le problème est que la taille du fichier de ma BDD ne diminue pas (5Mo) : pourquoi ?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Le problème est que la taille du fichier de ma BDD ne diminue pas (5Mo) : pourquoi ?
    Même après fermeture et ré-ouverture ?

  3. #3
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Non, c'est normal. Le fichier ne dimimnue pas de taille tout seul, tu dois compresser ta base. Ça se fait dans Access, mais il doit bien y avoir une commande pour le faire en VBA. Je vais fouiller un peu.

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    Même après fermeture et ré-ouverture ?
    => non

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Essaie le compacter manuellement ta base, rien que pour voir
    Extrait de l'aide
    Compacter et réparer un fichier Microsoft Access
    Pour des performances optimales, vous devez compacter et réparer régulièrement les fichiers Microsoft Access. Si un problème sérieux se produit lors de l'utilisation d'un fichier Microsoft Access et que le programme tente de récupérer le fichier, vous risquez de recevoir un message vous indiquant que l'opération de réparation a été annulée et que vous devez compacter et réparer le fichier.

    Pour être en mesure de compacter et réparer une base de données Microsoft Access, vous devez disposer des autorisations d'accès Ouvrir/Exécuter et Ouvrir en exclusif sur celle-ci.

    Compacter et réparer le fichier Microsoft Access en cours

    Si vous compactez une base de données Microsoft Access partagée, située sur un serveur ou dans un dossier partagé, vérifiez que cette dernière a été fermée par tous les autres utilisateurs.
    Dans le menu Outils, pointez sur Utilitaires de base de données, puis cliquez sur Compacter une base de données.
    Compacter et réparer un fichier Microsoft Access fermé

    Fermez le fichier Microsoft Access en cours. Si vous compactez une base de données Microsoft Access partagée, située sur un serveur ou dans un dossier partagé, vérifiez que cette dernière a été fermée par tous les autres utilisateurs.
    Dans le menu Outils, pointez sur Utilitaires de base de données, puis cliquez sur Compacter une base de données.
    Dans la boîte de dialogue Compacter une base de données, spécifiez le fichier Microsoft Access que vous souhaitez compacter, puis cliquez sur Compacter.
    Dans la boîte de dialogue Compacter la base de données sous, spécifiez le nom, le lecteur et le dossier du fichier Microsoft Access compacté.
    Cliquez sur Enregistrer.
    Si vous utilisez le même nom, le même lecteur et le même dossier que pour le fichier d'origine, Microsoft Access remplace ce fichier par la version compactée lorsque l'opération de compactage de la base de données ou du projet Microsoft Access a été effectuée correctement.

    Compacter et réparer un fichier Microsoft Access automatiquement lors de sa fermeture

    L'opération de compactage n'a pas lieu si vous fermez une base de données Microsoft Access partagée alors qu'un autre utilisateur ne l'a pas fermée.

    Ouvrez la base de données ou le projet Microsoft Access que vous souhaitez compacter automatiquement.
    Dans le menu Outils, cliquez sur Options.
    Cliquez sur l'onglet Général.
    Activez la case à cocher Compacter lors de la fermeture.
    Remarque Vous pouvez interrompre le processus de compactage et de réparation en appuyant sur CTRL+PAUSE ou ÉCHAP.
    A toutes fins utiles

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    avant compactage => 5Mo
    après compactage => 108Ko

    => ça à l'air de marcher

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ton pb est résolu ?
    Pour paraphraser TheoCourrant, "Alors dis-le, m... quoi ! "

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    ben non mon probleme n'est pas resolu : la seule chose que je peux dire c'est qu'il faut bien compacter la base de données pour supprimer les elements "inutiles" qui gonfle la taille de la BDD inutilement.

    Maintenant le probleme est de savoir comment faire pour compacter la BDD en VBA

  9. #9
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Copier-coller brutal d'un truc non testé mais récupéré sur un site:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub cmdCompacter_Click ()
        sNomBase= "C:\Mes documents\Base.MDB" 
        sNomBaseTmp= "C:\Mes documents\BaseTmp.MDB" 
        DBEngine.CompactDatabase sNomBase, sNomBaseTmp '1. Compactage dans une nouvelle base  
        Kill sNomBase '2. Suppression de la base originale  
        Name sNomBaseTmp As sNomBase '3. Renommer la base compactée avec le nom de la base originale  
    End Sub
    Tu essaies, et tu nous dis... (CopyRight Ousk)

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu as "tout ça" dans l'aide d'Access
    Extrait :
    Compacte et répare la base de données (.mdb) ou le projet Microsoft Access (.adp) spécifiés. Renvoie un Boolean; True si l'opération a réussi.

    expression.CompactRepair(SourceFile, DestinationFile, LogFile)

    expression Obligatoire. Expression qui renvoie un des objets de la liste S'Applique à.

    SourceFile Valeur String requise. Le chemin et le nom complets du fichier de base de données ou de projet à compacter et réparer.

    DestinationFile Valeur String requise. Le chemin et le nom complets indiquant où doit être enregistré le fichier restauré.

    LogFile Boolean facultatif. True si un fichier journal est créé dans le répertoire de destination pour répertorier les éventuels problèmes du détectés dans le fichier source. Ce journal n'est créé qu'en cas de problème dans le fichier source. Si LogFile est False ou omis, aucun journal n'est créé, même si des problèmes sont détectés dans le fichier source.

    Remarques
    Le fichier source ne doit pas être la base de données en cours. Il ne doit pas non plus être ouvert par un autre utilisateur, car l'appel à cette méthode ouvre le fichier de manière exclusive.

    Exemple
    L'exemple suivant compacte et répare une base de données, crée un journal en cas de problème dans le fichier source, puis renvoie une valeur Boolean indiquant si l'opération a réussi. Pour que cet exemple fonctionne, vous devez lui indiquer les chemins et noms de fichier de la source et de la destination.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Function RepairDatabase(strSource As String, _
            strDestination As String) As Boolean
            ' Input values: the paths and file names of
            ' the source and destination files.
     
        ' Trap for errors.
        On Error GoTo error_handler
     
        ' Compact and repair the database. Use the return value of
        ' the CompactRepair method to determine if the file was
        ' successfully compacted.
        RepairDatabase = _
            Application.CompactRepair( _
            LogFile:=True, _
            SourceFile:=strSource, _
            DestinationFile:=strDestination)
     
        ' Reset the error trap and exit the function.
        On Error GoTo 0
        Exit Function
     
    ' Return False if an error occurs.
    error_handler:
        RepairDatabase = False
     
    End Function
    C'était si tu ne l'avais pas...

    A+

  11. #11
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ha ouais, c'est good, ça, merci, Ouskel'n'or !!
    Et bravo pour ton 800è message!!!
    Ça se fête!!

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Quand on aime, on compte pas !

    éééééet 801 !

    Et j'en fais plein des comme ça

    A+

  13. #13
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ha d'accord, c'est pour ça que mon bip-bip qui court comme un malade ne rattrapera jamais ton poulet qui marche...


    Heuuu, Emcy, désolé de pourrir ton post...

  14. #14
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    j'avais trouver un exemple similaire mais il faut mettre Microsoft DAO dans les reference => donc c'est un peu bete d'avoir une partie avec ADO et une autre avec DAO : je crois que je vais tout passer en DAO...

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    c'est pour ça que mon bip-bip qui court comme un malade ne rattrapera jamais ton poulet
    D'abord c'est pas un poulet, c'est un dodo, une espèce disparue depuis le 19 ième siècle... Je suis le dernier
    Heuuu, Emcy, désolé de pourrir ton post...
    Ça, je ne te le fais pas dire !
    Excuse Emcy,
    je crois que je vais tout passer en DAO...
    Là, je ne peux pas t'aider.

    A+

  16. #16
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    voila qui dervait vous interresser :
    http://www.developpez.net/forums/viewtopic.php?t=415312

  17. #17
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Pour la référence à ajouter au projet, moi, j'ai mis "Microsoft Access nn.n Objects Library", et pas DAO.
    (Ouskel'n'or : Ils avaient une crète, les dodos? Ou alors, c'est un dodo déguisé en poulet... )

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    C'est très drôle, Megaxel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] Travailler normalement avec Excel pendant un process VBA
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/08/2006, 22h07
  2. [VBA] Comment utiliser Access avec Excel
    Par MxPx_23 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/02/2006, 12h00
  3. [VBA]envoyer un email avec un fichier joint à partir d'excel
    Par mcay dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/12/2005, 10h21
  4. VBA pb de format avec excel
    Par 24 faubourg dans le forum Access
    Réponses: 1
    Dernier message: 08/12/2005, 12h46
  5. [Vba] Lire BDD avec Excel
    Par Emcy dans le forum Access
    Réponses: 12
    Dernier message: 09/11/2005, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo