|
|
|
|
Bonjour,
J'ai actuellement 2 fichiers excel qui ont des intitulés de colonne identiques. Le premier est une extraction d'une application autre qu'excel et le second un fichier avec macro VBA Classique.
Ma demande : y'a-t-il une astuce pour copier les lignes du premier fichier vers le second sans ouvrir les fichiers, et cela, tous les matins à la même heure?
Je vous remercie par avance de l'attention que vous porterez à ma question!
Bonjour,
|
Bonjour,
Sub ADOcnx_XL_Close()
'Cochez la ligne "Microsoft ActiveX Data Objects x.x Library".
'dans Outils > Références...
Dim Cnx As ADODB.Connection
Dim Fichier As String
'Définit le classeur fermé servant de base de données (mettre le chemin complet)
Fichier = "C:\monClasseur.xls"
Set Cnx = New ADODB.Connection
'--- Connexion ---
With Cnx
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
.Open
End With
'Extended Properties=Excel 8.0 est utilisé pour les versions d'Excel 97, 2000 et 2002.
'
'... la requête ...
'
'--- Fermeture connexion ---
Cnx.Close
Set Cn = Nothing
End Sub
;o) «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.» Nicolas Boileau |
Bonjour Polux,
|
Bonjour,
dim source as object
dim requete as object
'chemin et fichier sont ici des variables globales venant d'ailleurs
Set Source = CreateObject("ADODB.Connection")
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & "\" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
Set Requete = CreateObject("ADODB.Recordset")
....
requete.close
source.close
set requete=nothing
set source=nothing
HDR=NO est utilisé quand il n'y a pas d'étiquettes (ou nom de champ), si tel est le cas, il faut préciser l'onglet- feuille et la plage de cellule par exemple: Set requete = source.Execute("SELECT * FROM `" & onglet & "$" & zone & "` WHERE '" & champ & "' <>"""";")
non précisé ADO cherchera les étiquettes (HDR=Header) Quelquesoit la version WIN-office utilisée laisser extended properties à 8.0; ADO comprendra dans des versions postérieures... Je tiens à citer http://frederic.sigonneau.free.fr/ site incontournable pour tout excelien accro! Maintenant, si tu n'as pas beaucoup de données-cellules à transfèrer tu pêux utiliser la macro dite de Walkenbach sans faire appel à ADO autre exemple (le nom de fichier était dans un combobox): ' modèle pour écrire param='C:\mes documents\riri\[Classeur1.xls]Classeur1Feuil3'!L1C1 param = "'" & chemin & "\[" & Me.CbxClasseur.Value & "]" & onglet & "'!R1C1" ' macro dite de John Walkenbach champ = ExecuteExcel4Macro(param) mais il faut soit boucler, soit écrire autant de lignes qu'il y a de cellules Le forum est basé sur le partage de connaissances:Je ne réponds donc pas à des questions techniques par message privé. Cordialement, Michel |
Pour modifier un enregistrement dans un classeur fermé j'ai trouvé ceci
|
Polux, Michel, Merci pour tout ces exemples.
|
Boujour tous ,
|