Comparaison de cellules et affichage de "Vrai ou Faux"

lemarcheurfou

XLDnaute Nouveau
Bonjour à tous,

Je voudrais faire une comparaison de deux plages de cellules mais je ne trouve pas la solution c'est un peu complexe pour moi...

Voilà mon code et je joins aussi mon fichier pour que vous voyez ce que je veux faire.

Code:
Sub Comparaison()

 Dim Arr1, Arr2, Flag
 Arr1 = Range("A2:D2")
 Arr2 = Range("F2:I2")
 Flag = True
 For i = LBound(Arr1, 2) To UBound(Arr1, 2)
 For j = LBound(Arr1, 1) To UBound(Arr1, 1)
 If Not Arr1(j, i) = Arr2(j, i) Then
 Flag = False: Exit For
 End If
 Next j
 If Not Flag Then Exit For
 Next i
 
  Set Range("" & Flag)

End Sub

Je vous remercie d'avance pour votre aide.
 

Pièces jointes

  • testcompa.xlsm
    17.1 KB · Affichages: 53
G

Guest

Guest
Re : Comparaison de cellules et affichage de "Vrai ou Faux"

Bonjour,

En une seule boucle:
Code:
    Dim i As Integer
    With Range("A2:D2")
        For i = 1 To .Count
            Range("K2:N2").Cells(i) = .Cells(i) = Range("F2:I2").Cells(i)
        Next i
    End With

A+
 

lemarcheurfou

XLDnaute Nouveau
Re : Comparaison de cellules et affichage de "Vrai ou Faux"

Bonjour,

En une seule boucle:
Code:
    Dim i As Integer
    With Range("A2:D2")
        For i = 1 To .Count
            Range("K2:N2").Cells(i) = .Cells(i) = Range("F2:I2").Cells(i)
        Next i
    End With

A+

Merci pour vos réponses très rapide.

Hasco ton code marche parfaitement mais juste pour la première ligne. Faudrai que j'ajoute une boucle pour les autres lignes de mon tableau c'est bien ça?
 
G

Guest

Guest
Re : Comparaison de cellules et affichage de "Vrai ou Faux"

Re

Pas besoin de deuxième boucle, tes plages allant de la ligne 2 à 3:

Code:
 Dim i As Integer
    With Range("A2:D3")
        For i = 1 To .Count
            Range("K2:N3").Cells(i) = .Cells(i) = Range("F2:I3").Cells(i)
        Next i
    End With

J'avais pas corrigé dans le précédent post. Quant on ne met pas d'index de colonne dans un objet range Excel identifie le premier index comme un n° d'ordre. Exemple soit une plage de 4 Cellules (A2:B3) la cellule 1 est A2 la cellule 2 est B2 la cellule 3 est A3 la cellule 4 est B3

A+
 

lemarcheurfou

XLDnaute Nouveau
Re : Comparaison de cellules et affichage de "Vrai ou Faux"

Re

Pas besoin de deuxième boucle, tes plages allant de la ligne 2 à 3:

Code:
 Dim i As Integer
    With Range("A2:D3")
        For i = 1 To .Count
            Range("K2:N3").Cells(i) = .Cells(i) = Range("F2:I3").Cells(i)
        Next i
    End With

J'avais pas corrigé dans le précédent post. Quant on ne met pas d'index de colonne dans un objet range Excel identifie le premier index comme un n° d'ordre. Exemple soit une plage de 4 Cellules (A2:B3) la cellule 1 est A2 la cellule 2 est B2 la cellule 3 est A3 la cellule 4 est B3

A+

Ah oui merci j'ai pas remarqué mais si j'ai un nombre de ligne qui n'est pas devinable je dois compté toute les lignes avec Range("A65536").End(xlUp).Row?
 

lemarcheurfou

XLDnaute Nouveau
Re : Comparaison de cellules et affichage de "Vrai ou Faux"

Voilà la solution:

Code:
Sub Comparaison()

 Dim i As Integer
 Dim nbColonne As Integer

  nbColonne = Range("A2").End(xlDown).Row

    With Range("C2:D" & nbColonne)
        For i = 1 To .Count
            Range("I2:J" & nbColonne).Cells(i) = .Cells(i) = Range("F2:G" & nbColonne).Cells(i)
        Next i
    End With

End Sub
 

lemarcheurfou

XLDnaute Nouveau
Re : Comparaison de cellules et affichage de "Vrai ou Faux"

Oui je vais testé tout ça je te remercie pour ton aide en tout cas.

Bonne journée.

Voilà la solution:

Code:
Sub Comparaison()

 Dim i As Integer
 Dim nbColonne As Integer

  nbColonne = Range("A2").End(xlDown).Row

    With Range("C2:D" & nbColonne)
        For i = 1 To .Count
            Range("I2:J" & nbColonne).Cells(i) = .Cells(i) = Range("F2:G" & nbColonne).Cells(i)
        Next i
    End With

End Sub
 
G

Guest

Guest
Re : Comparaison de cellules et affichage de "Vrai ou Faux"

Re,

Juste, pour être pointilleux, et si quelqu'un reprend ton code:
nbColonne ne serait-il pas mieux appellé nbLigne!? ....arf:) En type long (pour ce qui est des lignes et colonnes)

[Edition] Attention à l'emploi de XlDown qui peut très vite atteindre la fin de feuille (1048576 lignes pour excel 2010) si tu n'as rien en A3

Voir du côté de .End(xlUp) ou de [A2].currentRegion ou tester la variable.

A+
 
Dernière modification par un modérateur:

Discussions similaires

Réponses
11
Affichages
347

Statistiques des forums

Discussions
312 493
Messages
2 088 952
Membres
103 989
dernier inscrit
jralonso