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

IHM Discussion :

Problèmes sur macros Envoyerobjet/Exporterobjet


Sujet :

IHM

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problèmes sur macros Envoyerobjet/Exporterobjet
    Bonjour,

    Excusez-moi d'abord, je parle pas très bien français, j'espère que vous pouvez comprendre mes pbs.

    Au fait, dans mon projet avec Access, il faut envoyer des tables ou des requêtes vers quelque un par mail. J'ai trouver le macro "Envoyerobjet", mais il peut envoyer qu'un table ou qu'un requête chaque fois, comment je peux mettre tous les tables/requetes dans un mail en tapant un bouton dans le formulaire?

    Pb2: Je veux exporter les tables/requetes vers bureau, si je utilise un groupe des macros "Copiervers", ça sort des fichiers d'excels différents, mais je veux qu'un fichier d'excel avec plusieurs feuilles, est-ce que c'est possible d'exporter des tables/requetes dans les feuilles d'un seul fichier d'excel?

    Merci en avance pour votre aide!

  2. #2
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,

    Peut-être une idée....
    ...mais il peut envoyer qu'un table ou qu'un requête chaque fois, comment je peux mettre tous les tables/requetes
    Tu pourrais regrouper avec un choix, toutes tes tables et les requêtes que tu veux envoyer dans une nouvelle base ou bien les copier dans un nouveau répertoire...
    Ensuite il ne reste plus qu'à envoyer cette base ou ce répertoire par mail...

    En espérant t'aider..
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci pour votre réponse.
    C'est une bonne idée, et c'est plus proche que mon but.
    mais ça reste encore un peu moins pratique si je traite beaucoup de tables, et chaque fois, la combinaison des tables/requêtes est différentes, donc je veux quand même savoir si c'est possible d'envoyer plusieurs objets en même temps.

    Merci encore pour votre aide!

  4. #4
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    ....je traite beaucoup de tables, et chaque fois, la combinaison des tables/requêtes est différentes....
    Encore une idée.....

    Tu peux très bien afficher à l'aide de deux zones de listes contenue dans un formulaire , l'ensemble de tes tables (ListeTables) et de tes requêtes (ListeRequetes) de ta base:
    - à partir de ce formulaire, tu sélectionne toutes les tables et les requêtes dont tu as besoin....

    Exemple:
    Un simple formulaire contenant deux Zone de Liste..
    -[ListeTables] contiendras l'ensemble des tables de la base
    -[ListeRequetes] contiendras l'ensemble des requêtes de la base

    Sur l'événement "Sur ouverture" du formulaire:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    Private Sub Form_Open(Cancel As Integer)
    Dim db As DAO.Database
    Dim tbl As DAO.TableDef
    Dim req As DAO.QueryDef
     
    ' Ouvre la base de données
    Set db = CurrentDb
     
    Dim strListeTables As String
    Dim strListeRequetes As String
     
    'Recherche toutes les tables dans la Base
    For Each tbl In db.TableDefs
     
    'exlusion des tables système
        If Left(tbl.Name, 4) <> "MSys" Then
        strListeTables = strListeTables & tbl.Name & ";"
        End If
    Next
    'Mise à jour Zone de liste pour les tables
    ListeTable.RowSourceType = "Liste valeurs"
    ListeTable.RowSource = strListeTables
     
    'Recherche de toutes les requêtes dans la Base
    For Each req In db.QueryDefs
        If Left(req.Name, 1) <> "~" Then
        strListeRequetes = strListeRequetes & req.Name & ";"
        End If
    Next
    'Mise à jour de la Zone de liste pour les requêtes
    ListeRequetes.RowSourceType = "Liste valeurs"
    ListeRequetes.RowSource = strListeRequetes
     
    End Sub
    N'oublie pas de mettre la propriété "Sélection multiple" de tes Zone de liste sur "Simple" de façon à pouvoir sélectionner plusieurs éléments de chaque liste.

    ...
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup!

    C'est une bonne idée
    Je l'emploie dans mon projet.

  6. #6
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re,

    On va améliorer la façon de copier les tables et/ou les requêtes dans une nouvelle Base....
    Toujours sur le même formulaire, tu crée un bouton qui te permettra automatiquement de copier toutes les tables/requêtes directement dans une nouvelle Base.
    Sur l'événement "Sur clic" de ton bouton de commande:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Commande5_Click()
    Dim NomBase As String
    NomBase = CurrentProject.Path & "\NouvelleBase" & ".mdb"
     
    Dim Destination As String
    Dim varTables As Variant
    Dim str As String
     
    DoCmd.Hourglass True
    'Création nouvelle base
    'En premier, on vérifie que cette base n'existe pas déjà
    If Dir(NomBase, vbHidden) <> "" Then
        'la Base existe, donc on l'efface avant de la recréer
        Kill NomBase
    End If
    Dim dbsNew As Database
    Set dbsNew = CreateDatabase(NomBase, dbLangGeneral, dbVersion40)
    Set dbsNew = Nothing
     
     
    'Recopie des tables sélectionnées dans la nouvelle base
    For Each varTables In Me.ListeTables.ItemsSelected
        str = Me.ListeTables.ItemData(varTables)
        Destination = NomBase
        DoCmd.CopyObject Destination, , acTable, str
    Next varTables
     
    'Recopie des requêtes sélectionnées dans la nouvelle base
    For Each varTables In Me.ListeRequetes.ItemsSelected
        str = Me.ListeRequetes.ItemData(varTables)
        Destination = NomBase
        DoCmd.CopyObject Destination, , acQuery, str
    Next varTables
     
    DoCmd.Hourglass False
    MsgBox "Copie table(s)/Requête(s) terminée(s)" & Chr(10) & "La nouvelle Base a été créée dans : " & NomBase, vbInformation, "*** TRAITEMENT REUSSI ***"
     
    End Sub
    Voilà, il y a certainement plus simple...mais au moins cela fonctionne...

    Il te reste quand même à rajouter un peu de code pour vérifier que lors du clic sur ton bouton, tu as bien au moins un élément de sélectionner dans une de tes Zones de liste....

    Bonne continuation...
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  7. #7
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Par contre, comme je suis vraiment le débutant, est-ce que vous pouvez m'expliquer un peu cette phrase dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(tbl.Name, 4) <> "MSys" Then
    "Msys" signifie quoi? pourquoi pour les requêtes, vous utilisez "~"? Quelle est la différence?

    Merci d'avance!

  8. #8
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut

    .."Msys" signifie quoi? pourquoi pour les requêtes, vous utilisez "~"? Quelle est la différence?
    Ce code sert à éviter d'afficher les tables système d'Access..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(tbl.Name, 4) <> "MSys" Then
    En gros cela signifie:
    SI les 4 premiers caractères de gauche du nom de la table sont différent de "MSys" alors......
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  9. #9
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par FreeAccess


    Ce code sert à éviter d'afficher les tables système d'Access..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(tbl.Name, 4) <> "MSys" Then
    En gros cela signifie:
    SI les 4 premiers caractères de gauche du nom de la table sont différent de "MSys" alors......
    Ok, c'est claire, merci

Discussions similaires

  1. [XL-2000] Problème lancememnt macro a cause de protection sur une feuille
    Par jerem1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/12/2010, 19h36
  2. VBA : problème sur une macros basé sur un SI
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/04/2009, 22h54
  3. problème sur une macro pour une conversion en VB6.3
    Par Zoldick dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2008, 14h41
  4. problème sur la feuille après execution de la macro
    Par vacknov dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/11/2007, 08h16
  5. Problème sur macro (2 exécutions de code)
    Par Tsuna78 dans le forum Access
    Réponses: 2
    Dernier message: 19/03/2007, 20h24

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