Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 ...
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 )
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…