Regrouper des données de deux fichiers dans un seul grâce à un i

Résolu/Fermé
Nacim59 Messages postés 22 Date d'inscription mercredi 26 juin 2013 Statut Membre Dernière intervention 13 août 2013 - 26 juin 2013 à 09:23
 nacim59 - 1 juil. 2013 à 10:22
Bonjour à tous,

je suis actuellement en stage et je dois créer une macro sur un nouveau fichier "suivi des d'activités.xls" qui récupère les données de deux autres fichiers à savoir "extraction étude.xls" et "lotissement.xls" .

Le problème est que dans le 1er tableau il y a dans la colonne A les noms des affaires que l'on peut retrouver à l'identique dans le second fichier au sein duquel il y a les lots (sous études de l'affaire).

je veux récupérer tous les noms des affaires qui se trouve dans le fichier 1.

Le problème est que lorsque la macro retrouve le nom de l'étude dans le 2nd fichier, elle m'ajoute les lots de l'étude mais également d'autres données

je donne un exemple :

table 1:
Titre de l'affaire , Nom du responsable , date de début ....
projet1 , Z , 24/06/2013 (Etude principale)


table 2:
Titre de l'affaire, Lots , Nom du responsable du lot , date de début du lot
projet1 ,
lot 1 , A , 20/06/2013 (sous étude)
lot 2 , A , 21/06/2013 (sous étude)

Dans l'exemple le projet 1 dans table 1 est le même que celui de la table 2,

Résultat :

Titre de l'affaire, Lots , Nom du responsable du lot , date de début du lot
projet1
projet1 lots1 , A, 20/06/2013
projet1 lots2 , B , 21/06/2013


Je vous précise que j'ai réduit le nombre de données sur les 3 fichiers.

Merci de votre aide, je me trouve dans une impasse.
A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 juin 2013 à 10:22
Bonjour

pas très clair ton exposé

tu veux récupérer quoi exactement ? juste les lots ou bien...?

combien as tu de lignes dans le fichier "extraction étude.xls"

version Excel ?

pour être efficace
joints tes fichier dans un zip et envie les nous


pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse

0
Nacim59 Messages postés 22 Date d'inscription mercredi 26 juin 2013 Statut Membre Dernière intervention 13 août 2013
Modifié par Nacim59 le 26/06/2013 à 13:34
Bonjour Michel et merci pour ta réponse, je vais essayer d'être plus explicite, je reprends à zéro .

Actuellement, les ingénieurs de l'entreprise où je passe mon stage travaillent sur la plateforme Sharepoint 2010, ils ont créé une liste sur Sharepoint afin d'ajouter leurs études, cette liste est reliée à un fichier Excel (extractionetude.xls).

Lorsque une étude est ouverte les ingénieurs font des sous études(Lots) sur cette étude , on peut aussi exporter ces données dans un fichier Excel (lotissement.xls)

Aujourd'hui, la responsable qui s'occupe du suivi des activités remplit manuellement tout le tableau.

Je veux créer un nouveau fichier "suivi-des-activités.xls" qui se trouvera dans un dossier "Suivi Etude", lorsque la responsable veut voir le suivi des activités des salariés, elle enregistre dans ce dossier le fichier "extractionétude.xls" extrait du Sharepoint ainsi que "lotissement" et lorsque je rentre sur le fichier "suivi-des-activités.xls" il va me remplir mon tableau grâce aux deux fichiers.

les différents champs sont les suivants :

Titre de l'affaire
Type d'affaire
Titre du lot
Nom responsable du lot
Ressources prévisionnelles engagées du lot
Date de début du lot
Date probable fin du lot
Date effective fin du lot
Commentaire du lot


Dans le 1er fichier il y a que les renseignements sur l'étude, c'est le 2ème fichier qui contient les lots.

Je veux afficher toutes les études du 1er fichier et dès qu'il retrouve le même titre de l'affaire dans le 2éme fichier, il m'ajoute le Titre du lot , Nom responsable du lot, Ressources prévisionnelles engagées du lot, Date de début du lot, Date probable fin du lot, Date effective fin du lot, commentaire du lot.

Aujourd'hu,i il y a dans les 1000 lignes dans "extractionetude.xls" et beaucoup moins dans "lotissement.xls"

Je travaille sur Excel 2007

Merci d'avance

https://www.cjoint.com/?CFAnxRFQlkb
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 juin 2013 à 14:35
Re,

Merci pour les PJ

Le classeur "résultat" est il bien l'exemple de ce que tu voudrais avoir ?

lorsqu'une nouvelle affaire est signée, est elle à la suite dans les tableaux ou sur la première ligne ?
et ou la place t'on: en première ou dernière ligne dans le classeur "suivi résultat" ?
0
Nacim59 Messages postés 22 Date d'inscription mercredi 26 juin 2013 Statut Membre Dernière intervention 13 août 2013
26 juin 2013 à 15:09
Re.

Le classeur résultat est bien l'exemple que je veux avoir, je n'ai pas mis la même mise en forme pour te monter que les colonnes en bleu sont des colonnes de "extractionetude.xls" et en blanc "lotissement.xls"

Lorsque'une nouvelle affaire est signée elle s'ajoute dans "extractionetude.xls" par ordre Alaphabitique
0
Nacim59 Messages postés 22 Date d'inscription mercredi 26 juin 2013 Statut Membre Dernière intervention 13 août 2013
26 juin 2013 à 15:31
Re.

j'ai réussi à écrire une macro, mais j'ai pas encor mon résultat

Sub RequeteClasseurFerme()

Dim Cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset

'Définit le classeur 1 fermé servant de base de données
Fichier = "F:\recup\lotissement.xls"
'Définit le classeur 2 fermé servant de base de données
Fichier = "F:\recup\extractionetude.xls"
'Nom de la feuille dans le classeur fermé
NomFeuille = "Feuil1"

Set Cn = New ADODB.Connection

'--- Connection ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
.Open
End With
'-----------------

'Définit la requête.

texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"


Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)

'Ecrit le résultat de la requête dans la cellule A2
Range("A2").CopyFromRecordset Rst

'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing

End Sub
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 juin 2013 à 16:32
Re,

En fait si on utilise ADO, le plus élégant serait de faire une jointure entre les 2 fichiers mais ce n'est pas forcément évident question Syntaxe SQL.... j'ai ça dans mon grenier mais c'est vieux

quelques petites remarques
utilises plutôt cette syntaxe pour les déclarations
Dim Cn as object, Rst as object

puis set Cn=createobject("ADODB.connection")
et set Rrst=createobject("ADODB.recordset")

cela évite d'aller cocher les références
mais si tu maintiens ta syntaxe il faut aussi que tu fermes et annule le recordset
avec le systeme createobject, ces fermetures (connection et recordset) sont annulées sans threads à la fin du code

je n'ai pas compris
'Définit le classeur 1 fermé servant de base de données
Fichier = "F:\recup\lotissement.xls"
'Définit le classeur 2 fermé servant de base de données
Fichier = "F:\recup\extractionetude.xls"
qui veut dire que tu travailles sur le fichier extraction ?

Pour ma part comme on travaille sur 2 fichiers, je me disais qu'on ouvrirait les 2 fichiers pour travailler à moins qu'ils ne soient très lourds (environ combien ?)

Je suis absent demain toute la journée....
0
Nacim59 Messages postés 22 Date d'inscription mercredi 26 juin 2013 Statut Membre Dernière intervention 13 août 2013
26 juin 2013 à 16:50
Re,

Actuellement le fichier extractionetude.xls fait 407 Ko

j'ai l'habitude de travailler sur Oracle pour les requêtes, mais avec Excel on dirait que c'est différent.
0