[EXCEL] Comparaison de colonnes

Fermé
Jean-Mikael Messages postés 12 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 4 juillet 2007 - 4 juil. 2007 à 11:25
 Thiby - 4 juil. 2007 à 14:42
Bonjour à tous alors voilà mon problème j'aimerai effectuer une comparaison entre 2 colonnes selon un critère qui me posent problème pour réaliser ma macro.
Les Colonnes se présentent comme ceci :

Colonne1 Colonne2 Colonne3
2 3
5 0 Erreur

Je m'explique plus précisement, le but de cette comparaison étant d'analyser les cellules des 2 colonnes et du coup les comparer entre elles, dans l'exemple tant qu'il y a un chiffre dans la 1ère colonne et dans la 2ème il n'y a pas d'ereur, en revanche s'il y a un chiffre dans la première colonne et un 0 dans la 2ème là je souhaiterai afficher un message d'erreur, dernière précision s'il y a 0 dans la 1ère et dans la 2ème 0 il n'y pas d'erreur le truc c'est que dès qu'il y a un chiffre dans la 1ère il doit forcément yen avoir un dans la 2ème différent de 0.

Je vous envoie ma macro :


Sub control()

Dim rngA As Range
Dim rngB As Range

Set rngA = Range(Cells(1, "M"), Cells(Rows.Count, "M").End(xlUp))
Set rngB = Range(Cells(1, "U"), Cells(Rows.Count, "U").End(xlUp))

For Each cell In rngA

If Not IsError(Application.Match(cell.Value, rngB, 0)) Then
Cells(cell.Row, "AG").Value = "Erreur Détecté"
End If
Next
End Sub


J'espère avoir été précis sur mon problème merci d'avance pour vos futur réponses.

5 réponses

Salut

J'ai écris une solution, elle est pas optimale mais peut être que tu pourras t'en inspirer...
Attention par contre elle n'est valable que s'il y a toujours quelque chose dans la première colonne.

Dim cur_row As Integer ' ligne courante

cur_row = 2 ' commence à 2 pour ne pas prendre la ligne de titre

' tant qu'il y a quelque chose dans la premier colonne
While Cells(cur_row, "A").Value <> ""

    ' la 2eme colonne ne contient rien
    If Cells(cur_row, "B").Value = "" Or Cells(cur_row, "B").Value = 0 Then
        Cells(cur_row, "C").Value = "Erreur"
    End If
     
    cur_row = cur_row + 1
    
Wend
0
Jean-Mikael Messages postés 12 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 4 juillet 2007 1
4 juil. 2007 à 13:19
Merci beaucoup ! je test cette solution et je te tients au courant !
encore merci
0
Jean-Mikael Messages postés 12 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 4 juillet 2007 1
4 juil. 2007 à 13:31
Merci thiby sa marche niquel le seul soucil c'est qu'il faudrait modifié le code à un niveau car si la colonne de référence et la colonne comparé sont toutes les deux à 0 le programme indique une erreur seulement
dans le cadre de mon programme il ne doit y avoir qu'une seule possibilité d'erreur à savoir la colonne de référence "A" si celle-ci est par exemple à 6 et la colonne comparé "B" à 0 là le programme indique une erreur mais uniquement dans ce cas de figure (6 n'étant pas un nombre fixe sa peut-etre n'importe quel chiffre même décimal), je te remercie d'avance si tu peux m'aidé d'avantage et merci quand meme beaucoup pour ce programme !
0
De rien Jean-Mikael :)

pour répondre au cas particulier que tu as énonçais, je compléterais la condition suivante dans le "while" :

    
If Cells(cur_row, "B").Value = "" Or Cells(cur_row, "B").Value = 0 Then
        Cells(cur_row, "C").Value = "Erreur"
End If



en

If Cells(cur_row, "B").Value = "" Or (Cells(cur_row, "A").Value <> 0 And Cells(cur_row, "B").Value = 0) Then
        Cells(cur_row, "C").Value = "Erreur"
End If



Cà alourdit un peu la condition mais j'ai testé et çà fonctionne :)

Petite remarque : cela n'est valide que pour des nombres bien sûr. :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
désolé pour les fautes, je n'arrive pas à voir comment on édite sur ce forom... :s
0