Comparer deux tableaux

Angelo7891

XLDnaute Junior
Bonjour le forum

J'aimerai pouvoir comparer 2 fichiers excel (je vous ai mis 2 fichiers en piece jointe pour être un peu plus clair )

Alors voila dans mon tableau destination vous avez une liste de site avec des activités

Dans mon fichier source vous avez les meme site mais uniquement avec certaines activité (activité 1 et activité 3) pour lesquelle correspondent un nombre pour chaque site et ce que je souhaite c'est aller cherché ces chiffre dans le fichier source pour remplir destination ...

En sachant que si je dois mettre du code il faudra qu'il se trouve dans le fichier source
 

Pièces jointes

  • destination.xls
    16.5 KB · Affichages: 69
  • destination.xls
    16.5 KB · Affichages: 73
  • destination.xls
    16.5 KB · Affichages: 71
  • source.xls
    15.5 KB · Affichages: 58
  • source.xls
    15.5 KB · Affichages: 60
  • source.xls
    15.5 KB · Affichages: 58
Dernière édition:

Jocelyn

XLDnaute Barbatruc
Re : Comparer deux tableaux

Bonjour le Forum,
Bonjour Angelo7891,

bon alors revoila tes 2 fichier avec un essai de formule tu verra il y a des plage nommées dans le classeur destination.

attention tout de même a une chose primordiale pour que tout fonctionne j'ai été obligé de faire des copiés collés pour les données libellé (site 1, site 2 ....) et activité 1, activité 2 .... les intiitulés doivent etre exactement identique sur tes 2 classeurs .

l'inconvénient de ces formules c'est que les 2 fichiers doivent etre ouvert.

Jocelyn
 

Pièces jointes

  • source.zip
    3.7 KB · Affichages: 43
  • source.zip
    3.7 KB · Affichages: 43
  • source.zip
    3.7 KB · Affichages: 43

Tibo

XLDnaute Barbatruc
Re : Comparer deux tableaux

Salut Angelo,

A essayer :

Une solution sans macro, avec Formules dans fichier destination. (Formules à base de DECALER)


Sinon, une solution depuis le fichier Source nécessite, à mon avis, une macro, auquel cas, je passe le témoin.

@+

Salut Jocelyn, pas rafraîchi. même remarque que la tienne à propos des étiquettes de ligne et de colonnes (espaces intempestifs)
 

Pièces jointes

  • zz_destination_source_Angelo.zip
    4.1 KB · Affichages: 26

CBernardT

XLDnaute Barbatruc
Re : Comparer deux tableaux

Bonjour Angelo7891, Jocelyn, Tibo et le forum,


Une solution avec macro commandée par le bouton "TRANFERT" dans le fichier destination.
J’ai utilisé une feuille intermédiaire pour transférer les données du fichier source dans le fichier destination.

1- Le code est dans le fichier "Destination" ;
2- L'ouverture du fichier "Source.xls" est automatisée ;
3- Transfert du tableau source dans une feuille appelée "TRANSFERT" du fichier "destination" ;
4- Fermeture du fichier "Source.xls" ;
5- Report des valeurs dans le tableau destination à partir de la feuille "TRANSFERT";
6- Effacement de la feuille "TRANSFERT".

Un détail, il est impératif que les intitulés des cellules des deux tableaux à exploiter soient identiques, ce qui n'était pas le cas dans les fichiers exemples.

Cordialement

Bernard
 

Pièces jointes

  • destination.xls
    43.5 KB · Affichages: 83
  • destination.xls
    43.5 KB · Affichages: 88
  • destination.xls
    43.5 KB · Affichages: 90
  • source.xls
    16 KB · Affichages: 64
  • source.xls
    16 KB · Affichages: 67
  • source.xls
    16 KB · Affichages: 67

Angelo7891

XLDnaute Junior
Re : Comparer deux tableaux

dejà merci à tous


personnellement je me suis orienté vers autre chose car le code de Brenard étais assez compliqué à réadapté (enfin pour moi )


mais j'ai un souci

alors voici le code que j'ai fais

Code:
Sub Auto_open()
Dim ligne As Integer
Dim stFichier As String
Dim wk As Workbook 'classeur destination 
Dim wS As Workbook 'classeur source 

 
Set wS = ThisWorkbook
chemin = ActiveWorkbook.Path

ReDim op(300)
For ligne = 1 To 300
    op(ligne) = Cells(ligne, 2).Value
Next ligne
    
stFichier = Dir(chemin & "\source*.xls") 'test si il y a un fichier source... .xls
If stFichier <> "" Then
    Set wk = Workbooks.Open(chemin & "\" & stFichier)
    For i = 1 To 300
        For j = 1 To 300
        
            If wk.Cells(i, 2).Value = op(j) Then
                wk.Cells(j, 3).Value = wS.Cells(i, 5).Value 
                wk.Cells(j, 4).Value = wS.Cells(i, 4).Value 
                wk.Cells(j, 5).Value = wS.Cells(i, 6).Value 
                wk.Cells(j, 6).Value = wS.Cells(i, 7).Value 
                wk.Cells(j, 7).Value = wS.Cells(i, 8).Value 
                wk.Cells(j, 8).Value = wS.Cells(i, 9).Value 
            End If
        Next j
    Next i
 Else
    MsgBox "Erreur aucun fichier trouvé.."
 End If

End Sub

or
Code:
If wk.Cells(i, 2).Value = op(j) Then

cela retounre une erreur comme quoi la propriété n'est pas géré par l'objet
 

Angelo7891

XLDnaute Junior
Re : Comparer deux tableaux

alors voila je pense avoir trouvé une slution pour contourner le probleme

Code:
Sub Auto_open()
Dim ligne As Integer
Dim stFichier As String
Dim wk As Workbook
Dim wS As Workbook
 
Set wS = ThisWorkbook
chemin = ActiveWorkbook.Path

ReDim op(300)
For ligne = 1 To 300
    op(ligne) = Cells(ligne, 2).Value
Next ligne
    
stFichier = Dir(chemin & "\destination*.xls")
If stFichier <> "" Then
    Set wk = Workbooks.Open(chemin & "\" & stFichier)
    For i = 1 To 300
        For j = 1 To 300
        
            If wk.Sheets(1).Cells(i, 2).Value = op(j) Then
                wk.Sheets(1).Cells(j, 3).Value = wS.Sheets(1).Cells(i, 5).Value 
                wk.Sheets(1).Cells(j, 4).Value = wS.Sheets(1).Cells(i, 4).Value 
                wk.Sheets(1).Cells(j, 5).Value = wS.Sheets(1).Cells(i, 6).Value 
                wk.Sheets(1).Cells(j, 6).Value = wS.Sheets(1).Cells(i, 7).Value 
                wk.Sheets(1).Cells(j, 7).Value = wS.Sheets(1).Cells(i, 8).Value 
                wk.Sheets(1).Cells(j, 8).Value = wS.Sheets(1).Cells(i, 9).Value '
            End If
        Next j
    Next i
 Else
    MsgBox "Erreur aucun fichier trouvé.."
 End If

End Sub


mais le résultat me donne un peu n'importe quoi :?
 

Discussions similaires

Réponses
9
Affichages
442

Statistiques des forums

Discussions
312 391
Messages
2 087 950
Membres
103 683
dernier inscrit
Cescodelvar