XL 2010 Comparaison de lignes entre colonnes

Stephane.dantigny

XLDnaute Nouveau
Bonsoir,

J'aimerais comparer des lignes entre les colonnes A, B, M et X,Y, Z. Pour exemple je n'ai mis que 2 lignes.
Les références sont les colonnes A et X et vous pourrez constater que l'ordre croissant _QX des lignes entre A, B, M et X,Y,Z ne sont pas les mêmes.
A B M X Y Z
A35_Q1 Eclairage Poste 2 A35_Q3 PC Local 1
A35_Q3 PC Local 1 A35_Q1 Eclairage Poste 2


Comme résultat il faudrait juste que les cellules dans les colonnes Y, Z soient remplie en Rose si toutefois la comparaison n'est pas identique suivant les références en A et X.

Exemple pour A35Q1, il faudrait qu'en B et Y on ait le même texte, idem en M et Z.
A B M X Y Z
A35_Q1 Eclairage Poste 2 A35_Q3 PC Local 1
A35_Q3 PC Local 1 A35_Q1 PC Poste 1

A B M X Y Z
A35_Q1 Eclairage Poste 2 A35_Q3 PC Local 1
A35_Q3 PC Local 1 A35_Q1 PC Poste 2

Exemple pour A35Q3
A B M X Y Z
A35_Q1 Eclairage Poste 2 A35_Q3 PC Local 2
A35_Q3 PC Local 1 A35_Q1 Eclairage Poste 2



A B M X Y Z
A35_Q1 Eclairage Poste 2 A35_Q3 CVC Local 1
A35_Q3 PC Local 1 A35_Q1 Eclairage Poste 2


Merci d'avance pour vos réponses.
 

Stephane.dantigny

XLDnaute Nouveau
Bonsoir le fil,
@Barbatruc

Oui j'ai bien essayé de trouver l'explication du code .Je suis bien entendu curieux, mais quand ca veux pas. Il faut faire appel à un expert.
Ce que j'ai compris du code:

l = Cells(Rows.Count, 2).End(3).Row
On Error Resume Next
For i = 10 To l

On commence à la ligne 10 jusqu'au nombre des 3 dernières ligne la colonne 2.

Bizarre, avant tu étais en colonne 1, on va dire normal et puis après tu passes en colonne 2. Et pourquoi les 3 dernières lignes...Je me suis dis les 3 suivantes après la ligne 10. J'ai donc fait des essais mais ca ne marche pas, exemple j'avais mis End(5) si je remplissais 2 lignes en plus..
 

Staple1600

XLDnaute Barbatruc
Re

L'ecriture classique est:
l = Cells(Rows.Count, 2).End(xlUp).Row
Donc testes ce code pour voir à quoi cela sert ;)
(à tester sur une feuille vierge)
VB:
Sub Test()
Dim Staple&: Staple = 0: Randomize Staple + 1600
Dim Ligne&
Cells.Clear
Cells(1, 2).Resize(Int(16 * Rnd) + 1) = "Staple"
Ligne = Cells(Rows.Count, 2).End(xlUp).Row
MsgBox Ligne
'écriture raccourcie
MsgBox Cells(Rows.Count, 2).End(3).Row
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

La colonne 3 n'a rien à voir dans l'histoire ;)
La syntaxe suivante s'explique ainsi
Cells(Rows, Column)
Donc
Cells(1,2)
veut dire Cells(Ligne 1, Colonne 2) soit B1

Et celle-ci : Ligne = Cells(Rows.Count, 2).End(xlUp).Row
veut dire Trouver la ligne de la première cellule non vide en partant du bas de la feuille de la colonne 2.

Bref pour revenir à ta suggestion du message#14
For i=10 To 100 ' était la bonne réponse ;-)
 

Staple1600

XLDnaute Barbatruc
Re

Fais marcher ta curiosité avec un soupçon de sagacité, camarade ;)

C'est toi qui parlais de la ligne 100, non ?

Donc il suffisait de modifier le code comme suit ...:D
Sub Macro3()
Dim l&, i&
Application.ScreenUpdating = False
l = 100
On Error Resume Next
For i = 10 To l
...' en gardant le reste de la macro précédente
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

C'est ta question.
C'est à toi de trouver le temps pour t'investir dans sa résolution, non ?

Nous ne sommes là qu'en soutien, pas pour faire à la place de.

(C'est là ma philosophie et je trouve toujours du temps pour ce qui présente de l’intérêt à mes yeux ;))
 

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 111
dernier inscrit
Eric68350