Incrémenter régulièrement un onglet EXCEL à partir d'une table ACCESS Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
S
Sidwel
Membre habitué
Membre habitué
Messages : 50
Inscrit le : 9 décembre 2014
Version d'Excel : 2007

Message par Sidwel » 17 février 2019, 13:53

Messieurs-dames bonjour !

En ce jour ensoleillé, j'essaie de finir un projet sur ACCESS et un coup de pouce serait le bienvenu si vous tomber sur mon topic..

En résumé:
- j'ai crée une base ACCESS qui me fourni tous les jours une table "RESULTATS_J" avec des données mise à jour --> ça, c'est OK.

--> je souhaite, via un bouton de mon formulaire ACCESS, ajouter ces données à un fichier excel "VENTES" déjà existant (onglet "RECAP"), sans supprimer les données présentes dans cet onglet.
C'est à dire, je cherche la 1ere ligne non vide de mon onglet excel existant, et je copie-colle mes données de la table access à la suite

J'ai trouvé la façon d'exporter mes données dans mon fichier excel, mais ça écrase les données à chaque fois, or je veux les incrémenter à la suite..

Ma première question:
- Est ce réalisable sur le principe ?
- Est ce que quelqu'un a des billes à me fournir ou un exemple existant dont je pourrai m'inspirer ?

Merci à bientôt
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'518
Appréciations reçues : 203
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 17 février 2019, 14:04

Bonjour Sidwel,

à tester,
Set wk = Workbooks("MonFichierExcel.xlsm") 'à adapter
Set sh = wk.Sheets("Feuil1")  'à adapter
LastRow = sh.Cells(Rows.Count, "A").End(xlUp).Row + 1 ' + 1 pour la première ligne vide
Si le problème est résolu, pensez au clic sur le bouton
isabelle
S
Sidwel
Membre habitué
Membre habitué
Messages : 50
Inscrit le : 9 décembre 2014
Version d'Excel : 2007

Message par Sidwel » 17 février 2019, 14:24

Bonjour i20100

Merci pour ton retour :)

Alors pour aller chercher la 1ere ligne non vide, je vois le code à utiliser. Mais ma question c'est plus sur comment incorporer ceci dans ma base existante ?

Je n'ai pas crée de module VBA directement dans ma base, j'ai utilisé la fonctionnalité "macro" via l'action "ImporterExporterFeuilleDeCalcul". Et en convertissant la macro en VB (fonctionnalité ACCESS qui me dépanne bien :) ), cela me sort le code suivant:

Function Export_VENTES()
On Error GoTo Export_VENTES_Err

DoCmd.TransferSpreadsheet acExport, 8, "RESULTATS_J", "C:\Users\....\VENTES.xlsx", True, ""

Export_VENTES_Exit:
Exit Function

Export_VENTES_Err:
MsgBox Error$
Resume Export_VENTES_Exit

End Function


--> Je me demande comment intégrer la notion de recherche de la 1ere ligne non vide de l'onglet excel où je déverse ma table access?

J'aurai dû commencer par fournir ces lignes de codes dans mon message initial, désolée !
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'518
Appréciations reçues : 203
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 17 février 2019, 14:39

re,

est ce que le fichier "VENTES.xlsx" est ouvert au moment du transfert ?
Si le problème est résolu, pensez au clic sur le bouton
isabelle
S
Sidwel
Membre habitué
Membre habitué
Messages : 50
Inscrit le : 9 décembre 2014
Version d'Excel : 2007

Message par Sidwel » 17 février 2019, 15:07

Re,
Non fermé quand je lance ma base Access !
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'518
Appréciations reçues : 203
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 17 février 2019, 16:04

et au moment de l'exécution de Function Export_VENTES() ?
Si le problème est résolu, pensez au clic sur le bouton
isabelle
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'518
Appréciations reçues : 203
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 17 février 2019, 16:13

re,

voici un exemple pour connaitre la première cellule vide de la colonne A
Sub Test_LastRow()
Dim Fichier As String, NomFeuille As String, texte_SQL As String
Dim cn As Object    'ADODB.Connection
Dim Rst As Object    'ADODB.Recordset

Fichier = "C:\Users\isabelle\Documents\test ADODB\Data_Demo_ADO.xlsx"  'à adapter
NomFeuille = "Donnees" 'à adapter

        Set cn = New ADODB.Connection
        With cn
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
            & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
            .Open
            texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
            Set Rst = New ADODB.Recordset
            Rst.Open texte_SQL, cn, adOpenKeyset, adLockOptimistic
            Rst.MoveLast
            MsgBox Range("A" & Rst(0) + 2).Address
            .Close
        End With
End Sub
Si le problème est résolu, pensez au clic sur le bouton
isabelle
S
Sidwel
Membre habitué
Membre habitué
Messages : 50
Inscrit le : 9 décembre 2014
Version d'Excel : 2007

Message par Sidwel » 17 février 2019, 16:31

Merci pour ce retour

Mon fichier Excel est toujours fermé et c’est access qui l’ouvre pour copier coller les données.

Je regarde ce bout de code et je vous fais un retour dans la soirée, je vais essayer de joindre le fichier, ce sera plus parlant pour échanger.
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'518
Appréciations reçues : 203
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 17 février 2019, 17:04

re,

si le fichier excel a été ouvert au moment de l'exécution de Export_VENTES
il y a possibilité de faire plus simple,
as-tu attribue une référence d'objet à application excel et au fichier excel pour l'ouvrir ?
Si le problème est résolu, pensez au clic sur le bouton
isabelle
S
Sidwel
Membre habitué
Membre habitué
Messages : 50
Inscrit le : 9 décembre 2014
Version d'Excel : 2007

Message par Sidwel » 17 février 2019, 20:24

Re I20100,

Je ne peux pas te joindre ma base de données car le site ne prend pas l'extension :(
Sais tu comment je pourrai te la partager ? ça serait vraiment plus explicite. J'ai crée une base "fake" juste pour ne pas mettre les données professionnelles, mais le principe est exactement le même !

Je pense que oui, le fichier excel s'ouvre quand access lancer l'export, mais cela ne se voit pas (ou alors ça va très vite..).

De mon côté, j'ai "juste" utilisé une "action" disponible dans ACCESS pour exporter ma table "T_ResultatsNew" et le bout de code que ça produit est le suivant:

Option Compare Database

'------------------------------------------------------------
' M_Export_VENTES
'
'------------------------------------------------------------
Function M_Export_VENTES()
On Error GoTo M_Export_VENTES_Err

DoCmd.TransferSpreadsheet acExport, 8, "T_ResultatsNew", "C:\Users\...\fake\VENTES.xlsx", True, ""


M_Export_VENTES_Exit:
Exit Function

M_Export_VENTES_Err:
MsgBox Error$
Resume M_Export_VENTES_Exit

End Function



Merci encore..
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message