[EXCEL] Comparaison de colonnes

Jean-Mikael Messages postés 12 Statut Membre -  
 Thiby -
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.
Configuration: Windows 2000
Internet Explorer 6.0

5 réponses

  1. Thiby
     
    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
  2. Jean-Mikael Messages postés 12 Statut Membre 1
     
    Merci beaucoup ! je test cette solution et je te tients au courant !
    encore merci
    0
  3. Jean-Mikael Messages postés 12 Statut Membre 1
     
    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
  4. Thiby
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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