Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2011, 11h57   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 11
Points : 2
Points : 2
Par défaut Transferspreadsheet + ajout Onglet

bonjour à tous

j'ai actuellement une application ACCESS qui exporte le resultat d'une requête dans Excel en utilisant la commande transferspreadsheet
et qui fonctionne

le fichier XL et l'Onglet sont créés

Code :
1
2
3
4
5
6
7
8
 
' creation req tempo pour pouvoir exporter fic XL 
' nom_fic = chemins + non fichier 
' nom_feuil = nom de la feuille Xl
 
Set rtemp = db.CreateQueryDef(Nom_feuil, stSql)
 
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, Nom_feuil, nomfic, True
Maintenant je souhaite mensuellement réaliser les manips suivantes dans un fichier XL référence qui contiendra

- un sommaire (actualisé à chaque ajout ou suppression d'onglet) depuis Access
- un onglet par mois (ex 2011_01,2011_02...), l'onglet sera mis en forme à partir d'Access

Remarques :
Le fichier sera consultable et modifiable par plusieurs utilisateurs.
Sommaire avec lien hypertexte: OK je sais faire depuis ACCESS
Mise en forme du contenu de l'onglet: OK

ANOMALIE :

Lorsque j'utilise le code précédent pour transférer les données de plusieurs mois dans un fichier ayant déjà un Sommaire et un onglet (ex 2010-01) je rencontre les problèmes suivants:
  • Pas de création de nouvel onglet
  • l'export écrase le contenu de l'onglet actif lors du dernier enregistrement du fichier XL, pourtant le nom de l'onglet est différent du nom (Nom_feuil) passé en paramètre

Questions :
  • Est-ce que je confonds nom de l'onglet et nom de feuille dans la commande transfert ?
  • Peux-t'on forcer la création d'un nouvel onglet (feuille) lors du transfert ?
  • ?

Merci pour votre aide
elmat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 13h28   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Bonjour,

Il n'ya pa pas de notion d'onglet (ou de nom de feuille - c'est la même chose) dans la méthode TransferSpreadsheet mais seulement la possibilité de poser tes valeurs dans une plage existante (si nommée) ou une plage cible (e.g. $B$4).

Si tu veux créer (ajouter) ou exploiter/manipuler un onglet spécifique, il faut user d'OLE automation, créer ou ouvrir le classeur (à partir d'un XLT au cas où tu créés) et d'enrichir la feuille comme souhaité (par exemple avec un CopyFromRecordset).

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/02/2011, 16h24   #3
Invité de passage
 
Inscription : octobre 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 11
Points : 2
Points : 2
merci argyronet.

..Ca fonctionne OK pour CopyFromRecordset, seulement il faut rajouter l'entête des colonnes (avec du code )

Encore merci
elmat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 16h36   #4
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Oui, bien tu prends ton recordset et tu fais un :
Code :
1
2
3
4
5
6
            For F = 0 To oRS.Fields.Count - 1
                With XLWorkbook.Worksheets(2).Cells(1, F + 1)
                    .Value = oRS.Fields(F).Name
                    .Font.Bold = True
                End With
            Next
Par exemple...
Mais tu avais trouvé je suppose

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 13h51   #5
Invité de passage
 
Inscription : octobre 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 11
Points : 2
Points : 2
Merci
elmat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h52.


 
 
 
 
Partenaires

Hébergement Web