Une table vers excel rapide

Contenu du snippet

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 / Exemple :


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

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.