Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

copy dans un fichier fermé

1 réponse
Avatar
marianne puget
Bonjour,
J'essaye d'écrire une procèdure qui permet de copier
toutes les valeurs de mon tableau actif, dans un fichier fermé
Mon tableau actif possède dix colonnes et le nombre de lignes est fluctuant.
Mon fichier fermé a le path:
l:\data_du_jour.xls
les données sont sur Sheets(1)
J'ai cherché sur excel labo mais en vain!
Pouvez-vous m'aider sur le sujet
Merci beaucoup
Marianne

1 réponse

Avatar
michdenis
Bonjour Marianne,


Voici comment faire pour écrire dans un fichier fermé.

A ) tu dois ajouter la référence à ton projet VBA
"Microsoft Activex Data 2.x object librairy"

B ) Dans la procédure, ceci : [Feuil1$A:J]
identifies le nom de la feuille de ton classeur où tes données
doivent être copiées. A:J -> Les colonnes de A à J

C ) Le fichier de destination doit avoir au moins une ligne de
données -> les étiquettes de colonnes suffisent !

D ) Si des colonnes de ton fichier destination contiennent des dates
Formate cette colonne selon le format que tu désires avant
de procéder.

E ) Attention, ce type de procédure s'adresse pour des "bases de données"
si à chacune des lignes d'une même colonne, tu as des entrées de type
différentes, c'est bien possible qu'ADO n'aime pas ça !!!

Amuse toi bien !

'----------------------------------------
Sub AjoutEnregistrementsFichierFermé()

'Déclaration des variables
Dim Conn As Connection, Rst As New ADODB.Recordset
Dim Nb As Long, Rg As Range, Fichier As String
Dim Chemin As String

'Chemin du fichier fermé
Chemin = ThisWorkbook.Path & ""
'Nom du fichier fermé
Fichier = "Classeur5.xls"

'Vérifier si le fichier est ouvert
On Error Resume Next
Set wk = Workbooks(Fichier)
If Err < 0 Then
MsgBox "Ce fichier " & Fichier & _
" est ouvert. Fermer le avant de procéder."
Exit Sub
Else
Err = 0
End If

'Établissement de la connexion avec le fichier
'à mettre à jour
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"""


'Ouverture du recordset
Rst.Open "Select * from [Feuil1$A:J]", Conn, _
adOpenStatic, adLockOptimistic

'Déterminer la plage de cellules dans ce fichier
'qui doit être transmis au fichier fermé.
With ThisWorkbook
With .Worksheets("Feuil3")
'sans la ligne d'étiquette ....
Set Rg = .Range("A2:J" & .Range("A65536").End(xlUp).Row)
End With
End With


'Ajout des données
Nb = Rg.Rows.Count
For A = 1 To Nb
Rst.AddNew
Rst.Fields(0) = Rg.Item(A, 1) 'Colonne A
Rst.Fields(1) = Rg.Item(A, 2) 'Colonne B
Rst.Fields(2) = Rg.Item(A, 3) 'Colonne C
Rst.Fields(3) = Rg.Item(A, 4) 'Colonne D
'Exemple si la colonne contient des nombres ...
'Rst.Fields(4) = CDbl(Rg.Item(A, 5)) 'Colonne E
'Exemple si la colonne contient des dates
'Rst.Fields(5) = CDate(Rg.Item(A, 6)) 'Colonne F
Rst.Fields(4) = Rg.Item(A, 5) 'Colonne E
Rst.Fields(5) = Rg.Item(A, 6) 'Colonne F
Rst.Fields(6) = Rg.Item(A, 7) 'Colonne G
Rst.Fields(7) = Rg.Item(A, 8) 'Colonne H
Rst.Fields(8) = Rg.Item(A, 9) 'Colonne I
Rst.Fields(9) = Rg.Item(A, 10) 'Colonne J
Rst.Update
Rst.MoveNext
Next
'Fermeture du recordset et de la connexion
Rst.Close: Conn.Close

'libération de l'espace mémoire occupée par les objets
Set Rst = Nothing
Set Conn = Nothing
Set Rg = Nothing

End Sub
'----------------------------------------


Salutations!




"marianne puget" a écrit dans le message de news:
Bonjour,
J'essaye d'écrire une procèdure qui permet de copier
toutes les valeurs de mon tableau actif, dans un fichier fermé
Mon tableau actif possède dix colonnes et le nombre de lignes est fluctuant.
Mon fichier fermé a le path:
l:data_du_jour.xls
les données sont sur Sheets(1)
J'ai cherché sur excel labo mais en vain!
Pouvez-vous m'aider sur le sujet
Merci beaucoup
Marianne