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

transfert de données

10 réponses
Avatar
CBR
Bonjour à tous

Petit problème que je n'arrive pas à résoudre. (Bon c'est vrai, j'ai
cherché, sans plus, zig....)
A savoir, comment transférer des données récupérées sur une feuille Excel
d'un classeur ouvert
vers une feuille d'un autre classeur sans ouvrir ce dernier et à la suite
d'entrées précédentes ????

Ceci à l'aide d'une macro bien sur, située dans le classeur ouvert.
(A moins que !!! La macro ne soit pas nécessaire ???? )

Merci de votre aide

CBR

10 réponses

Avatar
cousinhub
Bonsoir, sans chercher vraiment, ou sans vraiment chercher? Zag.....)
issu d'une question vieille quand même de 2 jours, c'est vrai, on n'a
plus le même président, une solution offerte par JB :

rep = "d:classeurs"
nf = Dir(rep & "*.xls")
Do While nf <> ""
Workbooks.Open Filename:=rep & nf
[A1] = DateSerial(2007,1,1)
ActiveWorkbook.Save
ActiveWorkbook.Close
nf = Dir
Loop

A modifier bien évidemment....
PS, écrire dans un fichier fermé, c'est comme gagner au tiercé sans
jouer.....;-)
Reviens si tu as un souci, mais t'as vu le principe, déterminer le
répertoire, situer le fichier, l'ouvrir, y écrire ce que tu veux,
enregistrer, le fermer.
Tu peux en plus y rajouter une instruction en début de code :

Application.ScreenUpdating = False

afin d'éviter des clignotements intempestifs....
Bonne soirée

Bonjour à tous

Petit problème que je n'arrive pas à résoudre. (Bon c'est vrai, j'ai
cherché, sans plus, zig....)
A savoir, comment transférer des données récupérées sur une feuille Excel
d'un classeur ouvert
vers une feuille d'un autre classeur sans ouvrir ce dernier et à la suite
d'entrées précédentes ????

Ceci à l'aide d'une macro bien sur, située dans le classeur ouvert.
(A moins que !!! La macro ne soit pas nécessaire ???? )

Merci de votre aide

CBR




Avatar
Boisgontier
Bonsoir,

Nom Prenom Age DateNaissance Ville
TERRIEUR ALAIN 22 01/02/1975 CAEN
SUPER MAN 23 21/03/1974 LILLE
HYPER MEDIA 33 03/12/1980 REIMS
QUINT CHARLES 44 18/03/1982 TOURS


Sub ajout()
ChDir ActiveWorkbook.Path
Set Cnn = New ADODB.Connection
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source­ODestination.XLS;Extended Properties=Excel 8.0;"
For i = 1 To [BDorigine].Rows.Count - 1
Sql = "INSERT INTO BDDestination (Nom,Prenom,age,DateNaissance,Ville)" _
& " Values('" & [Liste].Cells(i, 1) & "'," & _
"'" & [Liste].Cells(i, 2) & "'," & _
[Liste].Cells(i, 3) & "," & _
"#" & Format([Liste].Cells(i, 4), "mm/dd/yy") & "#," & _
"'" & [Liste].Cells(i, 5) & "')"
'MsgBox Sql
Cnn.Execute Sql
Next i
Cnn.Close
Set Cnn = Nothing
End Sub

http://cjoint.com/?fqvUZJDjEh

JB



"CBR" a écrit dans le message de news:
464b5bb8$0$32303$

Bonjour à tous

Petit problème que je n'arrive pas à résoudre. (Bon c'est vrai, j'ai
cherché, sans plus, zig....)
A savoir, comment transférer des données récupérées sur une feuille Excel
d'un classeur ouvert
vers une feuille d'un autre classeur sans ouvrir ce dernier et à la suite
d'entrées précédentes ????

Ceci à l'aide d'une macro bien sur, située dans le classeur ouvert.
(A moins que !!! La macro ne soit pas nécessaire ???? )

Merci de votre aide

CBR



Avatar
CBR
Merci cousinhub et JB de votre aide (si rapide)
je vais voir ce que je peux faire avec çà.

Bonsoir

CBR
Avatar
cousinhub
Bonsoir, JB
J'ai essayé, mais, plouf
MSG d'erreur :

Erreur d'exécution '-2147217865 (80040e37)':

Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet
'BDDestination'. Assurez-vous que l'objet existe et que vous avez
correctement saisi son nom et son chemin d'accès.

Si je modifie le code Excel 8.0 par Excel 11.0, autre msg d'erreur :

Erreur d'exécution '-2147467259 (80004005)':

Pilote ISAM introuvable

Une référence manquante?

bonne soirée


Bonsoir,

Nom Prenom Age DateNaissance Ville
TERRIEUR ALAIN 22 01/02/1975 CAEN
SUPER MAN 23 21/03/1974 LILLE
HYPER MEDIA 33 03/12/1980 REIMS
QUINT CHARLES 44 18/03/1982 TOURS


Sub ajout()
ChDir ActiveWorkbook.Path
Set Cnn = New ADODB.Connection
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source­ODestination.XLS;Extended Properties=Excel 8.0;"
For i = 1 To [BDorigine].Rows.Count - 1
Sql = "INSERT INTO BDDestination (Nom,Prenom,age,DateNaissance,Ville)" _
& " Values('" & [Liste].Cells(i, 1) & "'," & _
"'" & [Liste].Cells(i, 2) & "'," & _
[Liste].Cells(i, 3) & "," & _
"#" & Format([Liste].Cells(i, 4), "mm/dd/yy") & "#," & _
"'" & [Liste].Cells(i, 5) & "')"
'MsgBox Sql
Cnn.Execute Sql
Next i
Cnn.Close
Set Cnn = Nothing
End Sub

http://cjoint.com/?fqvUZJDjEh

JB



"CBR" a écrit dans le message de news:
464b5bb8$0$32303$
Bonjour à tous

Petit problème que je n'arrive pas à résoudre. (Bon c'est vrai, j'ai
cherché, sans plus, zig....)
A savoir, comment transférer des données récupérées sur une feuille Excel
d'un classeur ouvert
vers une feuille d'un autre classeur sans ouvrir ce dernier et à la suite
d'entrées précédentes ????

Ceci à l'aide d'une macro bien sur, située dans le classeur ouvert.
(A moins que !!! La macro ne soit pas nécessaire ???? )

Merci de votre aide

CBR







Avatar
CBR
ReBonsoir

ouais! pas aussi simple que çà de mettre en oeuvre vos 2 idées.

Celle de cousinhub simple mais incomplète et celle de JB sauvegarde
un champ complet .

Quelques précisions sur ce que je veux faire:

Classeur A (ouvert dans c:) , valeurs de 10 cellules non cotes à cotes
récupérées sous forme " set Val1 = App..... cells (x,y)"
Ces 10 valeurs sont à transférer dans:
Classeur B (fermé dans d:) , onglet XXX, cellules "Ax" ; "Bx"; etc ( x=ligne
vide à rechercher à chaque sauvegarde)

Il faut que la macro recopie ces données dans une feuille XXX de ce classeur
B et dans des cellules Ax précises.
A la limite on peut envisager d'ouvrir ce classeur B et de sauvegarder et
fermer par la suite , si cela peut simplifier
les choses, comme le fait la soluce de cousinhub.
Je suppose également que cette macro que l'on va élaborer devra être définie
comme public et non privé pour
qu'elle puisse fonctionner sur le classeur B ? Non? Idem pour les variables
Val1....... ?

A vous relire

Bsoir
CBR


"CBR" a écrit dans le message de news:
464b5bb8$0$32303$

Bonjour à tous

Petit problème que je n'arrive pas à résoudre. (Bon c'est vrai, j'ai
cherché, sans plus, zig....)
A savoir, comment transférer des données récupérées sur une feuille Excel
d'un classeur ouvert
vers une feuille d'un autre classeur sans ouvrir ce dernier et à la suite
d'entrées précédentes ????

Ceci à l'aide d'une macro bien sur, située dans le classeur ouvert.
(A moins que !!! La macro ne soit pas nécessaire ???? )

Merci de votre aide

CBR



Avatar
JB
Bonjour CousinHub,

-Il faut cocher Microsoft Activex Data Object 2.8 dans Outils/
Références
-Les fichiers ADOOrigine.xls et ADODestination.xls oivent être dans le
même répertoire.

http://boisgontierjacques.free.fr/fichiers/ADOAjout.zip

Cordialement JB

On 16 mai, 22:26, cousinhub wrote:
Bonsoir, JB
J'ai essayé, mais, plouf
MSG d'erreur :

Erreur d'exécution '-2147217865 (80040e37)':

Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet
'BDDestination'. Assurez-vous que l'objet existe et que vous avez
correctement saisi son nom et son chemin d'accès.

Si je modifie le code Excel 8.0 par Excel 11.0, autre msg d'erreur :

Erreur d'exécution '-2147467259 (80004005)':

Pilote ISAM introuvable

Une référence manquante?

bonne soirée




Bonsoir,

Nom Prenom Age DateNaissance Ville
TERRIEUR ALAIN 22 01/02/1975 CAEN
SUPER MAN 23 21/03/1974 LILLE
HYPER MEDIA 33 03/12/1980 REIMS
QUINT CHARLES 44 18/03/1982 TOURS

Sub ajout()
ChDir ActiveWorkbook.Path
Set Cnn = New ADODB.Connection
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source­ODestination.XLS;Extended Properties=Excel 8.0;"
For i = 1 To [BDorigine].Rows.Count - 1
Sql = "INSERT INTO BDDestination (Nom,Prenom,age,DateNaissance,Vi lle)" _
& " Values('" & [Liste].Cells(i, 1) & "'," & _
"'" & [Liste].Cells(i, 2) & "'," & _
[Liste].Cells(i, 3) & "," & _
"#" & Format([Liste].Cells(i, 4), "mm/dd/yy") & "#," & _
"'" & [Liste].Cells(i, 5) & "')"
'MsgBox Sql
Cnn.Execute Sql
Next i
Cnn.Close
Set Cnn = Nothing
End Sub

http://cjoint.com/?fqvUZJDjEh

JB

"CBR" a écrit dans le message de news:
464b5bb8$0$32303$
Bonjour à tous

Petit problème que je n'arrive pas à résoudre. (Bon c'est vrai, j'ai
cherché, sans plus, zig....)
A savoir, comment transférer des données récupérées sur une feuille Excel
d'un classeur ouvert
vers une feuille d'un autre classeur sans ouvrir ce dernier et à la suite
d'entrées précédentes ????

Ceci à l'aide d'une macro bien sur, située dans le classeur ouvert.
(A moins que !!! La macro ne soit pas nécessaire ???? )

Merci de votre aide

CBR- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Avatar
JB
Bonjour,


Les cellules B2,B3,... du classeur A sont sauvegardées dans une BD
située dans un autre fichier (classeur B)

Sub sauvegardeFiche()
Application.ScreenUpdating = False
wSource = ThisWorkbook.Name
sSource = ActiveSheet.Name
rep = ThisWorkbook.Path
Workbooks.Open Filename:=rep & "" & "BDBase.xls"
Sheets("BD").Select
[A65000].End(xlUp).Offset(1, 0) = Workbooks(wSource).Sheets(sSource).
[B2]
[A65000].End(xlUp).Offset(0, 1) = Workbooks(wSource).Sheets(sSource).
[B3]
[A65000].End(xlUp).Offset(0, 2) = Workbooks(wSource).Sheets(sSource).
[B4]
[A65000].End(xlUp).Offset(0, 3) = Workbooks(wSource).Sheets(sSource).
[B5]
ActiveWorkbook.Save
ActiveWorkbook.Close
[B2:B5].ClearContents
End Sub

http://boisgontierjacques.free.fr/fichiers/Cellules/BDAjoutFiche.zip

Cordialement JB


On 16 mai, 23:29, "CBR" wrote:
ReBonsoir

ouais! pas aussi simple que çà de mettre en oeuvre vos 2 idées.

Celle de cousinhub simple mais incomplète et celle de JB sauvegarde
un champ complet .

Quelques précisions sur ce que je veux faire:

Classeur A (ouvert dans c:) , valeurs de 10 cellules non cotes à cotes
récupérées sous forme " set Val1 = App..... cells (x,y)"
Ces 10 valeurs sont à transférer dans:
Classeur B (fermé dans d:) , onglet XXX, cellules "Ax" ; "Bx"; etc ( x =ligne
vide à rechercher à chaque sauvegarde)

Il faut que la macro recopie ces données dans une feuille XXX de ce cla sseur
B et dans des cellules Ax précises.
A la limite on peut envisager d'ouvrir ce classeur B et de sauvegarder et
fermer par la suite , si cela peut simplifier
les choses, comme le fait la soluce de cousinhub.
Je suppose également que cette macro que l'on va élaborer devra êtr e définie
comme public et non privé pour
qu'elle puisse fonctionner sur le classeur B ? Non? Idem pour les variabl es
Val1....... ?

A vous relire

Bsoir
CBR

"CBR" a écrit dans le message de news:
464b5bb8$0$32303$





Bonjour à tous

Petit problème que je n'arrive pas à résoudre. (Bon c'est vrai, j 'ai
cherché, sans plus, zig....)
A savoir, comment transférer des données récupérées sur une f euille Excel
d'un classeur ouvert
vers une feuille d'un autre classeur sans ouvrir ce dernier et à la s uite
d'entrées précédentes ????

Ceci à l'aide d'une macro bien sur, située dans le classeur ouvert.
(A moins que !!! La macro ne soit pas nécessaire ???? )

Merci de votre aide

CBR- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
CBR
"JB" a écrit dans le message de news:

Bonjour,


Les cellules B2,B3,... du classeur A sont sauvegardées dans une BD
située dans un autre fichier (classeur B)
OK , merci JB pour cette nvelle solution
Je vais tacher de l'adapter à mes classeurs

Bonne journée

CBR

_______________________________________________________________

Sub sauvegardeFiche()
Application.ScreenUpdating = False
wSource = ThisWorkbook.Name
sSource = ActiveSheet.Name
rep = ThisWorkbook.Path
Workbooks.Open Filename:=rep & "" & "BDBase.xls"
Sheets("BD").Select
[A65000].End(xlUp).Offset(1, 0) = Workbooks(wSource).Sheets(sSource).
[B2]
[A65000].End(xlUp).Offset(0, 1) = Workbooks(wSource).Sheets(sSource).
[B3]
[A65000].End(xlUp).Offset(0, 2) = Workbooks(wSource).Sheets(sSource).
[B4]
[A65000].End(xlUp).Offset(0, 3) = Workbooks(wSource).Sheets(sSource).
[B5]
ActiveWorkbook.Save
ActiveWorkbook.Close
[B2:B5].ClearContents
End Sub

http://boisgontierjacques.free.fr/fichiers/Cellules/BDAjoutFiche.zip

Cordialement JB
Avatar
michel_bzs
Bonjour,

Avec la démo de Jacques

Dans outils-références de l'éditeur VBA , tu dois cocher la référ ence
"Microsoft ActiveX data Object 2.x library"

x dépend de ta version Win-Excel.

laisse le 8:0

Enfin, pour ma part, j'aurai déclaré cnn
cnn as ADODB.connection

Voili, voilou

Michel
Avatar
CBR
Hello JB

J'ais adapté la solution ci dessous à mon classeur et çà fonctionne.
Un seul point noir, la mise en forme de cellules destinées à recevoir des
dates.
Que dois-je rajouter à cette macro pour avoir automatiquement le bon format
de date et non pas une date sous forme de chiffre "39212"
Une des cellules de réception doit être sous format jj/mm/aa et une autre
sous format jjjj ?
Cela ne concerne bien sur que 2 cellules sur la 10zéne que je transfère.

merci de ton aide
CBR
______________________________________________________________

Sub sauvegardeFiche()
Application.ScreenUpdating = False
wSource = ThisWorkbook.Name
sSource = ActiveSheet.Name
rep = ThisWorkbook.Path
Workbooks.Open Filename:=rep & "" & "BDBase.xls"
Sheets("BD").Select
[A65000].End(xlUp).Offset(1, 0) = Workbooks(wSource).Sheets(sSource).
[B2]
[A65000].End(xlUp).Offset(0, 1) = Workbooks(wSource).Sheets(sSource).
[B3]
[A65000].End(xlUp).Offset(0, 2) = Workbooks(wSource).Sheets(sSource).
[B4]
[A65000].End(xlUp).Offset(0, 3) = Workbooks(wSource).Sheets(sSource).
[B5]
ActiveWorkbook.Save
ActiveWorkbook.Close
[B2:B5].ClearContents
End Sub

http://boisgontierjacques.free.fr/fichiers/Cellules/BDAjoutFiche.zip

Cordialement JB