Comparaison de lignes et cellules, code macro VBA

  • Initiateur de la discussion Initiateur de la discussion Yad
  • 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 !

Yad

XLDnaute Nouveau
Bonjour à tous

Je suis toute débutante et autodidacte dans le codage de VBA et les macros excel...

Je souhaiterai obtenir de l'aide puisqu'il me semble que je fasse partie des rares débutants ddu forum.

Je vous explique le problème:

je souhaiterai comparter des lignes qui contiennent plusieurs informations différentes; certaines des valeurs peuvent être els memes mais j'aimerai signaler un MsgBox seulement si au moins deux cellules par lignes sont identiques.



Et éventuellement si possible me signaler lesquels??


Pensez vous que ce codage n'est pas trop compliqué?


Merci d'avance
 
Re : Comparaison de lignes et cellules, code macro VBA

ce n'était absolument pas pour dire que j'étais préssée; c'est juste que je en sais pas trop comment vous échangez...
Je me suis inscrite il y a moins d'une heure....


Je ne voulais pas brusquer, désolée...
 
Re : Comparaison de lignes et cellules, code macro VBA

Re,

Tu as moins d'une heure d'inscription. Alors patiente, ton tour viendra. Essaie de trouver sur le forum des sujets similaires et tente de les adapter à ton projet.

Si tu as des difficultés pour adapter, reviens avec une demande illustrant ta difficulté, un fichier exemple de ce que tu as et comment tu as tenté d'y répondre + un exemple de ce que tu souhaites obtenir.

A+
 
Re : Comparaison de lignes et cellules, code macro VBA

Bonjour Yad, salut Hasco,

Voyez le fichier joint avec la macro du bouton :

Code:
Private Sub CommandButton1_Click()
Dim plage As Range, t, h&, L%, s(), i&, j&, n As Byte, k%
Set plage = [B2:K31] 'à adapter
t = plage
h = UBound(t)
L = UBound(t, 2)
ReDim s(1 To 2) 'pour le stockage des 2 valeurs
For i = 1 To h - 1
  For j = i + 1 To h
    n = 0
    For k = 1 To L
      If Application.CountIf(plage.Rows(i), t(j, k)) Then
        n = n + 1: s(n) = t(j, k)
        If n = 2 Then
          MsgBox "Valeurs " & s(1) & " et " & s(2) & _
          " en lignes " & i & " et " & j, , "Doublons"
          Exit For
        End If
      End If
    Next
  Next
Next
End Sub
Je me suis contenté de lister les 2 premières valeurs faisant doublons (il peut évidemment y en avoir plus).

A+
 

Pièces jointes

Dernière édition:
Re : Comparaison de lignes et cellules, code macro VBA

Bonjour Yad, Hasco, le forum,

Maintenant avec cette macro tous les doublons (>1) sont listés :

Code:
Private Sub CommandButton1_Click()
Dim plage As Range, t, h&, L%, i&, j&, n As Byte, k%, s()
Set plage = [B2:K31] 'à adapter
t = plage
h = UBound(t)
L = UBound(t, 2)
For i = 1 To h - 1
  For j = i + 1 To h
    n = 0
    For k = 1 To L
      If Application.CountIf(plage.Rows(i), t(j, k)) Then
        ReDim Preserve s(n)
        s(n) = t(j, k)
        n = n + 1
      End If
    Next
    If n > 1 Then MsgBox "Valeurs :" & vbLf & _
    Join(s, vbLf), , " Doublons lignes " & i & " et " & j
  Next
Next
End Sub
Fichier (2).

A+
 

Pièces jointes

Re : Comparaison de lignes et cellules, code macro VBA

Re,

Avec les versions (1) et (2), s'il y a des doublons sur une ligne, ils peuvent être listés même s'ils n'apparaissent qu'une fois sur les autres lignes.

Cela est corrigé dans cette version (3) :

Code:
Private Sub CommandButton1_Click()
Dim plage As Range, t, h&, L%, i&, j&, n As Byte, k%
Dim x%, y As Variant, s()
Set plage = [B2:K31] 'à adapter
t = plage
h = UBound(t)
L = UBound(t, 2)
For i = 1 To h - 1
  For j = i + 1 To h
    n = 0
    ReDim s(0)
    For k = 1 To L
      x = Application.CountIf(plage.Rows(i), t(j, k))
      If x Then
        y = Application.Match(t(j, k), s, 0)
        If IsError(y) Or IsNumeric(y) And x > 1 Then
          ReDim Preserve s(n)
          s(n) = t(j, k)
          n = n + 1
        End If
      End If
    Next
    If n > 1 Then MsgBox "Valeurs :" & vbLf & _
    Join(s, vbLf), , " Doublons lignes " & i & " et " & j
  Next
Next
End Sub
A+
 

Pièces jointes

- 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

Retour