VBA comparer deux lignes de 2 feuilles différentes et copier si <>

superbog

XLDnaute Occasionnel
Bonjour

Voici mon problème

Je souhaite mettre à jour les feuilles des clients (qui sont nommées numériquement) en fonction de la mise à jour de la liste clients.

J'ai donc essayé de faire une macro qui d'abord comparerait les données des clients non archivés avec les indications portées sur les fiches clients, mais je n'y suis pas arrivée

voici mon fichier exemple ainsi que le code de ma macro
Code:
Sub compare_dossier()


Dim i, DerLigBase As Integer
Dim dossier As String


DerLigBase = Sheets("clients").range("B500").End(xlUp).Row

For i = 2 To DerLigBase
    dossier = Cells(i, 1).Text


       
     'Copie les valeurs si non cochées
  If Sheets(dossier).Rows(2) <> Sheets("clients").Rows(i) Then
   Sheets("clients").Rows(i).Copy _
Destination:=Sheets(dossier).Rows(2)
  
  
  End If

Next i
     
     MsgBox "La mise à jour est effectuée"

End Sub

merci d'avance de votre aide
 

Pièces jointes

  • testmajclients.xlsm
    16.3 KB · Affichages: 67

kjin

XLDnaute Barbatruc
Re : VBA comparer deux lignes de 2 feuilles différentes et copier si <>

Bonsoir,
Code:
Sub compare_dossier()
Dim dL#, i#, j#
Dim tablo1, tablo2
Dim ws As Worksheet, embrouille As Boolean
With Sheets("clients")
    dL = .Range("B65000").End(xlUp).Row
    For i = 2 To dL
        On Error Resume Next
        Set ws = Sheets(CStr(.Cells(i, 1)))
        On Error GoTo 0
        If Not ws Is Nothing Then
            tablo1 = .Range("A" & i & ":N" & i).Value
            With ws
                tablo2 = .Range("A2:N2").Value
                For j = 1 To UBound(tablo1, 2)
                    If tablo1(1, j) <> tablo2(1, j) Then
                        embrouille = True
                        Exit For
                    End If
                Next
                If embrouille Then
                    If MsgBox("il y a des différences d'infos pour " & ws.Name & vbCrLf & _
                            "Corriger les infos ?", vbQuestion + vbYesNo) = vbYes Then
                        .Range("A2:N2") = tablo1
                    End If
                End If
            End With
        End If
    Next
End With
End Sub
Si j'ai bien compris....
A+
kjin
 

kjin

XLDnaute Barbatruc
Re : VBA comparer deux lignes de 2 feuilles différentes et copier si <>

Bonsoir,
Autant faire simple alors...
Code:
Sub compare_dossier()
Dim dL#, i#
Dim ws As Worksheet, c As Range
With Sheets("clients")
    dL = .Range("B65000").End(xlUp).Row
    For i = 2 To dL
        On Error Resume Next
        Set ws = Sheets(CStr(.Cells(i, 1)))
        On Error GoTo 0
        If Not ws Is Nothing Then
            Set c = .Range("A" & i & ":N" & i)
            With ws
                c.Copy .Range("A2")
            End With
        End If
    Next
End With
End Sub
Pour le pb évoqué, j'avais juste oublié de réinitialiser les tableaux à chaque itération, la vieillesse sans doute...
A+
kjin
 

superbog

XLDnaute Occasionnel
Re : VBA comparer deux lignes de 2 feuilles différentes et copier si <>

catastrophe

il y a une erreur, je pense que la condition non archivée n'est pas prise en compte de sorte que les mise à jour sont décalées.

Il faut impérativement que cela s'applique seulement quand la colonne O ne contient pas la mention A
 

superbog

XLDnaute Occasionnel
Re : VBA comparer deux lignes de 2 feuilles différentes et copier si <>

Bonjour

quand j'exécute la macro ci dessous, que j'ai à peine modifié par rapport à l'original (j'ai juste ajouté une condition) un message d'erreur


"erreur d'exécution '1004'
la méthode copy de la classe range a échoué"

que puis je faire

Code:
Sub compare_dossier()
Dim dL#, i#
Dim ws As Worksheet, c As Range
With Sheets("clients")
    dL = .Range("B1000").End(xlUp).Row
    For i = 2 To dL
        On Error Resume Next
        Set ws = Sheets(CStr(.Cells(i, 1)))
        On Error GoTo 0
        If IsEmpty(.Cells(i, "o")) And Not ws Is Nothing Then
            Set c = .Range("A" & i & ":N" & i)
            With ws
                c.Copy (.Range("A2"))
            End With
        End If
    Next
End With
End Sub
 

kabamel

XLDnaute Occasionnel
Re : VBA comparer deux lignes de 2 feuilles différentes et copier si <>

Bonjour à tous
voilà j'ai peut être un petit soucis de comparaison de deux feuilles
Je veux comparer la feuille "Assistant" à la feuille "Feuil1" , les lignes identiques on copie dans la feuille "Résultat" et celle qui ne sont pas identique de coté de la feuille "Assistant" on met dans la feuille "Résultat1"
Je joins un fichier exemple
 

Pièces jointes

  • ExempleCompare.xls
    115 KB · Affichages: 63

Discussions similaires

Réponses
5
Affichages
382

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD