[EXCEL] Comparaison de colonnes
Jean-Mikael
Messages postés
12
Statut
Membre
-
Thiby -
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.
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.
A voir également:
- [EXCEL] Comparaison de colonnes
- Formule moyenne excel plusieurs colonnes - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Déplacer colonne excel - Guide
- Liste déroulante excel - Guide
- Comment faire des colonnes sur word - Guide
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.
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
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 !
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 !
De rien Jean-Mikael :)
pour répondre au cas particulier que tu as énonçais, je compléterais la condition suivante dans le "while" :
en
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. :)
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. :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question