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

Copie VBA d'une feuille d'un fichier à d'autres

7 réponses
Avatar
géjoun
Bonjour,

Cette question à déja été abordé sur ce forum plusieurs fois car j'ai trouvé
des débuts de réponses, mais je n'arrive quand même pas à faire ce que je
veux.

J'ai un fichier de référence avec une feuille appelé 'Nom' dans lesquel se
trouve des adresses.

Je voudrais par une macro dans ce fichier de référence pouvoir copier toute
cette feuille dans d'autres fichiers qui ont aussi la même feuille avec le
même nom (sauf que dans ces fichiers là, leelles sont masquées); et du coup
remplacer les feuilles déja existantes dans les autres fichiers par celle de
référence copiée.

Donc, est-ce possible de faire ça sans forcément devoir ouvrir tous les
fichiers dans lesquels il faut copié la feuille de référence? Comment?

Pour définir les fichiers dans lesquels il faut copier la feuille de
référence, est-ce possible d'utiliser dans la macro des chemins qui
pointeraient vers les fichiers à mettre à jour?


Merci!

--
géjoun
dam-mail2005@ifrance.com
/Enlever l`année pour m`écrire.../

7 réponses

Avatar
géjoun
re!

Personne à un début de solutions? est-ce infaisable? :-(




Bonjour,

Cette question à déja été abordé sur ce forum plusieurs fois car j'ai trouvé
des débuts de réponses, mais je n'arrive quand même pas à faire ce que je
veux.

J'ai un fichier de référence avec une feuille appelé 'Nom' dans lesquel se
trouve des adresses.

Je voudrais par une macro dans ce fichier de référence pouvoir copier toute
cette feuille dans d'autres fichiers qui ont aussi la même feuille avec le
même nom (sauf que dans ces fichiers là, leelles sont masquées); et du coup
remplacer les feuilles déja existantes dans les autres fichiers par celle de
référence copiée.

Donc, est-ce possible de faire ça sans forcément devoir ouvrir tous les
fichiers dans lesquels il faut copié la feuille de référence? Comment?

Pour définir les fichiers dans lesquels il faut copier la feuille de
référence, est-ce possible d'utiliser dans la macro des chemins qui
pointeraient vers les fichiers à mettre à jour?


Merci!

--
géjoun

/Enlever l`année pour m`écrire.../


Avatar
MichDenis
Bonjour Géjoun,

Peux -tu élaborer davantage sur ce paragraphe ? Tu dois être précis.

A ) La copie d'une feuille par macro sans l'ouverture du fichier quand c'est possible... ce n'est pas toujours évident,
ne peut copier que les DONNÉES sans format, graphes... bouton de contrôles ...!

B ) Tu veux copier cette feuille en écrasant la feuille qui porte le même nom dans les autres classeurs ?

C ) Ces autres classeurs sont-ils tous dans le même répertoire ou dispersés sur le disque dur ?

D ) À partir de quel signe peut-on reconnaître (seulement par leur nom) que tel classeur possède vraiment une feuille
qui doit être écrasé par cette nouvelle feuille ?

E ) Quel est le nom de ta feuille ?

F ) Donne une idée de la disposition des données et du type d'information qu'elle contient. A-t-Elle des étiquettes de
colonnes ? Des Données sous forme de Tableau ?

G ) ... tout autre détail qui pourrait être pertinent ! Tu as une idée pourquoi tu n'as pas eu de réponses !

'-----------------------
Je voudrais par une macro dans ce fichier de référence pouvoir copier toute
cette feuille dans d'autres fichiers qui ont aussi la même feuille avec le
même nom (sauf que dans ces fichiers là, leelles sont masquées); et du coup
remplacer les feuilles déja existantes dans les autres fichiers par celle de
référence copiée.
'-----------------------


Salutations!


"géjoun" a écrit dans le message de news:

re!

Personne à un début de solutions? est-ce infaisable? :-(




Bonjour,

Cette question à déja été abordé sur ce forum plusieurs fois car j'ai trouvé
des débuts de réponses, mais je n'arrive quand même pas à faire ce que je
veux.

J'ai un fichier de référence avec une feuille appelé 'Nom' dans lesquel se
trouve des adresses.

Je voudrais par une macro dans ce fichier de référence pouvoir copier toute
cette feuille dans d'autres fichiers qui ont aussi la même feuille avec le
même nom (sauf que dans ces fichiers là, leelles sont masquées); et du coup
remplacer les feuilles déja existantes dans les autres fichiers par celle de
référence copiée.

Donc, est-ce possible de faire ça sans forcément devoir ouvrir tous les
fichiers dans lesquels il faut copié la feuille de référence? Comment?

Pour définir les fichiers dans lesquels il faut copier la feuille de
référence, est-ce possible d'utiliser dans la macro des chemins qui
pointeraient vers les fichiers à mettre à jour?


Merci!

--
géjoun

/Enlever l`année pour m`écrire.../


Avatar
géjoun
Salut,

Effectivement, je pense avoir compris pourquoi j'ai pas de réponses! :-)


Peux -tu élaborer davantage sur ce paragraphe ? Tu dois être précis.


Attention, je rentre dans les détails ;-)


A ) La copie d'une feuille par macro sans l'ouverture du fichier quand c'est possible... ce n'est pas toujours évident, ne peut copier que les DONNÉES sans format, graphes... bouton de contrôles ...!


A ce niveau là, ça tombe bien puisque c'est vraiment juste un listing de
contacts à copier, et ce listing ne possède pas de formules, ni de
graphiques, ni de formats, ce sont vraiment simplement des mots rentrés dans
des cases, rien d'autre.


B ) Tu veux copier cette feuille en écrasant la feuille qui porte le même nom dans les autres classeurs ?


J'ai le fichier de référence = le listing que je mets à jour régulièrement,
et c'est lui qui possèderait la macro qui permettrait de copier le contenu de
ce même fichier dans les autres (pour à leur tour les mettre à jour).

Ensuite, quant à la question de copier la feuille pour écraser celles déja
présentes dans les autres fichiers, ou "seulement" copier tout son contenu
(ou juste une sélection si c'est plus simple) pour aller le coller (et
remplacer) le contenu des autres feuilles dans les autres fichiers, en fait,
je ne m'y connais certainement pas assez pour savoir si ça veut dire
exactement la même chose (copier la feuille ou copier le contenu) ou si l'un
est plus simple que l'autre à mettre en place;
mais pour moi, ça n'a pas d'importance, du moment que je retrouve les
données du fichier initial dans les autres feuilles une fois la macro
exécutée.

Si il est plus simple de copier seulement le contenu (ou juste une partie
(dans ce cas, c'est la zone A1:F1000) de la feuille que de copier la feuille
elle même (si il y a une différence au niveau vba), pas de problèmes! (et
vice versa aussi).


C ) Ces autres classeurs sont-ils tous dans le même répertoire ou dispersés sur le disque dur ?


C'est bien là le problème; ils ne sont pas tous dans le même répertoire,
n'ont pas tous le même nom (mais par contre, ils possèdent tous la même
feuille cachée qui porte partout le même nom "Liste", qui n'a aucune formule,
format ou graphique (juste des données) et qui doit acceuillir la copie des
données du fichier initial).

Il y a des fichiers "receveurs" qui sont sur le disque dur, et d'autres sur
le serveur, et c'est pour ça que je demandais si il était possible dans la
macro de les identifier en les ciblant par leurs chemins respectifs (chemins
que je mettrais à jour dans la macro en cas de déplacement de fichiers; mais
bon, si il y a plus simple.... ;-) ).


D ) À partir de quel signe peut-on reconnaître (seulement par leur nom) que tel classeur possède vraiment une feuille qui doit être écrasé par cette nouvelle feuille ?


Là, ça reprend un peu ma précédente réponse; puisque à part "pointer" par un
moyen quelconque le fichier qui possède une feuille, il n'y a pas de point
récurrent d'un fichier à l'autre, et je ne vois pas comment on pourrait les
reconnaitre, même si en fait il s'agit toujours de bons de commande, l'un
peut s'appeler "Isidor" et l'autre "Carotte", et pourtant tous les deux
posséder la feuille cachée (qui est toujours nommée "Liste").

Et c'est pour ça que je pensais à les cibler par leurs chemins, car en les
définissant comme ça, pas de problèmes puisqu'au moins, même si ils n'ont pas
le même nom, on est sûr que c'est bien les bons fichiers (au maximum il y
aura 10 fichiers à mettre à jour).


E ) Quel est le nom de ta feuille ?


La feuille dans tous les fichiers à mettre à jour s'appelle toujours "Liste".


F ) Donne une idée de la disposition des données et du type d'information qu'elle contient. A-t-Elle des étiquettes de colonnes ? Des Données sous forme de Tableau ?


Le fichier de réference, comme les feuilles "Liste" à mettre à jour dans les
autres fichiers, sont disposés exactement pareil, la ligne 1 est vierge, la
ligne 2 possède les étiquettes ci-dessous en majuscules, la ligne 3 est
vierge, puis à partir de la ligne 4 on retrouve :

Colonne A : Nom de l'entreprise
Colonne B : Adresse
Colonne C : Code postal + Ville
Colonne D : Téléphone
Colonne E : Fax
Colonne F : Correspondant

Et c'est tout!


G ) ... tout autre détail qui pourrait être pertinent ! Tu as une idée pourquoi tu n'as pas eu de réponses !


Tout autre détails....
A part signaler que les feuilles "Liste" à mettre à jour sont masquées dans
les fichiers, et que les fichiers possèdent une macro, je vois pas trop quoi
dire d'autres.
Si, éventuellement, que dans les fichiers à mettre à jour, il y aura
certainement des .xls et des .xlt (si c'est possible!)

Si il y a besoin de plus de détails, demandez moi! ;-)

Merci d'avance!

--
géjoun

/Enlever l`année pour m`écrire.../

Avatar
MichDenis
Bonsoir géjoun,

Et dire que tout ceci a été testé sommairement, car, je ne suis pas dans un environnement réseau !!!
Et si tu veux sauvegarder une copie de tous tes fichiers avant de débuter ...!

A ) 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.0 Objects Librairy" (C'est essentiel)

Méthodologie à suivre : Pour s'assurer que ça tourne rondement:

A ) Tu ouvres chacun des classeurs qui doivent être mise à jour et dans la feuille "Liste", tu cliques sur le bouton
dans le coin supérieur gauche à l'intersection des colonnes et les lignes, quand toute ta feuille est sélectionnée, tu
utilises la commande "SUPPRIMER" du menu édition / supprimer

B ) Tu insères dans la ligne 1, une étiquette de colonne pour chacune des colonnes dont tu vas avoir de besoin. Le nom
n'a pas d'importance, en autant que la cellule n'est pas vide ! Pour te permettre plus de flexibilité, tu peux ajouter
une colonne supplémentaire ou deux seulement au cas où tu aurais besoin d'insérer de l'information supplémentaire.
Excel n'est pas une vrai programme de base de données et si tu veux t'éviter de recommencer tout ce processus, à toi d'y
voir .... !

C ) Maintenant, si tu as des champs "date" dans cette feuille, il est impératif que tu formates la colonne susceptible
de recevoir ces données. Le format a appliqué est : [>1]jj/mm/aa; , Si tu as une colonne qui contient des nombres,
voici un exemple de format que tu peux appliquer à l'ensemble de la colonne : # ##0,00;-# ##0,00;; C'est selon tes
besoins.

D ) Lorsque tu as terminé, tu enregistres ton classeur. Tu répètes ce processus pour chacun de tes classeurs que tu dois
mettre à jour.

E ) La macro a été conçu pour 7 colonnes (de A à G)... tu peux en ajouter ou en enlever ce n'est pas vraiment un
problème mais si tu dois le faire, fais le au tout début au moment même de la disposition de tes feuilles !

PRÉSENTATION DE LA MACRO :

A ) le nom de la feuille Source des données et le nom des feuilles à mettre à jour portent toutes le même nom : "Liste"

B ) Tu dois renseigner dans la macro l'endroit où est situé la liste des adresses et fichiers qui doivent être mises à
jours.

C ) Si tu n'as pas de colonne de date ou de colonnes de nombres, modifie la dernière section pour les rendre conforme
aux autres ....


'-----------------------------------------
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, PlgFile As Range, X As Range

'Plage de cellules où tu as mis la liste des fichiers
'et leur chemin que tu désires mettre à jour.
With Worksheets("Feuil3") 'à déterminer
Set PlgFile = .Range("A1:A2") 'à déterminer
End With

For Each X In PlgFile
Fichier = X.Text

'Établissement de la connexion avec le fichier
'à mettre à jour
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 dans les fichiers concernés
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
Next
'libération de l'espace mémoire occupée par les objets
Set Rst = Nothing
Set Conn = Nothing
Set Rg = Nothing
Set PlgFile = Nothing
End Sub
'-----------------------------------------


Salutations!





"géjoun" a écrit dans le message de news:

Salut,

Effectivement, je pense avoir compris pourquoi j'ai pas de réponses! :-)


Peux -tu élaborer davantage sur ce paragraphe ? Tu dois être précis.


Attention, je rentre dans les détails ;-)


A ) La copie d'une feuille par macro sans l'ouverture du fichier quand c'est possible... ce n'est pas toujours
évident, ne peut copier que les DONNÉES sans format, graphes... bouton de contrôles ...!


A ce niveau là, ça tombe bien puisque c'est vraiment juste un listing de
contacts à copier, et ce listing ne possède pas de formules, ni de
graphiques, ni de formats, ce sont vraiment simplement des mots rentrés dans
des cases, rien d'autre.


B ) Tu veux copier cette feuille en écrasant la feuille qui porte le même nom dans les autres classeurs ?


J'ai le fichier de référence = le listing que je mets à jour régulièrement,
et c'est lui qui possèderait la macro qui permettrait de copier le contenu de
ce même fichier dans les autres (pour à leur tour les mettre à jour).

Ensuite, quant à la question de copier la feuille pour écraser celles déja
présentes dans les autres fichiers, ou "seulement" copier tout son contenu
(ou juste une sélection si c'est plus simple) pour aller le coller (et
remplacer) le contenu des autres feuilles dans les autres fichiers, en fait,
je ne m'y connais certainement pas assez pour savoir si ça veut dire
exactement la même chose (copier la feuille ou copier le contenu) ou si l'un
est plus simple que l'autre à mettre en place;
mais pour moi, ça n'a pas d'importance, du moment que je retrouve les
données du fichier initial dans les autres feuilles une fois la macro
exécutée.

Si il est plus simple de copier seulement le contenu (ou juste une partie
(dans ce cas, c'est la zone A1:F1000) de la feuille que de copier la feuille
elle même (si il y a une différence au niveau vba), pas de problèmes! (et
vice versa aussi).


C ) Ces autres classeurs sont-ils tous dans le même répertoire ou dispersés sur le disque dur ?


C'est bien là le problème; ils ne sont pas tous dans le même répertoire,
n'ont pas tous le même nom (mais par contre, ils possèdent tous la même
feuille cachée qui porte partout le même nom "Liste", qui n'a aucune formule,
format ou graphique (juste des données) et qui doit acceuillir la copie des
données du fichier initial).

Il y a des fichiers "receveurs" qui sont sur le disque dur, et d'autres sur
le serveur, et c'est pour ça que je demandais si il était possible dans la
macro de les identifier en les ciblant par leurs chemins respectifs (chemins
que je mettrais à jour dans la macro en cas de déplacement de fichiers; mais
bon, si il y a plus simple.... ;-) ).


D ) À partir de quel signe peut-on reconnaître (seulement par leur nom) que tel classeur possède vraiment une feuille
qui doit être écrasé par cette nouvelle feuille ?


Là, ça reprend un peu ma précédente réponse; puisque à part "pointer" par un
moyen quelconque le fichier qui possède une feuille, il n'y a pas de point
récurrent d'un fichier à l'autre, et je ne vois pas comment on pourrait les
reconnaitre, même si en fait il s'agit toujours de bons de commande, l'un
peut s'appeler "Isidor" et l'autre "Carotte", et pourtant tous les deux
posséder la feuille cachée (qui est toujours nommée "Liste").

Et c'est pour ça que je pensais à les cibler par leurs chemins, car en les
définissant comme ça, pas de problèmes puisqu'au moins, même si ils n'ont pas
le même nom, on est sûr que c'est bien les bons fichiers (au maximum il y
aura 10 fichiers à mettre à jour).


E ) Quel est le nom de ta feuille ?


La feuille dans tous les fichiers à mettre à jour s'appelle toujours "Liste".


F ) Donne une idée de la disposition des données et du type d'information qu'elle contient. A-t-Elle des étiquettes de
colonnes ? Des Données sous forme de Tableau ?


Le fichier de réference, comme les feuilles "Liste" à mettre à jour dans les
autres fichiers, sont disposés exactement pareil, la ligne 1 est vierge, la
ligne 2 possède les étiquettes ci-dessous en majuscules, la ligne 3 est
vierge, puis à partir de la ligne 4 on retrouve :

Colonne A : Nom de l'entreprise
Colonne B : Adresse
Colonne C : Code postal + Ville
Colonne D : Téléphone
Colonne E : Fax
Colonne F : Correspondant

Et c'est tout!


G ) ... tout autre détail qui pourrait être pertinent ! Tu as une idée pourquoi tu n'as pas eu de réponses !


Tout autre détails....
A part signaler que les feuilles "Liste" à mettre à jour sont masquées dans
les fichiers, et que les fichiers possèdent une macro, je vois pas trop quoi
dire d'autres.
Si, éventuellement, que dans les fichiers à mettre à jour, il y aura
certainement des .xls et des .xlt (si c'est possible!)

Si il y a besoin de plus de détails, demandez moi! ;-)

Merci d'avance!

--
géjoun

/Enlever l`année pour m`écrire.../

Avatar
géjoun.
Bonsoir,

Je viens de découvrir ta réponse, je me penche dessus demain pour voir ce
que j'arrive à faire, et je te tiens au courant!

Déja, merci! ;-)

--
Géjoun.

/Enlevez l'année pour m'écrire.../


MichDenis nous a écrit:

Bonsoir géjoun,

Et dire que tout ceci a été testé sommairement, car, je ne suis pas
dans un environnement réseau !!!
Et si tu veux sauvegarder une copie de tous tes fichiers avant de
débuter ...!

A ) 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.0 Objects Librairy" (C'est essentiel)

Méthodologie à suivre : Pour s'assurer que ça tourne rondement:

A ) Tu ouvres chacun des classeurs qui doivent être mise à jour et
dans la feuille "Liste", tu cliques sur le bouton dans le coin
supérieur gauche à l'intersection des colonnes et les lignes, quand
toute ta feuille est sélectionnée, tu utilises la commande
"SUPPRIMER" du menu édition / supprimer

B ) Tu insères dans la ligne 1, une étiquette de colonne pour chacune
des colonnes dont tu vas avoir de besoin. Le nom n'a pas
d'importance, en autant que la cellule n'est pas vide ! Pour te
permettre plus de flexibilité, tu peux ajouter une colonne
supplémentaire ou deux seulement au cas où tu aurais besoin
d'insérer de l'information supplémentaire. Excel n'est pas une vrai
programme de base de données et si tu veux t'éviter de recommencer
tout ce processus, à toi d'y voir .... !

C ) Maintenant, si tu as des champs "date" dans cette feuille, il est
impératif que tu formates la colonne susceptible de recevoir ces
données. Le format a appliqué est : [>1]jj/mm/aa; , Si tu as une
colonne qui contient des nombres, voici un exemple de format que tu
peux appliquer à l'ensemble de la colonne : # ##0,00;-# ##0,00;;
C'est selon tes besoins.

D ) Lorsque tu as terminé, tu enregistres ton classeur. Tu répètes ce
processus pour chacun de tes classeurs que tu dois mettre à jour.

E ) La macro a été conçu pour 7 colonnes (de A à G)... tu peux en
ajouter ou en enlever ce n'est pas vraiment un problème mais si tu
dois le faire, fais le au tout début au moment même de la disposition
de tes feuilles !

PRÉSENTATION DE LA MACRO :

A ) le nom de la feuille Source des données et le nom des feuilles à
mettre à jour portent toutes le même nom : "Liste"

B ) Tu dois renseigner dans la macro l'endroit où est situé la liste
des adresses et fichiers qui doivent être mises à jours.

C ) Si tu n'as pas de colonne de date ou de colonnes de nombres,
modifie la dernière section pour les rendre conforme aux autres ....


'-----------------------------------------
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, PlgFile As Range, X As Range

'Plage de cellules où tu as mis la liste des fichiers
'et leur chemin que tu désires mettre à jour.
With Worksheets("Feuil3") 'à déterminer
Set PlgFile = .Range("A1:A2") 'à déterminer
End With

For Each X In PlgFile
Fichier = X.Text

'Établissement de la connexion avec le fichier
'à mettre à jour
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 dans les fichiers concernés
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
Next
'libération de l'espace mémoire occupée par les objets
Set Rst = Nothing
Set Conn = Nothing
Set Rg = Nothing
Set PlgFile = Nothing
End Sub
'-----------------------------------------


Salutations!


Avatar
géjoun
Me revoila!

J'ai regardé d'un peu plus prés la macro, et je comprends pourquoi il
fallait plus de précisions! Je pensais pas qu'il fallait une macro aussi
'tordue'! ;-)

J'ai essayé de m'en servir en adaptant les différents points par rapport à
mon ordi, et je bute déja sur un soucis, je n'arrive pas à définir le chemin
de mon fichier à mettre à jour.

Est-ce qu'il faut bien rentrer le chemin comme ceci? :

'Plage de cellules où tu as mis la liste des fichiers
'et leur chemin que tu désires mettre à jour.
With Worksheets("C:MyFiles[CDEOriginal.xls]Liste!") 'à déterminer
Set PlgFile = .Range("A2:F1000") 'à déterminer
End With

parce que la macro stoppe à chaque fois à la ligne With Worksheets ; donc je
suppose que j'ai fait une erreur par rapport à ça.

Comment définir correctement ce chemin?

Merci!
Avatar
MichDenis
Bonjour géjoun,

| Je pensais pas qu'il fallait une macro aussi tordue

Écrire dans un fichier excel fermé... ce n'est pas toujours évident !


| With Worksheets("C:MyFiles[CDEOriginal.xls]Liste!") 'à déterminer
| Set PlgFile = .Range("A2:F1000") 'à déterminer
| End With

Dans le classeur où tu as mis la procédure, tu m'as dit que tu avais fait une liste dans une des feuilles qui
comportaient le chemin et le nom des fichiers à mettre à jour.

"C:MyFiles[CDEOriginal.xls]Liste!" -> C'est quoi ça ? Ce n'est sûrement pas le nom d'une feuille de calcul de ton
classeur ? Et cette feuille -> plage contenant ta liste -> doit faire parti du classeur !


Salutations!






"géjoun" a écrit dans le message de news:

Me revoila!

J'ai regardé d'un peu plus prés la macro, et je comprends pourquoi il
fallait plus de précisions! Je pensais pas qu'il fallait une macro aussi
'tordue'! ;-)

J'ai essayé de m'en servir en adaptant les différents points par rapport à
mon ordi, et je bute déja sur un soucis, je n'arrive pas à définir le chemin
de mon fichier à mettre à jour.

Est-ce qu'il faut bien rentrer le chemin comme ceci? :

'Plage de cellules où tu as mis la liste des fichiers
'et leur chemin que tu désires mettre à jour.
With Worksheets("C:MyFiles[CDEOriginal.xls]Liste!") 'à déterminer
Set PlgFile = .Range("A2:F1000") 'à déterminer
End With

parce que la macro stoppe à chaque fois à la ligne With Worksheets ; donc je
suppose que j'ai fait une erreur par rapport à ça.

Comment définir correctement ce chemin?

Merci!