macro ou formules pour comparer

kakachi

XLDnaute Junior
Bonjour chers excelnautes, :D:D

je souhaite obtenir de l'aide afin de solutionner mon problème. Je cherche à mettre en place un programme qui me comparera 2 colonnes de valeurs.

Je joins mon fichier excel afin de mieux visualiser mon problème.

Je vous souhaite une bonne journée ;);)

@+, Kakachi
 

Pièces jointes

  • comparaison.xls
    24 KB · Affichages: 62
  • comparaison.xls
    24 KB · Affichages: 61
  • comparaison.xls
    24 KB · Affichages: 65

Compress

XLDnaute Occasionnel
Re : macro ou formules pour comparer

Bonjour Kakachi, bonjour le forum.

Pour ton problème, voici une petite macro qui devrait t'aider, tu peux la lancer via le bouton "Comparaison".

VB:
Option Explicit

Sub Comparaison()

    Dim i, j, k As Long
    Dim Plage1, Plage2 As Range
    Dim Cell1, Cell2 As Object
    
    k = 2
    i = Sheets(1).Range("A65536").End(xlUp).Row
    j = Sheets(1).Range("D65536").End(xlUp).Row
    
    Sheets(1).Range("G2:G1000").ClearContents
    
    Set Plage1 = Sheets(1).Range("A3:A" & i)
    Set Plage2 = Sheets(1).Range("D3:D" & j)
    
    For Each Cell1 In Plage1
    Set Cell2 = Plage2.Find(What:=Cell1.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not Cell2 Is Nothing Then
        If Cell1.Offset(0, 1).Value > Cell2.Offset(0, 1).Value Then
            Sheets(1).Range("G" & k).Value = Cell2.Value
            k = k + 1
        End If
    End If
    Next Cell1

End Sub
 

Pièces jointes

  • comparaison.xls
    31 KB · Affichages: 60
  • comparaison.xls
    31 KB · Affichages: 60
  • comparaison.xls
    31 KB · Affichages: 62

Papou-net

XLDnaute Barbatruc
Re : macro ou formules pour comparer

Bonjour kakachi,

Voici un exemple de macro à insérer dans un module de code standard :

Code:
Sub Comparer()
With Sheets("Feuil1")
  For Each cel In .Range("F9:F" & .Range("F65536").End(xlUp).Row)
    Set lg = .Range("C9:C14").Find(cel.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not lg Is Nothing Then
      If .Range("G" & cel.Row) < .Range("D" & lg.Row) Then
        .Cells(.Range("C65536").End(xlUp).Row + 1, 3) = cel.Value
      End If
    End If
  Next
End With
End Sub

Concernant une solution par formule, je ne vois pas mais je pense que ça doit être également possible.

Espérant avoir répondu.

Cordialement.

Edit : bonjour Compress, tu as été le plus rapide.
 

Papou-net

XLDnaute Barbatruc
Re : macro ou formules pour comparer

Lol Papounet à 3 minutes ;)

Solution presque identique ;)

Bonne journée :p

Oui, presque les mêmes solutions mais peux-tu me dire pourquoi tu effaces la plage "G2:G1000" en début de macro ?

Hormis le fait qu'on obtient un message d'erreur à cause des cellules fusionnées en ligne 7, tu ne peux plus comparer les nombres de citation.

Bonne journée à toi également.

Cordialement.
 

Compress

XLDnaute Occasionnel
Re : macro ou formules pour comparer

Je ne sais plus pourquoi j'ai mis ça lol car je pensais relancer la macro et je l'ai testé avec plusieurs données ça allait plus vite. Effectivement tu as raison...

Papounet 1 Compress 0

Enfin bon ;)


Pour les formules je suis d'accord en vba ça va un peu plus vite et en formule je ne vois pas comment faire instinctivement.

Allez hop au boulot j'ai d'autres macros à faire pour ma boite cette fois.
 

Papou-net

XLDnaute Barbatruc
Re : macro ou formules pour comparer

Je ne sais plus pourquoi j'ai mis ça lol car je pensais relancer la macro et je l'ai testé avec plusieurs données ça allait plus vite. Effectivement tu as raison...

Papounet 1 Compress 0

Enfin bon ;)


Pour les formules je suis d'accord en vba ça va un peu plus vite et en formule je ne vois pas comment faire instinctivement.

Allez hop au boulot j'ai d'autres macros à faire pour ma boite cette fois.

RE :

Et pourtant, àa a l'air de fonctionner pour kakachi.

L'essentiel n'est-il pas qu'il semble avoir trouvé son bonheur ?

Bon courage à toi !
 

Discussions similaires

Réponses
7
Affichages
345

Statistiques des forums

Discussions
312 497
Messages
2 088 992
Membres
104 000
dernier inscrit
dinelcia