Incrémenter régulièrement un onglet Excel à partir d'une table ACCESS

Re,

Je ne sais pas si c'est une bonne nouvelle ou non mais j'ai le même message sans la date: "Resultats$A9" n'est pas un nom valide..

resultats a9

Pourquoi y a t'il le suffixe "$A9" qui se rajoute ?

re,

as-tu mis le ! avant le A ?

rng = NomFeuille & "!A" & n

oui il y est @I20100

Je te mets le code :

[size=85]Option Compare Database

End Function[/size]

re,

tu n'a pas essayer avec mon dernier envoi avec Rst.RecordCount

Sub Export_After_LastRow()
Dim Fichier As String, NomFeuille As String, texte_SQL As String, rng As String, n As Long
Dim cn As Object
Dim Rst As Object

Fichier = "C:\Users\isabelle\Documents\Test1\base2.xlsx"  'à adapter
NomFeuille = "Feuil1" 'à 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
            n = Rst.RecordCount + 2
            rng = NomFeuille & "!A" & n
            .Close
        End With
Export_VENTES Fichier, rng
End Sub

Re,

Il me semble que si, j'ai bien la ligne avec Rst.RecordCount+2

n = Rst.RecordCount + 2

En fait j'avais mis les autres lignes en commentaire, je les ai carrément supprimé du coup. Mais j'ai tjs la même fenêtre qui s'affiche malheureusement..

[size=85]

End Sub[/size]

re,

pourtant il devrait y avoir un ! dans la variable rng

regarde sur cette image lorsque je met le curseur sur la variable rng

test variable

Bonjour I20100,

J'ai vraiment repris à la lettre ton code, en copier-coller, et j'ai toujours la même fenêtre qui s'affiche

resultats a9

Est ce que de ton côté cela fonctionne ?

Option Compare Database

End Function

Bonjour Sidwel ,

j'ai essayé de reproduire le problème, mais sans succès,

je ne comprend pourquoi le ! se transforme en $

Bonjour I20100

J'ai essayé d'avancer sur mon sujet..

Ce que je remarque c'est que quand j'enlève le "!" alors je n'ai pas de msg d'erreur mais ça ne fait pas le résultat attendu: ça prend ma table et ça la colle dans un nouvel onglet "ResultatsA20". Or je souhaite que ça incrémente mon onglet "Résultats" plutôt.. !!

Si quelqu'un peut m'aider..merci merci

[size=85]Option Compare Database

End Function[/size]

re,

peux-tu essayer cette macro pour voir si le problème du ! subsiste toujours,

le résultat devrait être T_ResultatsNew!A100

Sub test1()
NomFeuille = "T_ResultatsNew" 'adapté
n = 100
Rng = NomFeuille & "!" & Range("A" & n).Address(0, 0)
MsgBox Rng
End Sub

Bonjour i20100

J'ai testé ta macro, mais en la modifiant légèrement car il ne la prenait pas, voici le résultat:

test macro a100

[size=85]Sub test()

End Sub[/size]

Donc on voit bien le "!"..

Alors que dans la macro initiale, il se transforme en dollar $..

a20

rappel de la macro globale:

macro globale

Merci encore..

Bonjour à tous,

Si je peux me permettre, on pourrait peut être aborder le problème d'une autre façon.

1/ Si j'ai bien compris, depuis Access on veux alimenter un fichier Excel. C'est bien ça?

2/ Si tout va bien l'onglet Excel est structuré en une colonne par champs, une ligne par enregistrement. C'est bien ça?

3/ Visiblement la méthode souhaitée passe par de l'ADODB. C'est bien ça?

Si j'ai bon sur les 3 questions précédentes, pourquoi ne pas utiliser un bon vieux INSERT classique du SQL?

Par ailleurs simple remarque, ACE est bien pour aller vers Access, mais pour se connecter vers Excel, MSDASQL est plus adapté, avec un truc genre :

Cnx.Provider = "MSDASQL"
Cnx.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
        "DBQ=" & Fichier & "; ReadOnly=False;"

Ceci étant dit, si le souhait est de récupérer le n° de la première ligne vide de l'onglet Excel, on peut écrire une p'tite fonction :

Function Derniere_ligne()
Dim Cnx As Object, Rst As Object
Dim Fichier As String, NomFeuille As String

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

    Set Cnx = CreateObject("ADODB.Connection")
    Cnx.Provider = "MSDASQL"
    Cnx.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
             "DBQ=" & Fichier & "; ReadOnly=False;"

    Set Rst = CreateObject("ADODB.Recordset")
    Rst.Open "SELECT * FROM [" & NomFeuille & "$]", Cnx, 3
    Derniere_ligne = Rst.RecordCount + 2

    Rst.Close
    Cnx.Close
    Set Cnx = Nothing
    Set Rst = Nothing
End Function

Avec un appel du genre :

Sub test()
Dim Rng As Range

    Set Rng = Sheets("Resultats").Range("A" & Derniere_ligne)
    MsgBox Rng.Address

End Sub

Pierre

re,

sur la macro Sub Export_After_LastRow()

peux-tu faire un essai avec

rng = "Resultats!A" & n

ps/

pour insérer du code utile la balise

balise de code

tu peux aussi sélectionner un code et clic sur la balise

https://forum.excel-pratique.com/viewtopic.php?f=6&t=24726

Bonjour Pierre, I20100 !

@I20100:

même message avec

rng = "Resultats!A" & n
a20 avec new rng

@Pierre

Oui je veux incrémenter l'onglet Resultats de mon fichier Excel VENTES.xlsm

Mais je ne veux pas écraser mon onglet, je veux rajouter mes nouvelles données (table Resultats de Access) à la suite, d'où la nécessité d'aller chercher la 1ere ligne non vide de mon onglet Resultats

Peux tu me donner plus de détails?

Il ne se passe rien quand je lance la Function Dernière_Ligne --> cette fonction enregistre le numéro de la 1ere ligne non vide?

et j'ai un msg d'erreur lors du lancement de l'appel

appel
Sub test() 'nouvelle proposition
Dim Rng As Range

  [color=#FF0040]  Rng = Sheets("Resultats").Range("A" & Derniere_ligne)[/color]
    MsgBox Rng.Address

End Sub

merci merci

Ok,

Voici une démo de lecture/ecriture avec ADO :

* Un fichier "Principal.xlsm" avec quelques données quelconques

* Un fichier "Base.xlsx" avec d'autres données quelconques

Les 2 fichiers sont à placer dans un même dossier.

La procédure Démo() comporte 2 parties :

1/ une lecture ADO des données de la feuille active avec un SELECT (les données sont placées dans un tableau T)

2/ une écriture ADO de ces données lues (de T donc) dans le fichier "Base.xlsx" via un INSERT (sans écraser les données existantes!)

Mis à part la procédure Démo, l'ensemble du code peut être utilisé tel quel dans une autre appli VBA (dans Excel ou dans Access)

Dans ton cas, les données à injecter dans le fichier Excel de destination seront tes données Access mais le principe est exactement le même concernant le `INSERT` (et plus besoin de chercher le n° de la dernière ligne vide)

Est-ce que cet exemple est clair?

Pierre

NB, en SQL :

* pour injecter une date dans excel, on la transforme en entier long

* pour du texte, on l'entoure de guillemets et on double les apostrophes

* pour une valeur décimale, on substitue la virgule par un point

* les entêtes sont entourés par des guillemets `Alt Gr + 7 puis Backspace`

8principal.zip (34.54 Ko)

Voici une autre démo :

* fichier "Principal.xlsm"

* fichier "Base.xlsx"

* fichier access

Cette fois-ci la procédure "Démo" en plus va lire le .accdb pour injecter les données lues dans "Base.xlsx"

Pierre

5principal-2.zip (40.47 Ko)

Pierre,

merci pour ton aide!

Disons qu'avant de trouver ça fun il faut que je me l'approprie.. pour l'instant je n'y suis pas à 100%

J'essaie de l'adapter à ma problématique, c'est à dire ma table Access "Resultats" et mon fichier Excel VENTES.xlsm/onglet Resultats

Dans l'exemple que tu m'as fourni,

T = ma table Access "Resultats" ?

Base.xlsx = mon fichier excel "VENTES" ?

Feuil1= mon onglet excel "Resultats"?

J'ai encore besoin d'aide je crois

Regarde plutôt dans la 2ème démo (parties 3 et 4) :

* source des données Access => Table `Donnees_demo` de la base `Base_demo.accdb`

* cible Excel => onglet `Feuil1` du fichier `Base.xlsx`

Pierre

je ne peux pas ouvrir la base car pas possible de télécharger la version 64 sur mon PC pro

capture pb ouverture

Est-ce possible de travailler avec ta première demo ? est-cepossible d'avoir un petit coup de main pour adapter les fichiers ?

Rechercher des sujets similaires à "incrementer regulierement onglet partir table access"