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

MaximeC

XLDnaute Junior
Bonjour,

Dans le cadre d'un emploie saisonnier, on m'a demandé de réaliser une macro afin de comparer des données... Ayant très peu de base en VBA (si ce n'est un cours ayant eu pour objet la création de userform afin de réaliser des expériences probabilistes), je me tourne vers vous afin de m'orienter dans cette réalisation.

L'objectif est de trouver si il y en a, des similitudes entre une colonne de base B (environ 7500 lignes) et des données actualisées régulièrement à inserer (par moi même) dans le même fichier excel, colonne R (nombre de lignes variables ... maximum 500).

L'autre but étant de repérer facilement les similtudes, serait-il possible de mettre en couleur les lignes des cellules identiques au fichier importer? (une couleur par référence, jusqu'à la colonne P).

D'autre part, il y a 3 typeS de références à comparer, séparées dans 3 colonnes distinctes. Est-il possible de réaliser les demandes ci dessus sur chacune des colonnes (B,C et F)?

Enfin, afin de faciliter l'utilisation future de mes collègues, il me semble qu'il est possible de créer un bouton de commande afin de lancer chacun des 3 programmes. Pouvez vous les réaliser?

Dans l'attente de vos réponses, je vous souhaite une agréable journée.

Merci, et bon courage.

Maxime
 
Dernière édition:

MaximeC

XLDnaute Junior
Re : Mettre en évidence des similitudes entre 2 colonnes Excel [VBA]

Pouvez vous m'indiquer pourquoi l'incrémentation du m ligne 18 n'est pas correcte puisque le programme m'indique le message d'erreur 1004 une nouvelle fois ...

Code:
Private Sub CommandButton1_Click()

'INITIALISATION

Dim i As Long ' Lignes de la colonne B
Dim j As Long ' Colonne A à Colonne P
Dim k As Long ' Lignes de la colonne R
Dim m As Long ' Changment de couleur
Dim reference As String ' Stockage de la référence
Dim n As Long
Application.ScreenUpdating = False
' PROGRAMME

m = 0
For k = 3 To [R65536].End(xlUp).Row  ' Parcours la colonne R
    For i = 3 To [B65536].End(xlUp).Row  ' Parcours des données recensées à l'exception  des cellules non remplies
        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 vides ..
            m = m + 1
            Worksheets(1).Range(Cells(i, 1), Cells(i, 16)).Interior.ColorIndex = m
            Cells(k, 18).Interior.ColorIndex = m
            reference = Cells(k, 18).Value ' Le but est d'attribuer une couleur par référence //  Stockage de la chaine
            i = i + 1
                    For n = i To [B65536].End(xlUp).Row ' Parcours de la colonne B à partir de la référence qui suit la référence trouvée
                        If Cells(i, 2).Value = reference Then
                            Worksheets(1).Range(Cells(i, 1), Cells(i, 16)).Interior.ColorIndex = m
                        End If
                    Next n
        End If
    Next i
Next k
Application.ScreenUpdating = True

End Sub
 

MaximeC

XLDnaute Junior
Re : Mettre en évidence des similitudes entre 2 colonnes Excel [VBA]

Pourvez vous m'indiquer pourquoi mon incrémentation a la ligne 18 ne fonctionne pas puisque le programme m'indique l'erreur 1004??
Code:
Private Sub CommandButton1_Click()

'INITIALISATION

Dim i As Long ' Lignes de la colonne B
Dim j As Long ' Colonne A à Colonne P
Dim k As Long ' Lignes de la colonne R
Dim m As Long ' Changment de couleur
Dim reference As String ' Stockage de la référence
Dim n As Long
Application.ScreenUpdating = False
' PROGRAMME

m = 0
For k = 3 To [R65536].End(xlUp).Row  ' Parcours la colonne R
    For i = 3 To [B65536].End(xlUp).Row  ' Parcours des données recensées à l'exception  des cellules non remplies
        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 vides ..
            m = m + 1
            Worksheets(1).Range(Cells(i, 1), Cells(i, 16)).Interior.ColorIndex = m
            Cells(k, 18).Interior.ColorIndex = m
            reference = Cells(k, 18).Value ' Le but est d'attribuer une couleur par référence //  Stockage de la chaine
            i = i + 1
                    For n = i To [B65536].End(xlUp).Row ' Parcours de la colonne B à partir de la référence qui suit la référence trouvée
                        If Cells(i, 2).Value = reference Then
                            Worksheets(1).Range(Cells(i, 1), Cells(i, 16)).Interior.ColorIndex = m
                        End If
                    Next n
        End If
    Next i
Next k
Application.ScreenUpdating = True

End Sub
 

MaximeC

XLDnaute Junior
Re : Mettre en évidence des similitudes entre 2 colonnes Excel [VBA]

Bonjour,

Excusez moi de vous solliciter de nouveau, mais j'aimerai savoir si vous connaissez l'instruction qui me permetterai de sauvergarder mon document.

En fait je veux créer un bouton de commande pour "nettoyer" mon fichier (ça, c'est bon), le sauvegarder puis le fermer.

Il me semble d'après mes recherches que pour fermer il faut utiliser l'instruction : Application.Quit

Pouvez vous m'aider?

Voila mon code

Code:
Private Sub CommandButton7_Click()

'INITIALISATION
Dim i As Long
Dim j As Long

'PROGRAMME

' Supprime les "x" des cellules de la colonne Q: utilisé pour les filtres
For i = 13 To [Q65536].End(xlUp).Row
    Cells(i, 17).Value = ""
Next i
 
 ' Supprime les références de Barthe de la colonne R
For j = 13 To [R65536].End(xlUp).Row
    Cells(j, 18).Value = ""
Next j
 
 ' Réinitialise le format des cellules lorsqu'elles ont étaient trouvées après une recherche
Worksheets(1).Range(Cells(8, 1), Cells(20000, 50)).Interior.ColorIndex = 0
   
 ' Sauvegarde le fichier
 reference -documentaire - test.Save
 ' Ferme le fichier
Application.Quit

End Sub
 
Dernière édition:

leop93

XLDnaute Occasionnel
Re : Mettre en évidence des similitudes entre 2 colonnes Excel [VBA]

Bonjour Maxime

Voici:

Code:
'======================================================================
'Permet de sauvegarder et quitter le classeur.
'======================================================================
Sub saveAndQuit(Cancel As Boolean)
For Each w In Application.Workbooks
w.Save
Next w
ThisWorkbook.Close
End Sub
Pourquoi un ThisWorkbook.Close plutôt qu'un Application.Quit ou un ActiveWorkbook.Close ?

Car:

- Application.Quit: Excel se ferme complètement, donc tous les fichiers en cours aussi... Pas top...
- ActiveWorkBook.Close: Le classeur sur lequel on se trouve est quitté, si on ne travaille pas sur le tient mais un autre... Pas top...

Bon après-midi

Leop93
 

leop93

XLDnaute Occasionnel
Re : Mettre en évidence des similitudes entre 2 colonnes Excel [VBA]

Oui il suffit de faire clique droit sur ton bouton, affecter une macro et la sélectionner (saveAndQuit) dans la liste déroulante.

Tu aurais pu tester avant de demander quand même... Ou utiliser la fonction recherche du forum ou de google...
 

MaximeC

XLDnaute Junior
Re : Mettre en évidence des similitudes entre 2 colonnes Excel [VBA]

Bonjour,

Je le pensais jusqu'à ce que je demande à une personne de venir le tester.

Tout mes codes fonctionnent. :)

Cependant lorsque j'ai fait ma recherche et que j'ai trouvé des similitudes, j'ai ajouté un x (dans le code vba) en face de cette/ces ligne(s), afin de pouvoir faire un tri, et éviter à mes collègues, de devoir chercher les lignes coloriées dans les 7500 qui composent le document.

Mais, quand j'exécute ce tri, mes boutons de commande se déplace vers le haut de la feuille, et masque une partie des lignes triées...

Avez vous une solution à ce problème?
 

MaximeC

XLDnaute Junior
Re : Mettre en évidence des similitudes entre 2 colonnes Excel [VBA]

J'ai eu une idée ^^. Est-il possible de faire un code vba pour copier les lignes contenant un "x" dans la feuille 2, les unes derrière les autres?

Du genre

Code:
 j=1
For i = 13 to [Q65536].End(xlUp).Row
 If Cells(i,17).Value = "x" then
'Copier la plage de cellule(Ai:Pi) dans la feuille 2 sur la plage (Aj:Pj) 
j = j + 1
End for

' Et finir par une instruction nous dirigeant directiment en feuille 2
 
Dernière édition:

leop93

XLDnaute Occasionnel
Re : Mettre en évidence des similitudes entre 2 colonnes Excel [VBA]

Bonjour

J'utilise ceci, tu n'as plus qu'à l'adapater. Je t'ai déjà précisé où tu devais mettre le nom de tes feuilles. ;)

Code:
Sub CopierColler()
Dim i&
Z = 1
 LigneFeuille1 = 2
    Sheets("TA_FEUILLE_DORIGINE").Select
    
      For i = 0 To [I65536].End(xlUp).Row
        
        If Range("i2").Offset(i, 0).Value = "x" Then
            Range("i2").Offset(i, 0).EntireRow.Copy
            Sheets("TA_FEUILLE_DE_DESTINATION").Select
            Cells(LigneFeuille1, 1).EntireRow.Insert Shift:=xlDown
            Sheets("TA_FEUILLE_DORIGINE").Select
            Z = Z + 1
        End If
End Sub

Bon appétit et bon courage

Leop93
 
Dernière édition:

Discussions similaires

Réponses
10
Affichages
316

Statistiques des forums

Discussions
314 633
Messages
2 111 418
Membres
111 127
dernier inscrit
flygreg