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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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
 
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
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
681
Retour