begin process at 2010 02 10 10:53:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > UNE TABLE VERS EXCEL RAPIDE

UNE TABLE VERS EXCEL RAPIDE


 Information sur la source

Note :
5,4 / 10 - par 5 personnes
5,40 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de Donnees Niveau :Débutant Date de création :09/08/2002 Date de mise à jour :09/08/2002 19:38:21 Vu :7 671

Auteur : jeck78

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Création d'un tableau et l'injecté directement dans Excel a prtir d'une base de données

Rapide car l'envoie des données est sur selection d'excel.

Laform est la feuille ou j'ai mit mon controle ADODC , pour l'execute placer un controle
ADODC sur une form connecté le a votre base de données, mettre un bouton qui a pour Action  : Lexcel Me

Source

  • Sub Lexcel(LaForm As Form)
  • On Error Resume Next
  • 'Je met ma base a sa position de départ
  • LaForm.Adodc1.Recordset.MoveFirst
  • 'Création d'un objet excel
  • Set A_EXCEL = CreateObject("Excel.Application")
  • 'Ajout d'un nouveau classeur
  • A_EXCEL.Workbooks.Add
  • 'Je créer mon tableau des valeur (le +1 est pour la ligne des champs)
  • je = A_EXCEL.Worksheets(1).Range(A_EXCEL.Worksheets(1).Cells(1, 1), A_EXCEL.Worksheets(1).Cells(LaForm.Adodc1.Recordset.RecordCount + 1, LaForm.Adodc1.Recordset.Fields.Count + 1)).Value
  • 'Mise en forme de la ligne des nom de champs en Gras
  • A_EXCEL.Worksheets(1).Rows("1:1").Select
  • A_EXCEL.Selection.Font.Bold = True
  • 'Initialisation des position des enregistrement
  • Nbeng = 1
  • 'Initialisation des position dans les champs
  • Nbfs = 1
  • 'Création de la ligne de Champs
  • While Nbfs < LaForm.Adodc1.Recordset.Fields.Count
  • je(Nbeng, Nbfs) = LaForm.Adodc1.Recordset(Nbfs - 1).Name
  • Nbfs = Nbfs + 1
  • Wend
  • 'Je bouge dans mon tableau d'une ligne
  • Nbeng = Nbeng + 1
  • 'Tant que ma base n'est pas vide
  • While LaForm.Adodc1.Recordset.EOF = False
  • 'Je me positionne en au début des champs dans mon tableau
  • Nbfs = 1
  • 'Je rentre toutes les valeur de l'enregistrement
  • While Nbfs < LaForm.Adodc1.Recordset.Fields.Count
  • je(Nbeng, Nbfs) = LaForm.Adodc1.Recordset(Nbfs - 1).Value
  • Nbfs = Nbfs + 1
  • Wend
  • ' je passe a l'enregistrement Suivant
  • LaForm.Adodc1.Recordset.MoveNext
  • Nbeng = Nbeng + 1
  • Wend
  • 'je remet mon tableau dans excel (un fois sur le canal)
  • A_EXCEL.Worksheets(1).Range(A_EXCEL.Worksheets(1).Cells(1, 1), A_EXCEL.Worksheets(1).Cells(LaForm.Adodc1.Recordset.RecordCount + 1, LaForm.Adodc1.Recordset.Fields.Count + 1)).Value = je
  • 'Je mets en forme les bordure de mes définition de champs
  • With A_EXCEL.Selection.Borders(7)
  • .LineStyle = 1
  • .Weight = 2
  • .ColorIndex = -4105
  • End With
  • With A_EXCEL.Selection.Borders(8)
  • .LineStyle = 1
  • .Weight = 2
  • .ColorIndex = -4105
  • End With
  • With A_EXCEL.Selection.Borders(9)
  • .LineStyle = 1
  • .Weight = 2
  • .ColorIndex = -4105
  • End With
  • With A_EXCEL.Selection.Borders(10)
  • .LineStyle = 1
  • .Weight = 2
  • .ColorIndex = -4105
  • End With
  • With A_EXCEL.Selection.Borders(11)
  • .LineStyle = 1
  • .Weight = 2
  • .ColorIndex = -4105
  • End With
  • 'Je créer un volet sur ma ligne de champs et je le fige
  • A_EXCEL.ActiveWindow.SplitRow = 1
  • A_EXCEL.ActiveWindow.FreezePanes = True
  • 'Je me mets en filtre automatique
  • A_EXCEL.Rows("1:1").Select
  • A_EXCEL.Selection.AutoFilter
  • 'J'étire mes collones
  • A_EXCEL.Cells.Select
  • A_EXCEL.Cells.EntireColumn.AutoFit
  • 'Je me positionne en A1
  • A_EXCEL.Range("A1").Select
  • 'Je rend excel visible a l'utilisateur
  • A_EXCEL.Visible = True
  • 'Je met ma base a sa position de départ
  • LaForm.Adodc1.Recordset.MoveFirst
  • End Sub
Sub Lexcel(LaForm As Form)


On Error Resume Next


'Je met ma base a sa position de départ
LaForm.Adodc1.Recordset.MoveFirst

'Création d'un objet excel
Set A_EXCEL = CreateObject("Excel.Application")
'Ajout d'un nouveau classeur
A_EXCEL.Workbooks.Add
'Je créer mon tableau des valeur (le +1 est pour la ligne des champs)
je = A_EXCEL.Worksheets(1).Range(A_EXCEL.Worksheets(1).Cells(1, 1), A_EXCEL.Worksheets(1).Cells(LaForm.Adodc1.Recordset.RecordCount + 1, LaForm.Adodc1.Recordset.Fields.Count + 1)).Value

'Mise en forme de la ligne des nom de champs en Gras
    A_EXCEL.Worksheets(1).Rows("1:1").Select
    A_EXCEL.Selection.Font.Bold = True
    
'Initialisation des position des enregistrement
Nbeng = 1
'Initialisation des position dans les champs
Nbfs = 1

'Création de la ligne de Champs
   While Nbfs < LaForm.Adodc1.Recordset.Fields.Count
       je(Nbeng, Nbfs) = LaForm.Adodc1.Recordset(Nbfs - 1).Name
        Nbfs = Nbfs + 1
    Wend
'Je bouge dans mon tableau d'une ligne

Nbeng = Nbeng + 1

'Tant que ma base n'est pas vide

While LaForm.Adodc1.Recordset.EOF = False
'Je me positionne en au début des champs dans mon tableau
Nbfs = 1

'Je rentre toutes les valeur de l'enregistrement
   While Nbfs < LaForm.Adodc1.Recordset.Fields.Count
       je(Nbeng, Nbfs) = LaForm.Adodc1.Recordset(Nbfs - 1).Value
        Nbfs = Nbfs + 1
    Wend
' je passe a l'enregistrement Suivant
LaForm.Adodc1.Recordset.MoveNext
Nbeng = Nbeng + 1
Wend
'je remet mon tableau dans excel (un fois sur le canal)
A_EXCEL.Worksheets(1).Range(A_EXCEL.Worksheets(1).Cells(1, 1), A_EXCEL.Worksheets(1).Cells(LaForm.Adodc1.Recordset.RecordCount + 1, LaForm.Adodc1.Recordset.Fields.Count + 1)).Value = je

'Je mets en forme les bordure de mes définition de champs

    With A_EXCEL.Selection.Borders(7)
        .LineStyle = 1
        .Weight = 2
        .ColorIndex = -4105
    End With
    With A_EXCEL.Selection.Borders(8)
        .LineStyle = 1
        .Weight = 2
        .ColorIndex = -4105
    End With
    With A_EXCEL.Selection.Borders(9)
        .LineStyle = 1
        .Weight = 2
        .ColorIndex = -4105
    End With
    With A_EXCEL.Selection.Borders(10)
        .LineStyle = 1
        .Weight = 2
        .ColorIndex = -4105
    End With
    With A_EXCEL.Selection.Borders(11)
        .LineStyle = 1
        .Weight = 2
        .ColorIndex = -4105
    End With


'Je créer un volet sur ma ligne de champs et je le fige

A_EXCEL.ActiveWindow.SplitRow = 1
A_EXCEL.ActiveWindow.FreezePanes = True

'Je me mets en filtre automatique
A_EXCEL.Rows("1:1").Select
A_EXCEL.Selection.AutoFilter


'J'étire mes collones

A_EXCEL.Cells.Select
A_EXCEL.Cells.EntireColumn.AutoFit


'Je me positionne en A1
A_EXCEL.Range("A1").Select


'Je rend excel visible a l'utilisateur

A_EXCEL.Visible = True



'Je met ma base a sa position de départ
LaForm.Adodc1.Recordset.MoveFirst
End Sub



 Sources du même auteur

Source avec Zip Source avec une capture TREEVIEW ACCESS VIA ODBC

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) DATA ACCESS COMPONENT par zaimfaycal
Source avec Zip GESTION ENSEIGNANTS par Elmarzougui
Source avec Zip GESTION D'UNE BIBLIOTHÈQUE par Elmarzougui
Source avec Zip VISUALISATION BASE ACCESS par claude440
Source avec Zip SUPER MONEY par MdelM

Commentaires et avis

Commentaire de Benouille le 18/02/2003 19:10:44

c'est une boucle quoi, ça n'a rien de rapide, je mets une sale note parceque je suis déçu et que je trouve pas le code propre (note:2).
et oui je suis vilain!

si quelqu'un a du code qui permet de lacher directement le contenu d'un recordset dans une cellule sans avoir a parcourir le recordset je suis preneur.

Ben

Commentaire de sangho le 20/07/2003 14:20:51

oui oui vinak

Commentaire de zheRefaik le 12/04/2004 23:15:26

salut

Je n'ais pas assait d'expérience pour critiqué votre Code mais je voudrais bien  avoir les déclaration svp  

merci

Commentaire de rebelzkikione le 07/06/2005 15:18:41

ça devrait être utile les p'tits loup pour un export direct d'un recordset dans doc excel ;)

Function CopyFromRecordset(Data As Unknown, [MaxRows], [MaxColumns]) As Long

Commentaire de Benouille le 07/06/2005 15:41:00

ouaip bien vu rebelzikione, ou par msquery en attachant le classeur à sa donnée (permet en outre des refresh depuis excel sans aide exterieurs) : http://www.vbfrance.com/code.aspx?ID=28101

vb nouille

Commentaire de Benouille le 07/06/2005 15:41:18

ouaip bien vu rebelzikione, ou par msquery en attachant le classeur à sa donnée (permet en outre des refresh depuis excel sans aide exterieurs) : http://www.vbfrance.com/code.aspx?ID=28101

vb nouille

Commentaire de rebelzkikione le 07/06/2005 16:45:27

Merci :),
je n'avais pas vu ton bout de code ! j'utilise cette méthode "copyfromrecordset" car quand tu as des recordsets que tu construis à la main (sans etre attaché à une BD...) ben il y a plus beaucoup de solution ;)

Merci encore ;)

Ciao

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales