Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
bonjour,
si ta base de données est destinée à être un tant soi peu conséquente et
que tu cherches de l'option multiutilisateur optimisée, définitivement
demande à ta boite d'acheter Access qui quand même ne lui reviendra pas
bien cher et sera de toute façon pour ce style d'utlisation bien plus
adapté.
A+Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
bonjour,
si ta base de données est destinée à être un tant soi peu conséquente et
que tu cherches de l'option multiutilisateur optimisée, définitivement
demande à ta boite d'acheter Access qui quand même ne lui reviendra pas
bien cher et sera de toute façon pour ce style d'utlisation bien plus
adapté.
A+
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
bonjour,
si ta base de données est destinée à être un tant soi peu conséquente et
que tu cherches de l'option multiutilisateur optimisée, définitivement
demande à ta boite d'acheter Access qui quand même ne lui reviendra pas
bien cher et sera de toute façon pour ce style d'utlisation bien plus
adapté.
A+Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les >données dans un même classeur.
Merci encore
Bonjour Florian,
| Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Pour sélectionner une cellule, il faut impérativement que ta feuille où tu
veux sélectionner ladite cellule soit active...sinon, il
te génère ce type d'erreur.
Un bon test quand tu roules une macro, c'est d'activer la macro à partir
d'une feuille autre que la feuille où le calcul doit
s'effectuer. Si ta macro plante sur ce type d'erreur, c'est que ton code
oublie d'activer la feuille requise avant de faire la
sélection d'une plage de cellules.
P.S. Selon le type de "base de données" que tu veux établir, regarde la
commande "Assistant modèle" dans le menu "Données" et la
façon de l'utiliser dans l'aide d'excel.
Il y a aussi moyen que chacun de tes usagers travailles sur des fichiers
indépendants ayant la même structure et d'élaborer une
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les données dans un même classeur.
Salutations!
"Florian" a écrit dans le message de news:
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les >données dans un même classeur.
Merci encore
Bonjour Florian,
| Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Pour sélectionner une cellule, il faut impérativement que ta feuille où tu
veux sélectionner ladite cellule soit active...sinon, il
te génère ce type d'erreur.
Un bon test quand tu roules une macro, c'est d'activer la macro à partir
d'une feuille autre que la feuille où le calcul doit
s'effectuer. Si ta macro plante sur ce type d'erreur, c'est que ton code
oublie d'activer la feuille requise avant de faire la
sélection d'une plage de cellules.
P.S. Selon le type de "base de données" que tu veux établir, regarde la
commande "Assistant modèle" dans le menu "Données" et la
façon de l'utiliser dans l'aide d'excel.
Il y a aussi moyen que chacun de tes usagers travailles sur des fichiers
indépendants ayant la même structure et d'élaborer une
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les données dans un même classeur.
Salutations!
"Florian" <florian@toto.fr> a écrit dans le message de news:
e6FwenRuFHA.992@TK2MSFTNGP12.phx.gbl...
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les >données dans un même classeur.
Merci encore
Bonjour Florian,
| Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Pour sélectionner une cellule, il faut impérativement que ta feuille où tu
veux sélectionner ladite cellule soit active...sinon, il
te génère ce type d'erreur.
Un bon test quand tu roules une macro, c'est d'activer la macro à partir
d'une feuille autre que la feuille où le calcul doit
s'effectuer. Si ta macro plante sur ce type d'erreur, c'est que ton code
oublie d'activer la feuille requise avant de faire la
sélection d'une plage de cellules.
P.S. Selon le type de "base de données" que tu veux établir, regarde la
commande "Assistant modèle" dans le menu "Données" et la
façon de l'utiliser dans l'aide d'excel.
Il y a aussi moyen que chacun de tes usagers travailles sur des fichiers
indépendants ayant la même structure et d'élaborer une
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les données dans un même classeur.
Salutations!
"Florian" a écrit dans le message de news:
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les >données dans un même classeur.
Merci encore
Bonjour Florian,
| Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Pour sélectionner une cellule, il faut impérativement que ta feuille où tu
veux sélectionner ladite cellule soit active...sinon, il
te génère ce type d'erreur.
Un bon test quand tu roules une macro, c'est d'activer la macro à partir
d'une feuille autre que la feuille où le calcul doit
s'effectuer. Si ta macro plante sur ce type d'erreur, c'est que ton code
oublie d'activer la feuille requise avant de faire la
sélection d'une plage de cellules.
P.S. Selon le type de "base de données" que tu veux établir, regarde la
commande "Assistant modèle" dans le menu "Données" et la
façon de l'utiliser dans l'aide d'excel.
Il y a aussi moyen que chacun de tes usagers travailles sur des fichiers
indépendants ayant la même structure et d'élaborer une
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les données dans un même classeur.
Salutations!
"Florian" a écrit dans le message de news:
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les >données dans un même classeur.
Merci encore
Bonjour Florian,
| Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Pour sélectionner une cellule, il faut impérativement que ta feuille où tu
veux sélectionner ladite cellule soit active...sinon, il
te génère ce type d'erreur.
Un bon test quand tu roules une macro, c'est d'activer la macro à partir
d'une feuille autre que la feuille où le calcul doit
s'effectuer. Si ta macro plante sur ce type d'erreur, c'est que ton code
oublie d'activer la feuille requise avant de faire la
sélection d'une plage de cellules.
P.S. Selon le type de "base de données" que tu veux établir, regarde la
commande "Assistant modèle" dans le menu "Données" et la
façon de l'utiliser dans l'aide d'excel.
Il y a aussi moyen que chacun de tes usagers travailles sur des fichiers
indépendants ayant la même structure et d'élaborer une
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les données dans un même classeur.
Salutations!
"Florian" <florian@toto.fr> a écrit dans le message de news:
e6FwenRuFHA.992@TK2MSFTNGP12.phx.gbl...
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les >données dans un même classeur.
Merci encore
Bonjour Florian,
| Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Pour sélectionner une cellule, il faut impérativement que ta feuille où tu
veux sélectionner ladite cellule soit active...sinon, il
te génère ce type d'erreur.
Un bon test quand tu roules une macro, c'est d'activer la macro à partir
d'une feuille autre que la feuille où le calcul doit
s'effectuer. Si ta macro plante sur ce type d'erreur, c'est que ton code
oublie d'activer la feuille requise avant de faire la
sélection d'une plage de cellules.
P.S. Selon le type de "base de données" que tu veux établir, regarde la
commande "Assistant modèle" dans le menu "Données" et la
façon de l'utiliser dans l'aide d'excel.
Il y a aussi moyen que chacun de tes usagers travailles sur des fichiers
indépendants ayant la même structure et d'élaborer une
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les données dans un même classeur.
Salutations!
"Florian" a écrit dans le message de news:
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
Bonjour Florian,
Voici un exemple :
A ) tu dois ajouter une référence à ton projet VBA.
à partir de cette fenêtre, Barre des menus / outils / références /
et tu coches : Microsoft Activex Data objects 2.x librairy"
B ) L'exemple suivant extrait toutes les données de ton les classeurs
du répertoire que tu indiqueras dans la macro. Si ton classeur de
consolidation en fait partie, il faudra modifier légèrement la macro.
C ) Comme le nom de l'onglet de chaque classeur est important, il serait
sage
que tu utilises sur tes classeurs "usagers" la protection du
classeur (structure)
afin d'éviter que ces derniers modifient le nom de la feuille.
'----------------------------------------------
Sub MaRequêteAvecADO()
'Extrait les données de plusieurs classeurs d'un même
'répertoire en prenant pour acquis que les données ont
'la même structure et sont placées sur la même feuille.
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim file As String, C As Integer, Ok As Integer
Dim Chemin As String
NomFeuille = "denis" 'A déterminer
Chemin = "C:Data" 'à déterminer
'La requête qui sera exécutée ' `a déterminer
Requete = "SELECT * From [" & NomFeuille & "$]"
'Récupérer dans un tableau, la liste des
'fichiers excel du répertoire.
file = Dir(Chemin & "*.xls")
Do While file <> ""
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With
'établir la connection avec le fichier...
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If
file = Dir()
Rst.Close: Conn.Close
Loop
Set Rst = Nothing: Set Conn = Nothing
Set Rg = Nothing
End Sub
'----------------------------------------------
Salutations!
"Florian" a écrit dans le message de news:
Bonjour Denis
Je te remercie beaucoup pour tous ces renseignements
S'il te plaît, peux-tu m'indiquer un exemple de :méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les >données dans un même classeur.
Merci encore
Flo riant
"michdenis" a écrit dans le message de news:Bonjour Florian,
| Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Pour sélectionner une cellule, il faut impérativement que ta feuille où
tu
veux sélectionner ladite cellule soit active...sinon, il
te génère ce type d'erreur.
Un bon test quand tu roules une macro, c'est d'activer la macro à partir
d'une feuille autre que la feuille où le calcul doit
s'effectuer. Si ta macro plante sur ce type d'erreur, c'est que ton code
oublie d'activer la feuille requise avant de faire la
sélection d'une plage de cellules.
P.S. Selon le type de "base de données" que tu veux établir, regarde la
commande "Assistant modèle" dans le menu "Données" et la
façon de l'utiliser dans l'aide d'excel.
Il y a aussi moyen que chacun de tes usagers travailles sur des fichiers
indépendants ayant la même structure et d'élaborer une
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les données dans un même classeur.
Salutations!
"Florian" a écrit dans le message de news:
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
Bonjour Florian,
Voici un exemple :
A ) tu dois ajouter une référence à ton projet VBA.
à partir de cette fenêtre, Barre des menus / outils / références /
et tu coches : Microsoft Activex Data objects 2.x librairy"
B ) L'exemple suivant extrait toutes les données de ton les classeurs
du répertoire que tu indiqueras dans la macro. Si ton classeur de
consolidation en fait partie, il faudra modifier légèrement la macro.
C ) Comme le nom de l'onglet de chaque classeur est important, il serait
sage
que tu utilises sur tes classeurs "usagers" la protection du
classeur (structure)
afin d'éviter que ces derniers modifient le nom de la feuille.
'----------------------------------------------
Sub MaRequêteAvecADO()
'Extrait les données de plusieurs classeurs d'un même
'répertoire en prenant pour acquis que les données ont
'la même structure et sont placées sur la même feuille.
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim file As String, C As Integer, Ok As Integer
Dim Chemin As String
NomFeuille = "denis" 'A déterminer
Chemin = "C:Data" 'à déterminer
'La requête qui sera exécutée ' `a déterminer
Requete = "SELECT * From [" & NomFeuille & "$]"
'Récupérer dans un tableau, la liste des
'fichiers excel du répertoire.
file = Dir(Chemin & "*.xls")
Do While file <> ""
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With
'établir la connection avec le fichier...
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If
file = Dir()
Rst.Close: Conn.Close
Loop
Set Rst = Nothing: Set Conn = Nothing
Set Rg = Nothing
End Sub
'----------------------------------------------
Salutations!
"Florian" <florian@toto.fr> a écrit dans le message de news:
OglPGDUuFHA.444@TK2MSFTNGP15.phx.gbl...
Bonjour Denis
Je te remercie beaucoup pour tous ces renseignements
S'il te plaît, peux-tu m'indiquer un exemple de :
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les >données dans un même classeur.
Merci encore
Flo riant
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
uqV8XTSuFHA.2504@tk2msftngp13.phx.gbl...
Bonjour Florian,
| Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Pour sélectionner une cellule, il faut impérativement que ta feuille où
tu
veux sélectionner ladite cellule soit active...sinon, il
te génère ce type d'erreur.
Un bon test quand tu roules une macro, c'est d'activer la macro à partir
d'une feuille autre que la feuille où le calcul doit
s'effectuer. Si ta macro plante sur ce type d'erreur, c'est que ton code
oublie d'activer la feuille requise avant de faire la
sélection d'une plage de cellules.
P.S. Selon le type de "base de données" que tu veux établir, regarde la
commande "Assistant modèle" dans le menu "Données" et la
façon de l'utiliser dans l'aide d'excel.
Il y a aussi moyen que chacun de tes usagers travailles sur des fichiers
indépendants ayant la même structure et d'élaborer une
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les données dans un même classeur.
Salutations!
"Florian" <florian@toto.fr> a écrit dans le message de news:
e6FwenRuFHA.992@TK2MSFTNGP12.phx.gbl...
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant
Bonjour Florian,
Voici un exemple :
A ) tu dois ajouter une référence à ton projet VBA.
à partir de cette fenêtre, Barre des menus / outils / références /
et tu coches : Microsoft Activex Data objects 2.x librairy"
B ) L'exemple suivant extrait toutes les données de ton les classeurs
du répertoire que tu indiqueras dans la macro. Si ton classeur de
consolidation en fait partie, il faudra modifier légèrement la macro.
C ) Comme le nom de l'onglet de chaque classeur est important, il serait
sage
que tu utilises sur tes classeurs "usagers" la protection du
classeur (structure)
afin d'éviter que ces derniers modifient le nom de la feuille.
'----------------------------------------------
Sub MaRequêteAvecADO()
'Extrait les données de plusieurs classeurs d'un même
'répertoire en prenant pour acquis que les données ont
'la même structure et sont placées sur la même feuille.
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim file As String, C As Integer, Ok As Integer
Dim Chemin As String
NomFeuille = "denis" 'A déterminer
Chemin = "C:Data" 'à déterminer
'La requête qui sera exécutée ' `a déterminer
Requete = "SELECT * From [" & NomFeuille & "$]"
'Récupérer dans un tableau, la liste des
'fichiers excel du répertoire.
file = Dir(Chemin & "*.xls")
Do While file <> ""
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With
'établir la connection avec le fichier...
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If
file = Dir()
Rst.Close: Conn.Close
Loop
Set Rst = Nothing: Set Conn = Nothing
Set Rg = Nothing
End Sub
'----------------------------------------------
Salutations!
"Florian" a écrit dans le message de news:
Bonjour Denis
Je te remercie beaucoup pour tous ces renseignements
S'il te plaît, peux-tu m'indiquer un exemple de :méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les >données dans un même classeur.
Merci encore
Flo riant
"michdenis" a écrit dans le message de news:Bonjour Florian,
| Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Pour sélectionner une cellule, il faut impérativement que ta feuille où
tu
veux sélectionner ladite cellule soit active...sinon, il
te génère ce type d'erreur.
Un bon test quand tu roules une macro, c'est d'activer la macro à partir
d'une feuille autre que la feuille où le calcul doit
s'effectuer. Si ta macro plante sur ce type d'erreur, c'est que ton code
oublie d'activer la feuille requise avant de faire la
sélection d'une plage de cellules.
P.S. Selon le type de "base de données" que tu veux établir, regarde la
commande "Assistant modèle" dans le menu "Données" et la
façon de l'utiliser dans l'aide d'excel.
Il y a aussi moyen que chacun de tes usagers travailles sur des fichiers
indépendants ayant la même structure et d'élaborer une
méthode de consolidation utilisant ADO(activex data object) afin de
regrouper toutes les données dans un même classeur.
Salutations!
"Florian" a écrit dans le message de news:
Bonjour
Nous n'avons pas Access, mais seulement Excel 97 au travail
J'ai créé un classeur partagé, cela ne prends pas en compte le
Range("A65536").End(xlUp)(2).Select, et cela met partout "erreur 1004"
Il y a une quinzaine d'utilisateurs, ils doivent saisir des fiches
simultanément, afin d'enrichir une base unique.
Pour cela, je pense créer un fichier pour chaque utilisateur avec un
userform,
afin que chacun puisse envoyer ses données dans la base qui sera un
classeur
différent.
Avez-vous déjà créé ou utiliser un système similaire
Je vous remercie
Flo riant