Différence(s) entre cellules : détecter

DoubleZero

XLDnaute Barbatruc
Bonsoir à toutes et à tous,

La macro ci-après :

Code:
Sub correction()
    Dim maFeuille As Worksheet
    Dim nbLigneVideConsecutive As Integer
    Dim LigneEnCours As Long 'integer ne suffit pas (capacité + 32 000 / - 32 000, il y a 65 000 lignes dans la feuille)
    Dim CarEnCours As Integer
    Dim TxtTst As String, TxtRef As String, TxtAlert As String
    Dim maCell As Range
    
    Set maFeuille = ActiveWorkbook.ActiveSheet
    Set maCell = maFeuille.Cells(6, 3)
    nbLigneVideConsecutive = 0
    LigneEnCours = 3
    
    Do While nbLigneVideConsecutive < 5  ' paramétrable pour déclencher la sortie
        If maFeuille.Cells(LigneEnCours, 2) = maFeuille.Cells(LigneEnCours, 3) Then
        'les deux cellules sont identiques mais sont elles vides ?
            If maFeuille.Cells(LigneEnCours, 2) = "" Then
            'elles sont vides : j'incrémente mon compteur qui me sert à sortir
                nbLigneVideConsecutive = nbLigneVideConsecutive + 1
            End If
        Else ' il y a une différence, analysons la.
            Set maCell = maFeuille.Cells(LigneEnCours, 4)
            TxtTst = maFeuille.Cells(LigneEnCours, 2)
            TxtRef = maFeuille.Cells(LigneEnCours, 3)
            maCell = TxtRef
            For CarEnCours = 1 To Len(TxtTst)
                If Mid(TxtTst, CarEnCours, 1) = Mid(TxtRef, CarEnCours, 1) Then
                ' si le caractère est identique je lui affecte la couleur noir RGB(0,0,0,)
                    With maCell.Characters(Start:=CarEnCours, Length:=1).Font
                        .Name = "Verdana"
                        .FontStyle = "Normal"
                        .Size = 10
                        .Strikethrough = False
                        .Superscript = False
                        .Subscript = False
                        .OutlineFont = False
                        .Shadow = False
                        .Underline = xlUnderlineStyleNone
                        .Color = RGB(0, 0, 0)
                    End With
                Else 'si le caractère est différent je lui affecte la couleur rouge RGB(255,0,0)
                    With maCell.Characters(Start:=CarEnCours, Length:=1).Font
                        .Name = "Verdana"
                        .FontStyle = "Normal"
                        .Size = 10
                        .Strikethrough = False
                        .Superscript = False
                        .Subscript = False
                        .OutlineFont = False
                        .Shadow = False
                        .Underline = xlUnderlineStyleNone
                        .Color = RGB(255, 0, 0)
                    End With
                End If
            Next CarEnCours
        End If
        LigneEnCours = LigneEnCours + 1
    Loop
    MsgBox ("Correction terminée")
End Sub

trouvée sur ce fil : https://www.excel-downloads.com/thr...et-mettre-en-evidence-les-differences.143668/, permet la détection de différences entre deux colonnes.

Toutefois, je ne parviens pas à l’adapter à mes besoins.

Partant du même principe, je souhaiterais que la colonne « Différences » laisse apparaître clairement - couleur de police rouge/gras, par exemple - la (les) différence(s) entre deux colonnes de données, qu'il s'agisse de texte, numéro(s) et/ou nombre(s).

Auriez-vous, s’il vous plaît, une solution ?

Je vous remercie pour votre aide :) .
 

Banzai64

XLDnaute Accro
Re : Différence(s) entre cellules : détecter

Bonsoir

Quand tu marques
Toutefois, je ne parviens pas à l’adapter à mes besoins.

sans connaitre tes besoins pas facile de t'aider

Cette macro compare la colonne B avec la colonne C et si différence recopie en colonne D les lettres différentes en rouge et noir les lettres semblables
Termine dés qu'elle a trouvé 5 lignes vides

Avec plus de renseignements

Bonne nuit
 

DoubleZero

XLDnaute Barbatruc
Re : Différence(s) entre cellules : détecter

Bonjour à toutes et à tous,

Hier soir, j’aurais dû aller plut tôt au dodo… Cela m’aurait évité d’écrire des sottises !

La macro susvisée fonctionne parfaitement : :eek: HONTE A MOI :eek: et merci encore, Banzai64.
 

Statistiques des forums

Discussions
312 104
Messages
2 085 339
Membres
102 865
dernier inscrit
FreyaSalander