OVH Cloud OVH Cloud

Copier une feuille d'un classeur vers un autre classeur sans l'ouvrir

8 réponses
Avatar
Fred64
Bonsoir tout le monde,
Je souhaite remplacer une feuille d'un classeur B.xlt à partir d'un classeur
A.xls sans avoir à ouvrir le classeur B. En fait c'est une feuille qui
contient une base de donnée (clients, adresse, ...) et qu'il faut mettre à
jour régulièrement mais vu que le fichier B est un fichier modèle, je veux
pouvoir le faire sans avoir à l'ouvrir.
J'espère avoir été clair.
Merci à tous ceux qui prendront le temps de réfléchir
Fred

8 réponses

Avatar
Hervé
Bonsoir Fred,

Si les classeurs ne posèdent qu'une feuille chacun (la feuille "base de
données"), le plus simple est de copier le classeur avec l'API "CopyFile"

Hervé.

"Fred64" a écrit dans le message de news:

Bonsoir tout le monde,
Je souhaite remplacer une feuille d'un classeur B.xlt à partir d'un
classeur A.xls sans avoir à ouvrir le classeur B. En fait c'est une
feuille qui contient une base de donnée (clients, adresse, ...) et qu'il
faut mettre à jour régulièrement mais vu que le fichier B est un fichier
modèle, je veux pouvoir le faire sans avoir à l'ouvrir.
J'espère avoir été clair.
Merci à tous ceux qui prendront le temps de réfléchir
Fred



Avatar
Fred64
Bonsoir Hervé,
Non le fichier de destination n'a pas qu'une seule feuille.

"Hervé" a écrit dans le message de news:
OU%
Bonsoir Fred,

Si les classeurs ne posèdent qu'une feuille chacun (la feuille "base de
données"), le plus simple est de copier le classeur avec l'API "CopyFile"

Hervé.

"Fred64" a écrit dans le message de news:

Bonsoir tout le monde,
Je souhaite remplacer une feuille d'un classeur B.xlt à partir d'un
classeur A.xls sans avoir à ouvrir le classeur B. En fait c'est une
feuille qui contient une base de donnée (clients, adresse, ...) et qu'il
faut mettre à jour régulièrement mais vu que le fichier B est un fichier
modèle, je veux pouvoir le faire sans avoir à l'ouvrir.
J'espère avoir été clair.
Merci à tous ceux qui prendront le temps de réfléchir
Fred







Avatar
Fred64
Bonsoir Hervé
Non le fichier de destination contient plusiers feuilles
Merci
"Hervé" a écrit dans le message de news:
OU%
Bonsoir Fred,

Si les classeurs ne posèdent qu'une feuille chacun (la feuille "base de
données"), le plus simple est de copier le classeur avec l'API "CopyFile"

Hervé.

"Fred64" a écrit dans le message de news:

Bonsoir tout le monde,
Je souhaite remplacer une feuille d'un classeur B.xlt à partir d'un
classeur A.xls sans avoir à ouvrir le classeur B. En fait c'est une
feuille qui contient une base de donnée (clients, adresse, ...) et qu'il
faut mettre à jour régulièrement mais vu que le fichier B est un fichier
modèle, je veux pouvoir le faire sans avoir à l'ouvrir.
J'espère avoir été clair.
Merci à tous ceux qui prendront le temps de réfléchir
Fred







Avatar
Jacky
Bonsoir,

Regarde ici:
http://frederic.sigonneau.free.fr/code/Ado/LireEcrireFichierFerme.txt

Salutations
JJ

"Fred64" a écrit dans le message de news:

Bonsoir tout le monde,
Je souhaite remplacer une feuille d'un classeur B.xlt à partir d'un
classeur A.xls sans avoir à ouvrir le classeur B. En fait c'est une
feuille qui contient une base de donnée (clients, adresse, ...) et qu'il
faut mettre à jour régulièrement mais vu que le fichier B est un fichier
modèle, je veux pouvoir le faire sans avoir à l'ouvrir.
J'espère avoir été clair.
Merci à tous ceux qui prendront le temps de réfléchir
Fred



Avatar
Fred64
Bonsoir Jacky,
Comment puis je lui dire de remplacer la feuille "Base de donnée" du fichier
de destination par la feuille "Base de donnée" du fichier source ?
Merci

"Jacky" a écrit dans le message de news:
%
Bonsoir,

Regarde ici:
http://frederic.sigonneau.free.fr/code/Ado/LireEcrireFichierFerme.txt

Salutations
JJ

"Fred64" a écrit dans le message de news:

Bonsoir tout le monde,
Je souhaite remplacer une feuille d'un classeur B.xlt à partir d'un
classeur A.xls sans avoir à ouvrir le classeur B. En fait c'est une
feuille qui contient une base de donnée (clients, adresse, ...) et qu'il
faut mettre à jour régulièrement mais vu que le fichier B est un fichier
modèle, je veux pouvoir le faire sans avoir à l'ouvrir.
J'espère avoir été clair.
Merci à tous ceux qui prendront le temps de réfléchir
Fred










Avatar
michdenis
Bonjour Fred64,

Voici un exemple qu'il te faudra adapter :

tu dois ajouter à ton projetVBA, la référence suivante à partir de la
fenêtre VBA, barre des menus / Outils / références :
"Microsoft Activex Data 2.x Objects Librairy" (C'est essentiel)

Le nom de la feuille de calcul du modèle est : Liste à adapter
Le chemin et le nom du modèle - > à adapter
le nombre de colonnes et le type de données -> à adapter ...

'-----------------------------------------
Sub MiseAjourDesFeuillesListe()

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

Fichier = "c:ExcelMonModèle.xlt"

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

'Ouverture du recordset
Rst.Open "Select * from [Liste$] ", Conn, _
adOpenKeyset, adLockOptimistic

'Déterminer la plage de cellules dans ce fichier
'qui doit être transmis aux autres fichiers.
With Worksheets("Liste")
Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With
B = Rg.Rows.Count
C = Rst.RecordCount
'Sert à déterminer le nombre de boucles maximales
'nécessaires pour s'assurer que toute la plage de
'données ou du recordset a été parcourue
If B > C Then
D = B
Else
D = C
End If
'Mise à jour du recordset
For A = 1 To D
If A > C Then
Rst.AddNew
End If
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(6) = Rg.Item(A, 7) 'Colonne G
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!




"Fred64" a écrit dans le message de news:
Bonsoir tout le monde,
Je souhaite remplacer une feuille d'un classeur B.xlt à partir d'un classeur
A.xls sans avoir à ouvrir le classeur B. En fait c'est une feuille qui
contient une base de donnée (clients, adresse, ...) et qu'il faut mettre à
jour régulièrement mais vu que le fichier B est un fichier modèle, je veux
pouvoir le faire sans avoir à l'ouvrir.
J'espère avoir été clair.
Merci à tous ceux qui prendront le temps de réfléchir
Fred
Avatar
Fred64
HELP, HELP, Michdenis
J'ai vraiment du mal à modifier tes données .
En imaginant que le fichier source s'appelle "Source.xls".
La feuille du fichier source s'appelle "A déplacer"
Le fichier destination s'appelle "Destination.xlt".
La feuille du fichier destination s'appelle "A modifier".

Comment modifier tes infos ?
Merci ;-)

"Fred64" a écrit dans le message de news:

Bonsoir tout le monde,
Je souhaite remplacer une feuille d'un classeur B.xlt à partir d'un
classeur A.xls sans avoir à ouvrir le classeur B. En fait c'est une
feuille qui contient une base de donnée (clients, adresse, ...) et qu'il
faut mettre à jour régulièrement mais vu que le fichier B est un fichier
modèle, je veux pouvoir le faire sans avoir à l'ouvrir.
J'espère avoir été clair.
Merci à tous ceux qui prendront le temps de réfléchir
Fred



Avatar
Fred64
Merci les amis, le problème est résolu :-)

"Fred64" a écrit dans le message de news:

Bonsoir tout le monde,
Je souhaite remplacer une feuille d'un classeur B.xlt à partir d'un
classeur A.xls sans avoir à ouvrir le classeur B. En fait c'est une
feuille qui contient une base de donnée (clients, adresse, ...) et qu'il
faut mettre à jour régulièrement mais vu que le fichier B est un fichier
modèle, je veux pouvoir le faire sans avoir à l'ouvrir.
J'espère avoir été clair.
Merci à tous ceux qui prendront le temps de réfléchir
Fred