Fusionner deux fichiers Excels [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
13 février 2008
-
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
j'ai deux fichiers EXCEL de contacts de 3000 noms, qui se présentent de la manière suivante :

Fichier 1 :
Colonne 1 / Colonne 2
Contact / attribut 1
Papa / homme
maman / femme
maman / blonde
enfant / fille

Fichier 2 :
Colonne 1 / Colonne 2
Contact / attribut 2
Papa / grand
Papa / moustache
maman / moyenne
enfant / petite

Je cherche à obtenir un seul fichier FICHIER EXCEL qui se présente de la manière suivante :

Fichier 1 + 2 :
Colonne 1 / Colonne 2
Contact / attribut 1+2
Papa / homme, grand, moustache
maman / femme, blonde, moyenne
enfant / fille, petite

Si quelqu'un pouvait m'aider....

Merci d'avance.

PS : Le but est d'importer ceci dans le gestionnaire de contacts professionnels de outlook 2007. Car j'ai l'impression qu'il faut tout importer en une fois. Il n'est pas possible d'importer sélectivement des éléments pour des contacts.

9 réponses

Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
Hum la descriptions de tes fichiers est loin d'etre clair.

Perso je comprends meme pas tes files so ... pour l'aide... je suis bloqué...

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
24
 Bonsoir à tous,

Ci-dessous un exemple, en vbs, sans utiliser l'objet Excel.Application, facilement adaptable pour vb6
utilisant l'objet Dictionary et ADODB.
Reste à écrire le fichier résultat.

Option Explicit
Dim oDico
Dim aDicoKeys, aDicoItems
Dim sFile1, sFile2, sFile3
Dim sCol1, sCol2, sCol3, i

Set oDico = CreateObject("Scripting.Dictionary")

sFile1 = "D:\....\Classeur1.xls"
sFile2 = "D:\....\Classeur2.xls"
sFile3 = "D:\....\Classeur3.xls"

sCol1 = "[Contact]"
sCol2 = "[Attribut 1]"
sCol3 = "[Attribut 2]"

Call FnWriteDico(sFile1, sCol1, sCol2, oDico)
Call FnWriteDico(sFile2, sCol1, sCol3, oDico)

aDicoKeys = oDico.Keys
aDicoItems = oDico.Items

For i=0 To ubound(aDicoKeys)
    MsgBox aDicoKeys(i) &vbTab& aDicoItems(i)
Next

'Call SubWriteResult(sFile3, aDicoKeys, aDicoItems)

Set oDico = Nothing

MsgBox "fin script"

Function FnWriteDico(sFile, sField1, sField2, oDico)
   Dim oConn, oRs
   Dim MyQuery
   Dim oldDicoList
  
   MyQuery = "Select " & sField1 & "," &  sField2 & " from [Feuil1$]"
  
   Set oConn = CreateObject("ADODB.Connection")
   oConn.Open ("provider=Microsoft.Jet.OLEDB.4.0; " & "data source=" _
         & sFile & "; " & "Extended Properties=""Excel 8.0;HDR=YES;""")
  
   Set oRs = CreateObject("ADODB.Recordset")
   oRs.Open MyQuery, oConn, 1, 3 '1=adOpenKeyset, 3=adLockOptimistic

   Do Until oRs.EOF
      If oDico.Exists(Trim(oRs.Fields(0))) Then
         oldDicoList = oDico.Item(Trim(oRs.Fields(0)))
         oDico.Item(Trim(oRs.Fields(0))) = oldDicoList & ","  & oRs.Fields(1)
      Else
         oDico.Add Trim(oRs.Fields(0)), Trim(oRs.Fields(1))
      End If
      oRs.MoveNext
   Loop

   Set oRs = Nothing
   Set oConn = Nothing
  
   FnWriteDico = oDico.Items
  
End Function

jean-marc
Messages postés
5
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
13 février 2008

deux fichiers :


dans les deux fichiers il y a les noms : ici papa, maman, enfant


à chacun des noms sont attachés des attributs : homme femme grand moustache


Je voudrais n'avoir qu'un seul fichier avec dans une colonne, les noms non dupliqués, et dans une deuxième colonne, leurs attribus concaténés.

C'est plus clair. Sinon, n'hésite pas, je réexplique autrement.

Dans tous les cas, merci de ton intérêt.
Messages postés
5
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
13 février 2008

Merci JMO,
Cela a l'air très bien (!)
Concretement, j'imaginais un code que je pourrais utiliser avec une macro Excel.
Je peux mettre ce code dans une macro ??

Pardon pour mon ignorance, mais je suis vraiment embêté et je voudrais résoudre ce pb.

cordialement,
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
24
Re,

Oui, c'est certainement possible !!!
Mais n'ayant pas vb6 et ne scriptant pas en vbe/vba, ma contribution s'arrête là.

Bon courage.

jean-marc
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

Tu risques pas d'avoir les reponses que tu attends car tu n'es pas dans le bon theme.
Et un conseil : n'imagine pas trop ton code, surtout si tu penses que quelqu'un vas le faire a ta place.
Le mieux c'est de commencer et de nous dire sur quoi tu bloques. Meme si c'est : - je ne sais ou ecrire ma macro

Ne t'offusques pas de ce que je viens de dire car c'est globalement ce qui est specifé dans le reglement CS et tu l'as accepter lors de l'enregistrement.

Bon courage

A+
Messages postés
5
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
13 février 2008

ok merci !
Messages postés
5
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
13 février 2008

OK, je comprends... le réglement.


Eventuellement, peux tu me conseiller un site sur lequel je pourrais "légalement" poser ma question ?
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
Regarde ma signature ...
Tu le sauras pour la prochaine fois.
Mais ne repose pas ta question sur l'autre forum. Termine celui-ci auparavant. Ça évitera de créer un doublon de la même question.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI