Nombre de différences entre 2 plages

  • Initiateur de la discussion Initiateur de la discussion nadir****
  • Date de début Date de début

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 !

nadir****

XLDnaute Occasionnel
Bonjour à tous.
J'ai un souci avec le code écrit dans la pièce jointe.

J'ai souvent besoin de compter les différences entre 2 plages.
J'ai écrit une fonction "Différences" que je devrais pouvoir appeler quand besoin...

Mais ?
Dans l'exemple joint, j'ai une erreur qui apparait:
Erreur d'exécution '1004'
que je ne comprends pas.

Lancer le programme TestDifférences qui appelle la fonction Différences

Merci à tous.

Nadir.
 

Pièces jointes

Re : Nombre de différences entre 2 plages

Bonsoir,
Code:
Sub TestDifferences()
Dim tablo, i%, resultat$
tablo = Range("A1").CurrentRegion.Value
For i = 2 To UBound(tablo, 1) - 1
    resultat = resultat & Differences(tablo, i, UBound(tablo, 2))
Next
MsgBox resultat
End Sub

Function Differences(ByRef T As Variant, ByVal L%, ByVal maxC%) As String
Dim j%, texte$
For j = 1 To maxC
    If T(L, j) <> T(L + 1, j) Then
    texte = texte & "ligne " & L & " et ligne " & L + 1 & vbCrLf
    Exit For
    End If
Next
Differences = texte
End Function
A+
kjin
 
Dernière édition:
Re : Fonction: Nombre de différences entre 2 plages

Merci Kijn.
Mais je cherche à écrire une fonction qui me renvoie le nombre de différences entre 2 plages quelconques (de mêmes dimensions bien sûr)
Une fonction dont les 2 arguments sont les noms des plages.
Voici le code que je croyais bon
Code:
Function Différences(Plage1 As Range, Plage2 As Range) As Integer
'XXXXXXXX Compte le nombre valeurs différentes de deux plages
'XXXXXXXX Si les plages n'ont pas les mêmes dimensions, renvoie la valeur -1

Dim a As Integer, b As Integer

If (Plage1.Rows.Count <> Plage2.Rows.Count) Or (Plage1.Columns.Count <> Plage2.Columns.Count) Then
    Différences = -1
    Exit Function
End If

Différences = 0
For a = 1 To Plage1.Rows.Count
    For b = 1 To Plage1.Columns.Count
        If Plage1(a, b) <> Plage2(a, b) Then Différences = Différences + 1
    Next b
Next a

End Function
Hélas il ne fonctionne pas lorsqu'il est appelé par exemple par le programme suivant:
Code:
Sub TestDifférences()
Dim Tableau As Range
Dim i As Integer
Dim Résultat As Integer

Set Tableau = Range("A1").CurrentRegion
For i = 1 To Tableau.Rows.Count
    Résultat = Différences(Tableau.Rows(i), Tableau.Rows(i + 1))
    MsgBox "Il y a " & Résultat & " différence(s) entre la ligne " & i & " et la suivante"
Next i

End Sub
Tout au moins dans l'exemple donné.
Mais je voudrais pouvoir utiliser la fonction "Différences" dans d'autres procédures.

Merci en tout cas à ceux qui pourrons me donner un coup de main.

Nadir
 
Dernière édition:
Re : Nombre de différences entre 2 plages

Bonjour nadir***, kjin,

Pour que la procedure fonctionne, il faut modifier la ligne
VB:
If Plage1(a, b) <> Plage2(a, b) Then Différences = Différences + 1
comme ceci :
VB:
If Plage1.Cells(a, b) <> Plage2.Cells(a, b) Then Différences = Différences + 1

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

D
Réponses
4
Affichages
900
D
Retour