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

VBA Access Discussion :

Transfert formulaire vers excel


Sujet :

VBA Access

  1. #1
    Membre actif
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut Transfert formulaire vers excel
    Bonjour à tous,

    Je suis toujours sur ma base de données en access 2007 et me revoilà face à un nouveau problème et surtout face à mes compétences limitées en vba .... aussi je viens vers vous afin de savoir si vous avez quelques bonnes idées ...

    J'ai besoin à partir d'un formulaire (en mode feuille de données) d'envoyer certaines infos dans des cellules d'un fichier excel ... En gros voilà les données de mon formulaire :

    Num | Montant | Bor | Mandat
    15 | 5 | a | 1m
    15 | 7 | a | 2m
    15 | 4 | a | 3m
    16 | 7 | b | 4m
    16 | 6 | b | 5m

    Voici ce que j'ai :

    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
     
    Dim appexcel As Excel.Application
    Dim wbexcel As Excel.Workbook
     
    Set appexcel = CreateObject("Excel.Application")
    appexcel.Visible = True
    Set wbexcel = appexcel.Workbooks.Open("C:\Documents and Settings\Administrateur\Bureau\Base projet\ETAT.xls")
     
    'appexcel.Sheets "Mand".Select
     
    appexcel.Cells(17, 9) = [Num]
    appexcel.Cells(17, 2) = [Montant]
    appexcel.Cells(17, 5) = [Bor]
    appexcel.Cells(17, 6) = [Mandat]
    appexcel.Cells(18, 1) = [AdrContact]

    Il fonctionne si je n'ai qu'un enregistrement dans mon formulaire par exemple 15 | 5 | a | 1m

    Seulement ce que j'aimerai c'est de mettre dans ma premiere feuille excel tous les enregistrements (les uns en dessous des autres) qui ont le même Num et si le Num suivant est different que l'on passe à la feuille 2 d'excel et que l'on copie les infos dans les bonnes cellules toujours les unes à la suite des autres ....

    Ben voilà .... je continue ma quête mais je suis ok si vous avez une p'tite idée.
    Merci.
    Tequila_pf


    Merci beaucoup et bon week end à vous.

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,
    Seulement ce que j'aimerais c'est de mettre dans ma premiere feuille excel tous les enregistrements (les uns en dessous des autres) qui ont le même Num et si le Num suivant est different que l'on passe à la feuille 2 d'excel et que l'on copie les infos dans les bonnes cellules toujours les unes à la suite des autres ....
    Une p'tite idée
    Au lieu de raisonner sur ton formulaire, te baser plutôt sur la table.
    Tu la lis enregistrement par enregistrement (dans l’ordre des Num)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim rec As DAO.Recordset
    Set rec = CurrentDb.OpenRecordset("Ma table")
    Do Until rec.EOF
    .......
    rec.MoveNext
    Loop
    Tu contrôles le changement de Num. A la rupture, tu crées une nouvelle feuille.
    Pour chaque enregistrement ayant le même NUM, tu alimentes tes cellules et décalant d’une ligne à chaque enregistrement.

  3. #3
    Membre actif
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut
    Bonjour et merci pour ta réponse,

    En faite, mes données sont issues d'une requête (avec un critere où une date doit etre = a la date du jour) que j'affiche dans un formulaire car l'utilisateur avant de faire l'envoi sur excel doit renseigner un champ ... De plus Num est un numéro que l'utilisateur affecte en fonction d'une "reflexion humaine" et n'est donc pas un champ automatisé.

    Je vais essayer de m'appuyer sur ton idée mais je ne nage un peu en code ....

    Tu contrôles le changement de Num. A la rupture, tu crées une nouvelle feuille.
    Pour chaque enregistrement ayant le même NUM, tu alimentes tes cellules et décalant d’une ligne à chaque enregistrement
    Si tu as un peu de temps, aurais tu la gentillesse de développer un peu car je comprend ton explication mais je suis incapable d'ecrire le code.

    Merci beaucoup.

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,

    je veux bien essayer mais cela risque de prendre du temps et ici, il est déjà 21:30.
    Je reprends contact à mon réveil si d'autres membres n'ont pas solutionné
    Bonne journée à toi.

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Un premier jet.
    Vois si ceci peut déjà t’aider.
    NB les feuilles Excel s’appellent 1,2 ….
    Tu trouves un exemple ici
    http://www.wikeo.be/files/4014/exportexcel.rar
    Je décroche quelques heures.
    A+

  6. #6
    Membre actif
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut
    Bonjour,

    Merci pour tes explications je suis très contente car cela me permet d'apprendre ...
    J'ai regardé ton fichier et moi j'ai un message d'erreur de compilation "Projet ou bibliothèque introuvable" et il s'arrete sur ta ligne

    A mon avis je dois cocher un truc dans les preferences vba ... je sais pas trop. Est-ce que c'est parce que je suis sur Access2007 ?

    Bon dimanche à toi et encore un grand merci.

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour Tequila_PF,
    A mon avis je dois cocher un truc dans les preferences vba
    Je dirais même plus :
    tu dois cocher une librairie d'objets dans les références !

    On va d'abord examiner ce qui ne va pas.

    Ouvre la db que je t'ai envoyée.
    Dans la fenêtre d’objets clique sur Module …. Nouveau.
    Une fenêtre s’ouvre.
    Dans le menu de cette fenêtre : Outils Références...

    A mon avis, une liste s’affiche avec un message : "Projet ou bibliothèque introuvable"

    Peux-tu me dire le nom de la référence manquante.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Attention sur les références, car Recordset peut appartenir à plusieurs bibliothèque comme ADO et DAO.

    Il faut mieux spécifier :
    cela pour éviter toute ambiguité, en effet si dans les références tu as ADO avant DAO, c'est ADO qui sera prit en compte au lieu de DAO, si tu ne spécifies pas.

    C'était juste un petit éclaircissement qui évite bien des tracats.

    Starec

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Merci Starec,
    Je ne maîtrise pas ce domaine.
    Dans Ma db (Access 2000) j'ai assigné, entre autres, Microsoft DAO 3.5 Object Library.
    Quand Tequila_PF exécute avec Access2007 elle reçoit un message "Projet ou bibliothèque introuvable".
    Quel est l'équivalent de "Microsoft DAO 3.5 Object Library" en Access2007 ?.
    Merci déjà

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour



    Sous Access 2007, il est préférable d'utilise la 3.6, bien que la 3.5 apparaisse sur la liste des références.

    Starec

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Merci bonne journée

  12. #12
    Membre actif
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut
    Bonjour,

    Je ne sais comment vous remercier ..... votre aide m'a été précieuse et en plus pendant votre week end .... Ci-dessous mon code (enfin celui de ClaudeLELOUP !) afin que cela puisse servir a quelqu'un !

    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
    39
    40
    41
    42
    43
    44
    45
    Private Sub monbouton_Click()
    Dim rs As DAO.Recordset
    Dim appexcel As Excel.Application
    Dim wbexcel As Excel.Workbook
    Dim NumPréc As Integer
    Dim F As Integer 
    Dim L As Integer 
    Dim M As Integer 
    Dim N As Integer 
    Set rs = CurrentDb.OpenRecordset("ma requête")
    Set appexcel = CreateObject("Excel.Application")
    appexcel.Visible = True
    Set wbexcel = appexcel.Workbooks.Open(CurrentProject.Path & "\mondoc.xls") 'dans le même rép que la db
    Do Until rs.EOF
      If rs("Num") <> NumPréc Then 'changement de Num
         F = F + 1
         L = 13
         M = 14
         N = 15
     
         NumPréc = rs("Num")
        appexcel.Sheets(F).Select    'changement de feuille si num est différent
      End If
      If L > 33 Then
         F = F + 1
         L = 13
         M = 14
         N = 15
     
        appexcel.Sheets(F).Select    'changement de feuille si les enregistrements qui ont le même num ne tiennent pas sur une seule feuille
      End If
     
        appexcel.Cells(L, 1) = rs("designation")
        appexcel.Cells(L, 2) = rs("Montant")
        appexcel.Cells(L, 6) = rs("Num")
        appexcel.Cells(M, 1) = rs("Adresse")
        appexcel.Cells(M, 3) = rs("memo")
        appexcel.Cells(N, 1) = rs("BP") & " " & rs("Ville")
        L = L + 5
        M = M + 5
        N = N + 5
    rs.MoveNext
    Loop
     
    End Sub
    Encore un grand merci et bonne journée.

    Tequila_PF

  13. #13
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Par défaut
    outre le fait que cela semble résolu "TAG"
    petite précision - sauf erreur la référence ne devait pas être DAO 3.6 car sur 2007 la library semble être incluse je pencherais plutôt sur soit library office ou excel - ensuite et cela n'engage que moi pour l'avenir plutôt orienter vers ADO et là effectivement il faut ajouter la library ADO 2.8.

  14. #14
    Membre actif
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut
    Merci pour la précision ....

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

Discussions similaires

  1. [FORMULAIRE] Vers Excel puis Vers Email
    Par Fanows dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/02/2009, 11h01
  2. VBA Excel : Transfert listbox vers Excel
    Par Secco dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/04/2008, 23h33
  3. Envoi donnée d'un formulaire vers excel , et inverse
    Par mascletjp dans le forum Modélisation
    Réponses: 7
    Dernier message: 07/08/2007, 08h54
  4. Transfert requette ver excel en VB
    Par mbokmahop dans le forum VBA Access
    Réponses: 8
    Dernier message: 07/06/2007, 14h51
  5. Exportation de données d'un formulaire vers Excel
    Par bzhmorgane dans le forum IHM
    Réponses: 2
    Dernier message: 05/06/2007, 10h36

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