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.../
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.../
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.../
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.../
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.../
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.../
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 !
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 !
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 !
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 !
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 !
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 !
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!
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!
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!