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

transfert d'info d'un fichier excel vers un autre fichier

6 réponses
Avatar
Philippe B.
Bonjour à tous,
Je cherche à savoir comment faire une macro qui lors de son excecution

Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A1,
puis lors d'une deuxieme excution
Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A2 (car A1 est déja occupé)

...etc

Merci de votre aide à tous.
--
Cordialement,
Philippe B.

6 réponses

Avatar
PMO
Bonjour,

Une piste avec le code suivant

A FAIRE AU PREALABLE (pour un test)
1) Créez un classeur et enregistrez-le dans C: sous le nom B.xls
2) Fermez B.xls
3) Créez un classeur et nommez une de ces feuilles "Test"
Faites attention à la casse (majuscules/minuscules)
4) Copiez le code suivant dans un module standard
'***********************
''### Remplacez "Test" par le nom ###
''### de la feuille où la cellule ###
''### A1 envoie l'information ###
Const MA_FEUILLE As String = "Test"
''### Adaptez le chemin ###
Const CHEMIN As String = "c:B.xls"
''###################################
Sub PMO_Transfert()
Dim W1 As Workbook
Dim W2 As Workbook
Dim lig&
Dim R As Range
Dim var
On Error GoTo Erreur
If ActiveSheet.Name <> MA_FEUILLE Then Exit Sub
Application.ScreenUpdating = False
Set W1 = ThisWorkbook
Set W2 = GetObject(CHEMIN)
W2.Windows(1).Visible = True
With W2.Sheets(1)
lig& = .UsedRange.Rows.Count
Set R = .Range("a" & lig& & "")
End With
var = W1.ActiveSheet.[a1]
If lig& = 1 And R = "" Then
R = var
Else
Set R = R.Offset(1, 0)
R = var
End If
W2.Save
W2.Close
Set W2 = Nothing
Erreur:
Application.ScreenUpdating = True
End Sub
5) Tapez une donnée dans la cellule A1 de la feuille
"Test" et entérinez
6) Lancez la macro PMO_Transfert
7) Refaites plusieurs fois les étapes 5 et 6

Allez vérifier dans B.xls si les données ont été répercutées.

POUR VOTRE USAGE
Adaptez la constante Const MA_FEUILLE As String = "xxxxxx"
Adaptez la constante Const CHEMIN As String = "xxxxxx"

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,
Je cherche à savoir comment faire une macro qui lors de son excecution

Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A1,
puis lors d'une deuxieme excution
Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A2 (car A1 est déja occupé)

...etc

Merci de votre aide à tous.
--
Cordialement,
Philippe B.


Avatar
michdenis
Bonjour Philippe,

Avec ADO(activex data object)

Tu ajoutes la bibliothèque suivante à ton projet
fenêtre éditeur de code / barre menu / outils / référence
"Microsoft activex data object 2.x librairy"

Dans la feuille de destination : Ta colonne dans l'exemple porte
l,étiquette de colonne "titre" à modifier dans la requête selon
ton application

La feuille de l'exemple est Feuil1, à modifier dans [Feuil1$]
selon celle de ton application.

Et tu détermines dans la procédure, la plage de cellules que tu veux
ajouter à cette déja en place ! Cette procédure ne fait qu'ajouter
aux données existantes, elle ne remplace pas des données déjà
existantes... c'est possible mais ce n'était pas ta demande !

'--------------------------------------
Sub Miseàjour()

Dim Conn As Connection, Rst As New ADODB.Recordset
Dim B As Integer, A As Integer, Rg As Range, Fichier As String

'Chemin et fichier où la donnée doit être copiée
Fichier = "C:Atravailclasseur1.xls"

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=yes;"""

'ChampA est le nom de la plage nommée de la
'colonne A dans le fichier de destination.
Rst.Open "Select titre from [Feuil1$] ", Conn, _
adOpenStatic, adLockOptimistic

'Définir la plage de cellule en colonne A que
'tu veux ajouter à ton ChampA du fichier de destination

With Worksheets("Feuil2") 'Nom feuille à adapter
Set Rg = .Range("A1:a10") 'Plage à adapter
End With
A = Rst.RecordCount
For A = 1 To Rg.Rows.Count
Rst.AddNew 'ajoute le nouveau enregistrement
Rst.Fields(0).Value = Rg(A, 1)
Rst.Update 'Mise à jour du recordset

Next
'Ferme le recordset, la connection
Rst.Close: Conn.Close
'Libère la mémoire des objets
Set Rst = Nothing
Set Conn = Nothing
End Sub
'--------------------------------------


Salutations!





"Philippe B." a écrit dans le message de news:

Bonjour à tous,
Je cherche à savoir comment faire une macro qui lors de son excecution

Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A1,
puis lors d'une deuxieme excution
Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A2 (car A1 est déja occupé)

...etc

Merci de votre aide à tous.
--
Cordialement,
Philippe B.
Avatar
Philippe B.
Bonsoir pouvez vous me donner une address internet ou un livre pour connaitre
un peu plus sur ADO, car j'avoue c'est un peu compliqué pour moi
--
Cordialement,
Philippe B.


"michdenis" wrote:

Bonjour Philippe,

Avec ADO(activex data object)

Tu ajoutes la bibliothèque suivante à ton projet
fenêtre éditeur de code / barre menu / outils / référence
"Microsoft activex data object 2.x librairy"

Dans la feuille de destination : Ta colonne dans l'exemple porte
l,étiquette de colonne "titre" à modifier dans la requête selon
ton application

La feuille de l'exemple est Feuil1, à modifier dans [Feuil1$]
selon celle de ton application.

Et tu détermines dans la procédure, la plage de cellules que tu veux
ajouter à cette déja en place ! Cette procédure ne fait qu'ajouter
aux données existantes, elle ne remplace pas des données déjà
existantes... c'est possible mais ce n'était pas ta demande !

'--------------------------------------
Sub Miseàjour()

Dim Conn As Connection, Rst As New ADODB.Recordset
Dim B As Integer, A As Integer, Rg As Range, Fichier As String

'Chemin et fichier où la donnée doit être copiée
Fichier = "C:Atravailclasseur1.xls"

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=yes;"""

'ChampA est le nom de la plage nommée de la
'colonne A dans le fichier de destination.
Rst.Open "Select titre from [Feuil1$] ", Conn, _
adOpenStatic, adLockOptimistic

'Définir la plage de cellule en colonne A que
'tu veux ajouter à ton ChampA du fichier de destination

With Worksheets("Feuil2") 'Nom feuille à adapter
Set Rg = .Range("A1:a10") 'Plage à adapter
End With
A = Rst.RecordCount
For A = 1 To Rg.Rows.Count
Rst.AddNew 'ajoute le nouveau enregistrement
Rst.Fields(0).Value = Rg(A, 1)
Rst.Update 'Mise à jour du recordset

Next
'Ferme le recordset, la connection
Rst.Close: Conn.Close
'Libère la mémoire des objets
Set Rst = Nothing
Set Conn = Nothing
End Sub
'--------------------------------------


Salutations!





"Philippe B." a écrit dans le message de news:

Bonjour à tous,
Je cherche à savoir comment faire une macro qui lors de son excecution

Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A1,
puis lors d'une deuxieme excution
Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A2 (car A1 est déja occupé)

....etc

Merci de votre aide à tous.
--
Cordialement,
Philippe B.





Avatar
Philippe B.
Merci, J'ai essayer la macro c'est vraiment super je vais essayer maintenant
de la comprendre et de pouvoir l'adapter

un grand grand merci :-)
--
Cordialement,
Philippe B.


"PMO" wrote:

Bonjour,

Une piste avec le code suivant

A FAIRE AU PREALABLE (pour un test)
1) Créez un classeur et enregistrez-le dans C: sous le nom B.xls
2) Fermez B.xls
3) Créez un classeur et nommez une de ces feuilles "Test"
Faites attention à la casse (majuscules/minuscules)
4) Copiez le code suivant dans un module standard
'***********************
''### Remplacez "Test" par le nom ###
''### de la feuille où la cellule ###
''### A1 envoie l'information ###
Const MA_FEUILLE As String = "Test"
''### Adaptez le chemin ###
Const CHEMIN As String = "c:B.xls"
''###################################
Sub PMO_Transfert()
Dim W1 As Workbook
Dim W2 As Workbook
Dim lig&
Dim R As Range
Dim var
On Error GoTo Erreur
If ActiveSheet.Name <> MA_FEUILLE Then Exit Sub
Application.ScreenUpdating = False
Set W1 = ThisWorkbook
Set W2 = GetObject(CHEMIN)
W2.Windows(1).Visible = True
With W2.Sheets(1)
lig& = .UsedRange.Rows.Count
Set R = .Range("a" & lig& & "")
End With
var = W1.ActiveSheet.[a1]
If lig& = 1 And R = "" Then
R = var
Else
Set R = R.Offset(1, 0)
R = var
End If
W2.Save
W2.Close
Set W2 = Nothing
Erreur:
Application.ScreenUpdating = True
End Sub
5) Tapez une donnée dans la cellule A1 de la feuille
"Test" et entérinez
6) Lancez la macro PMO_Transfert
7) Refaites plusieurs fois les étapes 5 et 6

Allez vérifier dans B.xls si les données ont été répercutées.

POUR VOTRE USAGE
Adaptez la constante Const MA_FEUILLE As String = "xxxxxx"
Adaptez la constante Const CHEMIN As String = "xxxxxx"

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,
Je cherche à savoir comment faire une macro qui lors de son excecution

Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A1,
puis lors d'une deuxieme excution
Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A2 (car A1 est déja occupé)

...etc

Merci de votre aide à tous.
--
Cordialement,
Philippe B.




Avatar
michdenis
Bonjour Philippe,

Ce livre est le meilleure (simple et méthodique) que je connaisse sur ce sujet.
Le seul hic, c'est qu'il est en anglais. Je ne sais pas si la traduction
française existe. Il est très accessible ...!

'------------------------
ADO: ActiveX Data Objects
Jason T. Roff
Publisher: O'Reilly
First Edition June 2001
ISBN: 1-56592-415-0, 618 pages
'------------------------


Salutations!


"Philippe B." a écrit dans le message de news:

Bonsoir pouvez vous me donner une address internet ou un livre pour connaitre
un peu plus sur ADO, car j'avoue c'est un peu compliqué pour moi
--
Cordialement,
Philippe B.


"michdenis" wrote:

Bonjour Philippe,

Avec ADO(activex data object)

Tu ajoutes la bibliothèque suivante à ton projet
fenêtre éditeur de code / barre menu / outils / référence
"Microsoft activex data object 2.x librairy"

Dans la feuille de destination : Ta colonne dans l'exemple porte
l,étiquette de colonne "titre" à modifier dans la requête selon
ton application

La feuille de l'exemple est Feuil1, à modifier dans [Feuil1$]
selon celle de ton application.

Et tu détermines dans la procédure, la plage de cellules que tu veux
ajouter à cette déja en place ! Cette procédure ne fait qu'ajouter
aux données existantes, elle ne remplace pas des données déjà
existantes... c'est possible mais ce n'était pas ta demande !

'--------------------------------------
Sub Miseàjour()

Dim Conn As Connection, Rst As New ADODB.Recordset
Dim B As Integer, A As Integer, Rg As Range, Fichier As String

'Chemin et fichier où la donnée doit être copiée
Fichier = "C:Atravailclasseur1.xls"

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=yes;"""

'ChampA est le nom de la plage nommée de la
'colonne A dans le fichier de destination.
Rst.Open "Select titre from [Feuil1$] ", Conn, _
adOpenStatic, adLockOptimistic

'Définir la plage de cellule en colonne A que
'tu veux ajouter à ton ChampA du fichier de destination

With Worksheets("Feuil2") 'Nom feuille à adapter
Set Rg = .Range("A1:a10") 'Plage à adapter
End With
A = Rst.RecordCount
For A = 1 To Rg.Rows.Count
Rst.AddNew 'ajoute le nouveau enregistrement
Rst.Fields(0).Value = Rg(A, 1)
Rst.Update 'Mise à jour du recordset

Next
'Ferme le recordset, la connection
Rst.Close: Conn.Close
'Libère la mémoire des objets
Set Rst = Nothing
Set Conn = Nothing
End Sub
'--------------------------------------


Salutations!





"Philippe B." a écrit dans le message de news:

Bonjour à tous,
Je cherche à savoir comment faire une macro qui lors de son excecution

Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A1,
puis lors d'une deuxieme excution
Fichier A (ouvert) cell A1 envoie et copie information dans Fichier B (non
ouvert) Cell A2 (car A1 est déja occupé)

....etc

Merci de votre aide à tous.
--
Cordialement,
Philippe B.





Avatar
PMO
Bonjour,

Je possède le livre en Français suivant qu'on trouve toujours en librairie:
La référence du programmeur ADO 2.0
dans la collection "Solutions développeurs WROX"
Auteurs: David Sussman, Alex Homer
Editeur: Eyrolles

D'autre part, un article de Clément Marcotte précise plusieurs
liens sur de la documentation ADO
http://www.microsoft.com/france/communautes/webnews/France/default.mspx?dg=microsoft.public.fr.excel&midïdff67a-8dc5-4d13-b383-9609851ef841&sloc=fr-FR

Cordialement.
--
PMO
Patrick Morange



Bonjour Philippe,

Ce livre est le meilleure (simple et méthodique) que je connaisse sur ce sujet.
Le seul hic, c'est qu'il est en anglais. Je ne sais pas si la traduction
française existe. Il est très accessible ...!

'------------------------
ADO: ActiveX Data Objects
Jason T. Roff
Publisher: O'Reilly
First Edition June 2001
ISBN: 1-56592-415-0, 618 pages
'------------------------


Salutations!


"Philippe B." a écrit dans le message de news:

Bonsoir pouvez vous me donner une address internet ou un livre pour connaitre
un peu plus sur ADO, car j'avoue c'est un peu compliqué pour moi
--
Cordialement,
Philippe B.


"michdenis" wrote: