Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Demande d'aide pour comprendre un code (manque de commentaires explicatifs)

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 !

jeff1494

XLDnaute Occasionnel
Bonjour à toutes et tous;
Je viens vous demander un petit coup de main pour comprendre comment marche un code.
Il y a quelque temps j'ai posé une demande pour un code qui extrairait les différence entre deux colonnes sur deux feuilles différentes.
J'ai bien reçu une réponse qui fonctionne à merveille.
Et maintenant je voudrais comprendre comment cela fonctionne, car j'aurais très certainement à refaire le même genre de choses dans le futur, et j'aimerais bien apprendre plutôt que de demander à chaque fois.
Voici donc le code en question :
VB:
' Comparaison de deux colonnes sur deux feuilles différentes, et création d'une feuille de résultats

Sub comp_colA()
Dim a, e, n As Long, t As Long
With Sheets("post_cura") 'feuille en 1ere position
    a = .Range("a2", .Range("a" & Rows.Count).End(xlUp)).Value
End With
With CreateObject("Scripting.Dictionary")
    .CompareMode = 1
    For Each e In a
        If e <> "" Then .Item(e) = VBA.Array(e, Empty)
    Next
    With Sheets("reference") 'feuille en 2eme position
        a = .Range("a2", .Range("a" & Rows.Count).End(xlUp)).Value
    End With
    For Each e In a
        If e <> "" Then
            If Not .exists(e) Then
                .Item(e) = VBA.Array(Empty, e)
            Else
                .Item(e) = Empty
            End If
        End If
    Next
    ReDim a(1 To .Count + 1, 1 To 2)
    For Each e In .keys
        If Not IsEmpty(.Item(e)) Then
            If IsEmpty(.Item(e)(0)) Then
                n = n + 1
                a(n, 1) = .Item(e)(1)
            Else
                t = t + 1
                a(t, 2) = .Item(e)(0)
            End If
        Else
            .Remove e
        End If
    Next
    OutPut "Differences", .Count, a    'feuille de résultats
End With
End Sub

Private Sub OutPut(sn As String, n As Long, x)
With Sheets(sn).Range("a1").Resize(, 2)
    .CurrentRegion.ClearContents
    .Value = Array("Pas dans " & Sheets(1).Name, "Pas dans " & Sheets(2).Name)
    If n > 0 Then
        .Offset(1).Resize(n).Value = x
    Else
        MsgBox "No change"
    End If
    .CurrentRegion.Columns.AutoFit
End With
End Sub

Voilà donc mon problème.
D'avance je remercie celui, ou celle qui aura la gentillesse de m'aider.
Bonne soirée à toutes et tous.
 
- 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
5
Affichages
236
Réponses
4
Affichages
177
Réponses
4
Affichages
461
Réponses
2
Affichages
201
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…