VBA - Comparaison d'une ligne dans l'eble d'une feuille

Bonjour à tous,

Je continue mon apprentissage du VBA, mais je bloque sur un point dans un code.

J'ai 2 onglet (S et S-1) avec des données issue d'une extraction hebdo, que je souhaite comparer pour voir s'il y a des doublons.

S'il y a des doublons, ils seront séparer en 3 catégories.

Je souhaite que VBA regarde si la première ligne de l'onglet "S" se retrouve de manière identique dans la feuille S-1 (Exemple la ligne 1 de "S" est égale à la ligne 2 de "S-1"). Je cherche une solution pour demander cela à Excel ?

Mon code à l'heure actuelle :

Sub Compilation()

Dim ODATA As Worksheet 'Onglet Data
Dim OS As Worksheet 'Onglet S
Dim OS1 As Worksheet 'Onglet S-1
Dim Plage As Range
Dim nb As Integer
Dim dest As Integer
Dim cop As Integer

Set Plage = OS.Range("A1").CurrentRegion
nb = Plage.Rows.Count
dest = 5
For cop = 1 To nb

If OS.Range("Acop:Fcop") <> ??????? Then cop 1
    Else
     If Range("Ecop") = "Type2" And Date - Range("Ccop") > 21 Then
        Set copy1 = ODATA.Range("Hdest")
        OS.Range("Acop").Copy copy1
        Set copy2 = ODATA.Range("Idest")
        OS.Range("Ecop").Copy copy2

        Else
         If Range("Ecop") = "Type3" And Date < Range("Fcop") Or Range("Fcop") = "" Then
            Set copy1 = ODATA.Range("Mdest")
            OS.Range("Acop").Copy copy1
            Set copy2 = ODATA.Range("Ndest")
            OS.Range("Ecop").Copy copy2
            Else
            Set copy1 = ODATA.Range("Cdest")
            OS.Range("Acop").Copy copy1
            Set copy2 = ODATA.Range("Ddest")
            OS.Range("Ecop").Copy copy2
        End If

    End If

End If

Next

End Sub

Merci par avance de votre aide et bonne journée

8matrice-suivi.xlsm (23.07 Ko)

Bonjour,

Pour savoir si 2 lignes ont le même contenu, une solution est :

1- de transformer le contenu de chaque ligne en un tableau à une dimension

2- de transformer ensuite ce tableau en chaîne de caractères

comme ceci pour la ligne 1:

  Dim v1 As String, v2 As String
    v1 = Join(Application.Transpose(Application.Transpose(Sheets("Feuil1").Rows(1).Value)), "")
    v2 = Join(Application.Transpose(Application.Transpose(Sheets("Feuil2").Rows(1).Value)), "")
    If v1 = v2 Then

Bonjour thev

Merci de ta propositions, ayant un petit souci de pc, je n'ai pas tester ta proposition, mais celle-ci va vérifier ligne pour ligne (ligne 1 vs ligne 1) ? Si oui, malheureusement cela ne va pas répondre à mon besoin.

Merci encore de ton aide

Une double boucle devrait répondre à ton problème.

par exemple:

 
    Dim ligne1 As Range, ligne2 As Range
    Dim i1 As Integer, i2 As Integer
    Dim v1 As String, v2 As String

    For Each ligne1 In Sheets("Feuil1").UsedRange.Rows
        i1 = ligne1.Row  'indice ligne 
         v1 = Join(Application.Transpose(Application.Transpose(Sheets("Feuil1").Rows(i1).Value)), "")
        For Each ligne2 In Sheets("Feuil2").UsedRange.Rows
            i2 = ligne2.Row   'indice ligne 
             v2 = Join(Application.Transpose(Application.Transpose(Sheets("Feuil2").Rows(i2).Value)), "")
            If v2 <> Empty And v2 = v1 Then
        Next ligne2
    Next ligne1

Finalement ma carte mère vient de rendre l'âme, je garde ton code et je test des que possible.

Je mets le topic ok et si besoin je rouvrirai celui ci.

Merci thev

Rechercher des sujets similaires à "vba comparaison ligne eble feuille"