2 tableau a comparer et rajou si difference

manautop Messages postés 152 Statut Membre -  
manautop Messages postés 152 Statut Membre -
Bonjour,
j ai un probleme sous exl j ai deux tableau un de plus 4000 noms et un de plus de 2500 noms
http://www.cijoint.fr/cjlink.php?file=cj200912/cijvE0glbB.xls
http://www.cijoint.fr/cjlink.php?file=cj200912/cijvE0glbB.xls

ce que je voudrais c est qu exel compare les tableau en fonction des donnees si une des des donnees du tableau de 2500 noms existent dans le tableau de 4000 noms il copie le no of vet de la colone de fichier 4000 vers la meme colone vide actuellement du fichier 2500

j ai tente ca
Option Explicit

Sub Compare()
Dim Sh1CompareRange As Variant, Sh2CompareRange As Variant
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim c1, c2, c3, sp, x1, x2, v
Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
Set ws3 = Worksheets(3)

Application.ScreenUpdating = False
' *** il serait bien de vider la feuille 3 avant de commencer
Sheets("sheet3").Cells.ClearContents
' Récupérer les 2 plages à comparer
Set Sh1CompareRange = ws1.Range("A1:A" & ws1.Range("A1").End(xlDown).Row)
Set Sh2CompareRange = ws2.Range("A1:A" & ws2.Range("A1").End(xlDown).Row)
With ws1
For Each c1 In Sh1CompareRange
' copier sytématique de la ligne ws1
' Boucle sur ligne feuille 1; colonne: A,B,C,D,E et F
' copie sur feuille 3; colonne : A,B,C,D,E et F
For x1 = 1 To 8
ws3.Cells(c3 + 1, x1) = .Cells(c1.Row, x1)
Next x1
' référence en O temporaire pour trier
ws3.Cells(c3 + 1, 15) = .Cells(c1.Row, 1)
'si c1 exciste sur ws2 , copier
If 1 = WorksheetFunction.CountIf(Sh2CompareRange, c1) Then
c2 = WorksheetFunction.Match(c1, Sh2CompareRange, 0)
' Boucle sur ligne feuille 2; colonne: A,B,C,D,E et F
' copie sur feuille 3; colonne : H,I,J,K,L et M
' laisser une colonne G vide
For x2 = 1 To 8
ws3.Cells(c3 + 1, 9 + x2) = ws2.Cells(c2, x2)
Next x2
End If
' puis --> contrôler si c2 n'est pas dans ws1 copier +1 ligne en ws3
v = Sh2CompareRange(c1.Row, 1)
If 0 = WorksheetFunction.CountIf(Sh1CompareRange, v) Then
' Boucle ligne f2; colonne: A,B,C,D,E et F
' copie sur f3, ligne suivante; colonne : H,I,J,K,L et M
' colonne G vide
c3 = c3 + 1
For x2 = 1 To 8
ws3.Cells(c3 + 1, 9 + x2) = ws2.Cells(c1.Row, x2)
Next x2
' référence en O temporaire pour trier
ws3.Cells(c3 + 1, 15) = ws2.Cells(c1.Row, 1)
End If
c3 = c3 + 1
' End If
Next c1
End With
' si Sh2Comp... est plus grand que sh1Comp... traiter le surplus de Sh2Comp...
If Sh2CompareRange.Count > Sh1CompareRange.Count Then
For sp = Sh1CompareRange.Count + 1 To Sh2CompareRange.Count
If 0 = WorksheetFunction.CountIf(Sh1CompareRange, Sh2CompareRange(sp, 1)) Then
' Boucle ligne f2; colonne: A,B,C,D,E et F
' copie sur f3, ligne suivante; colonne : H,I,J,K,L et M
' colonne G vide
For x2 = 1 To 8
ws3.Cells(c3 + 1, 9 + x2) = ws2.Cells(sp, x2)
Next x2
' référence en O temporaire pour trier
ws3.Cells(c3 + 1, 15) = ws2.Cells(sp, 1)
c3 = c3 + 1
End If

Next sp
End If
' trier et supprimer colonne [o] temporaire
ws3.Cells.Sort Key1:=ws3.Columns("O"), Order1:=xlDescending, Header:=xlGuess
ws3.Columns("O:O").Clear
Application.ScreenUpdating = True
End Sub

que j avais dev pour un autre boulot avec l aide d une commencamarche-iste
pour comparer et a la limite finir le travail a la main mais la j ai un probleme c est qu il ne me donne pas le bon resultat

voila si quelau una une idee
Configuration: Windows XP Internet Explorer 7.0

10 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Pas facile de comprendre car tu as mis 2 fois le même lien de classeur.
    0
  2. manautop Messages postés 152 Statut Membre 3
     
    bonjour,
    merci de ta reponse

    ha merde , dsl , je pourrais changer ca que lundi matin maintenant,
    0
  3. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Si j’ai bien vu la procédure, il s’agit d’une proposition de « ponpon » et il me semble qu’elle à été réaliser pour un autre cas : voir https://forums.commentcamarche.net/forum/affich-15169584-aide-sur-unee-macro-erreur-mais-pk?page=2#30
    Le cas que vous exposez ici est différent donc cette procédure ne donnera pas les résultats que vous désirez.
    Je rejoins la remarque de gbinforme (bonjour) « Pas facile de comprendre car tu as mis 2 fois le même lien de classeur »
    0
  4. manautop Messages postés 152 Statut Membre 3
     
    bonjour,

    voila les deux fichiers dsl

    et oui il s agit de la macro de ponpon d ailleur c etait pour moi lol

    http://www.cijoint.fr/cjlink.php?file=cj200912/cijEVLx3fs.xls
    http://www.cijoint.fr/cjlink.php?file=cj200912/cijikJutKZ.xls
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Merci, c’est très bien, lol.
    0
  7. manautop Messages postés 152 Statut Membre 3
     
    oui je sais bien que la macro de ponpon ne me donnereai pas le resultat exact mais quand je l utilise elle me donne une partie de resultat bon et une autre nan /....
    0
  8. manautop Messages postés 152 Statut Membre 3
     
    pour le moment j en suis a ca

    j utilise ca pour comparer
    Sub ComparaisonDansunefeuille()
    'comparaison dans une feuille dans un seul classeur
    Set sh2 = Sheets("Sheet1").Range("b1:b5000")

    Set sh1 = Sheets("Sheet1").Range("J1:J5000")

    For Each c In sh2
    MaValeur = c.Value
    If MaValeur <> "" Then
    Set Plage = sh1.Columns("A:A").Cells.Find(MaValeur, lookat:=xlWhole)

    If Not Plage Is Nothing Then

    c.Range("K1") = "*"

    Else

    c.Range("K1") = ""

    End If
    End If
    Next
    End Sub

    et ensuite j elimine toute les conne non volide par ca

    Sub test()
    Dim i As Integer
    For i = Range("j6000").End(xlUp).Row To 1 Step -1
    If IsEmpty(Cells(i, 2)) Then Rows(i).Delete
    Next i
    End Sub

    quelqu un a mieux ??
    0
  9. manautop Messages postés 152 Statut Membre 3
     
    Bon en fait ca ne marche pas vraiment j ai plein d erreur et la seconde macro ne marche pqs tout le temps
    donc si quelqu un a une meilleur idee je suis preneur

    merci d avance
    0
  10. manautop Messages postés 152 Statut Membre 3
     
    bon ben j ai fini par le faire a la main mais si quelqu un a une solution je suis preneur
    0
  11. manautop Messages postés 152 Statut Membre 3
     
    personne poour au moins me mettre sur la voix ? oko je demande beaucoup mais jai beaucoup de fichier a traiter

    merci
    0