Dans cet article, nous allons créer un formulaire utilisateur pour comparer deux plages et découvrir les cellules non correspondantes.

Les données brutes sont constituées des données des modèles cibles et des modèles souhaités. Nous voulons trouver les enregistrements dans lesquels la cible et les modèles souhaités ne correspondent pas.

ArrowRawData

Nous avons créé un formulaire utilisateur qui accepte deux plages en entrée. Ces deux plages sont comparées pour rechercher des cellules non correspondantes.

ArrowUserform

En cliquant sur le bouton Soumettre, il comparera deux plages et retournera la sortie. Il affichera une boîte de message, affichant le nombre de cellules non correspondantes.

ArrowOutput1

Il fournira également des données sur les cellules non correspondantes dans un nouveau classeur.

ArrowOutput2

Explication du code

Définir Rng1 = Range (UserForm3.RefEdit1)

Le code ci-dessus est utilisé pour créer un objet d’objet de plage, qui obtient des valeurs de plage à partir du formulaire utilisateur.

Si Rng1 est rien ou Rng2 est rien, quittez Sub Le code ci-dessus est utilisé pour vérifier si les deux plages contiennent des valeurs. Si l’une des plages est laissée vide, le reste du code est ignoré dans la procédure.

Avec Rng1 LR1 = .Rows.Count LC1 = .Columns.Count End With Le code ci-dessus est utilisé pour obtenir le nombre de lignes et de colonnes dans la plage.

CellValue1 = Rng1.Cells (r, c) .FormulaLocal Le code ci-dessus est utilisé pour obtenir la valeur dans la cellule de la ligne r et de la colonne c.

Si CellValue1 <> CellValue2 Then Le code ci-dessus est utilisé pour comparer les valeurs des variables CellValue1 et CellValue2.

Veuillez suivre ci-dessous pour le code

Option Explicit

Sub CallingUserform()

UserForm3.Show

End Sub

'Insert below code in userform

Option Explicit

Private Sub CommandButton1_Click()

'Declaring variables

Dim Rng1, Rng2 As Range

Dim r, DiffCount As Long, c As Integer

Dim LR1 As Long, LC1 As Integer

Dim CellValue1 As String, CellValue2 As String

Dim NewWB As Workbook

'Getting the two range set for comparing

Set Rng1 = Range(UserForm3.RefEdit1)

Set Rng2 = Range(UserForm3.RefEdit2)

'Unloading the userform

Unload Me

'Disabling screen updates

Application.ScreenUpdating = False

'Checking whether Rng1 and Rng2 contains value

If Rng1 Is Nothing Or Rng2 Is Nothing Then Exit Sub

'Getting count of number of rows and columns in Rng1

With Rng1

LR1 = .Rows.Count

LC1 = .Columns.Count

End With

DiffCount = 0

'Adding new workbook for output

Set NewWB = Workbooks.Add



'Looping through all the columns and rows in the range

For c = 1 To LC1

For r = 1 To LR1



'Getting value from particular cell from both the ranges

CellValue1 = Rng1.Cells(r, c).FormulaLocal

CellValue2 = Rng2.Cells(r, c).FormulaLocal



'Comparing value of cell from both ranges

If CellValue1 <> CellValue2 Then



'Getting count of numbers of cells with different values

DiffCount = DiffCount + 1



'Adding unequal values to new workbook

Cells(r, c).Value = "'" & CellValue1 & " <> " & CellValue2

End If



Next r

Next c

'Display count of unequal cells in both range

MsgBox DiffCount & " cells contain different formulas!", _

vbInformation, "Compare Worksheet Ranges"

'Enabling screen updates

Application.ScreenUpdating = True

Set NewWB = Nothing



End Sub

Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.

Nous aimerions avoir de vos nouvelles, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]