Mettre en évidence des similitudes entre 2 colonnes Excel [VBA]

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

J'ai mal du m'expliquer alors ...
 

leop93

XLDnaute Occasionnel
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Mal, c'est faible comme mot. :rolleyes:
 

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Le premier fichier n'est plus d'actualité comme j'ai du le préciser ultérieurement il me semble ...
J'ai voulu vous envoyer un autre fichier, mais il était trop grand ...

je vais essayer de vous le renvoyer en supprimant des colonnes ...

Désolé pour les confusions engendrées
 

Dranreb

XLDnaute Barbatruc
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Ça devrait colorer le fond de la cellule en noir. Siu ce n'est pas le cas: joindre le classeur.
 

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Si je m'occupe de vos conseils, enfin ceux que j'arrive à comprendre ^^
 

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Voila le nouveau fichier .

Le but était de comparer la colonne B avec la colonne R. La colonne R étant les données qui sont actualiser, le but du fichier est de savoir si je posséde ces mêmes données, afin de pouvoir moi même les actualiser..
De ce fait je compare les cellules de R, une par une aux cellules de B. Et lorsqu'il y a similitude, je les colori
(enfin le programme).
maintenant je cherche a changer de couleur ..
 

leop93

XLDnaute Occasionnel
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Le premier fichier n'est plus d'actualité comme j'ai du le préciser ultérieurement il me semble ...
J'ai voulu vous envoyer un autre fichier, mais il était trop grand ...

je vais essayer de vous le renvoyer en supprimant des colonnes ...

Désolé pour les confusions engendrées
Ultérieurement, donc au moins après ce message. ;)

Tu peux mettre sur Cjoint ton fichier s'il est trop gros pour le forum...
 

leop93

XLDnaute Occasionnel
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Oh comme par hasard...

Je remplace:
Code:
For i = 3 To 7433
Par:
Code:
For i = 3 to Cells(500, 18).End(xlUp).Row
Et ça va a 200 à l'heure. Je ne te l'ai dit que 2 fois, même 3 avec ce message, mais le prendras tu en compte ?

EDIT: et puis un petit:
Code:
Application.ScreenUpdating = False
en début de code, ainsi qu'un petit:
Code:
Application.ScreenUpdating = True
en fin de code fera le plus grand bien aux yeux de tes utilisateurs/chefs...
 
Dernière édition:

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Je sais pas comment faire... c'est la première fois que je viens sur un forum alors c'est pas évident pour moi ..
Antérieurement si tu préféres ;)
 

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

C'est pris en compte, c'est même changé sur mon fichier, mais je vous ai envoyé le fichier rapidement sans fair le changement ..!
 

leop93

XLDnaute Occasionnel
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

D'accord, j'ai ajouté encore un petit truc à mettre en place, au moins pour la propreté. ;)

C'était pour te taquiner l'ultérieurement. Et non tu ne l'avais pas précisé après vérification. :rolleyes:
 

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

A quoi serve Application.ScreenUpdating = True et Application.ScreenUpdating = False??
 

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Afin de me faciliter la tache, j'ai créé une colonne sur la même feuille avec les données à comparer ...

Sur mon deuxième message ... ;)
 

leop93

XLDnaute Occasionnel
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Applique le et tu le découvriras. ;)

Si jamais tu n'arrives pas à les mettre au bon endroit:

Code:
Private Sub CommandButton1_Click()
'INITIALISATION

Dim i As Long ' Lignes de la colonne A
Dim j As Long ' Colonne A à Colonne P
Dim k As Long ' Lignes de la colonne O
Dim m As Single ' Changment de couleur

Application.ScreenUpdating = False

' PROGRAMME

'm = 1
For k = 3 To Cells(500, 18).End(xlUp).Row  ' jusqu'à la derniére ligne non vide; .End(xlUp).Row: la ligne de la première cellule non vide en remontant depuis la dernière ligne de la colonne.


    For i = 3 To Cells(500, 18).End(xlUp).Row ' Parcours des données recensées
  
            If Cells(k, 18).Value = Cells(i, 2).Value And Cells(i, 2).Value <> "" And Cells(k, 18).Value <> "" Then 'Recherche des similitudes en évitant les cellules non vides ..
                
                For j = 1 To 16 ' pour les colonnes de A à P de la ligne i, on colorie l'ensemble des cellules similaire à la cellule comparée
                    Cells(i, j).Interior.ColorIndex = 5
                    'm = m + 1 ' Changement de couleur
                Next j
               Cells(k, 18).Interior.ColorIndex = 5
            End If
        
    Next i
    
Next k

Application.ScreenUpdating = True

End Sub
:eek:

EDIT: je ne vois pas où mais peu importe, l'important c'est le code ! ;)
 

Dranreb

XLDnaute Barbatruc
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Dans ce cas, à la lueur du dernier fichier joint, pourquoi pas sur A3:p35 une mise en forme conditionnelle avec cette formule ?
Code:
=NB.SI($R$3:$R$35;$B3)>0
À +
 

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Private Sub CommandButton1_Click()


'INITIALISATION

Dim i As Long ' Lignes de la colonne A
Dim j As Long ' Colonne A à Colonne P
Dim k As Long ' Lignes de la colonne O
Dim m As Single ' Changment de couleur

Application.ScreenUpdating = False
' PROGRAMME


For k = 3 To Cells(500, 18).End(xlUp).Row ' jusqu'à la derniére ligne non vide; .End(xlUp).Row: la ligne de la première cellule non vide en remontant depuis la dernière ligne de la colonne.


For i = 3 To Cells(7433, 2).End(xlUp).Row ' Parcours des données recensées

If Cells(k, 18).Value = Cells(i, 2).Value And Cells(i, 2).Value <> "" And Cells(k, 18).Value <> "" Then 'Recherche des similitudes en évitant les cellules non vides ..

For j = 1 To 16 ' pour les colonnes de A à P de la ligne i, on colorie l'ensemble des cellules similaire à la cellule comparée
Cells(i, j).Interior.ColorIndex = 5 ' Changement de couleur

Next j
Cells(k, 18).Interior.ColorIndex = 5
End If

Next i

Next k

Application.ScreenUpdating = True

End Sub


Je ne vois pas la différence, tout du moins sur le résultat obtenu ... Je pense que c'est sur la rapidité d'éxecution mais je ne suis pas sure ...

Est ce que la nouvelle explication est-elle plus claire?
 

leop93

XLDnaute Occasionnel
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Pour plus de lisibilité, met ton code entre balise [*code=vba] CODE [*/code], sans les étoiles.

Pour ma part l'explication était comprise depuis le début (via l'interprétation que j'en faisais), mais parfois ce que tu disais mettait vraiment des grosses zones de floues... ;)

Le Application.ScreenUpdating fait que toutes les actions du code sont faites et ensuite elles sont affichées. Evitant ainsi le "clignotement" lors de l'éxécution du code.

Une autre chose me saute aux yeux, pourquoi t'entêtes tu à mettre des valeurs exactes dans les For i = 3 to CETTE VALEUR ? Le End(xlUp).Row permet de ne sélectionner que les lignes remplies si je ne m'abuse, donc tu devrais mettre la valeur max, c'est à dire 65536. 2 je suppose que c'est B, 18 je suppose que c'est R. Pour les deux remplace par:
Code:
For i = 3 To [B65536].End(xlUp).Row
For k = 3 To [R65536].End(xlUp).Row
 

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Comment fais tu avec le ci joint? pk 65536? j'ai que 7433 lignes max?
 

leop93

XLDnaute Occasionnel
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

Tu vas sur ce site, tu upload ton fichier et tu nous copie/colle le lien: Accueil de Cjoint.com

65536 = 16 bits, valeur maximale pour un entier sous Excel et sous beaucoup de logiciel. Pas sûr à 100% mais ça doit être quelque chose comme ça. ;)

Tu as que 7433 lignes, mais ça c'est pour le moment. Je suppose que c'est une sorte de base de donnée qui sera complétée au fur et à mesure. Ca serait bête que ta macro se stoppe à la 7433ème ligne alors qu'il y en a 7435...

Et la fonction que je t'ai donné se stoppe quand les cellules sont vides, donc pas de travail pour rien et donc gain de temps, ressource, vitesse, ... .
 

MaximeC

XLDnaute Junior
Re : Mettre en evidence des similutes entre 2 feuilles excel, a l'aide d'1 programme

L'entreprise ou je travaille a bloqué le site ... Pas de bol ..
 

Haut Bas