Comparaison trois colonnes VBA

Comparaison trois colonnes VBA - VB/VBA/VBS - Programmation

Marsh Posté le 13-04-2011 à 12:58:01    

Bonjour,
 
J'ai trois colonnes contenant des noms à comparer (plus de 3000). Je voudrais avoir un script qui grise les noms communs au trois colonnes et laisse les autres mais je n'y arrive pas.
Pouvez-vous m'aider ?
 
D'avance merci

Reply

Marsh Posté le 13-04-2011 à 12:58:01   

Reply

Marsh Posté le 13-04-2011 à 14:05:39    

Une triple boucle avec l'utilisation de variables tableau pour chaque colonne, ça devrait être le plus rapide ;)


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 13-04-2011 à 14:07:54    

Je ne suis pas du tout familiarisé avec cela ... du style ?

Reply

Marsh Posté le 13-04-2011 à 14:10:48    

Si tu connais exactement le nombre de lignes, une simple boucle for fera l'affaire.
Tu parcours toutes les lignes, et avec des if, tu testes si les valeurs des cellules sont égales.
Si le nombre de ligne est variable, tu peux utiliser une boucle while (tant que tu ne tombes pas sur une cellule vide...)
 
Après, pour griser les cellules, tu peux voir le code en enregistrant une macro...
 
Sinon, pour comparer des chaines de caractère tu peux utiliser l'opérateur LIKE, cela peut te permettre
d'omettre le fait que certaines lettres soient en majuscules ou non... cf le lien: http://www.siteduzero.com/tutoriel [...] #ss_part_3, partie "D'autres opérateurs logiques"

Reply

Marsh Posté le 13-04-2011 à 15:13:53    

Je ne vois pas comment faire ... désolé

Reply

Marsh Posté le 13-04-2011 à 15:57:34    

Sais-tu ce qu'est une boucle for? N'as tu même pas ne serait-ce qu'une idée de comment procéder?

Reply

Marsh Posté le 13-04-2011 à 16:01:13    

Vaguement mais sans plus ... si je savais comment faire je ne demanderai pas de l'aide ...

Reply

Marsh Posté le 13-04-2011 à 16:31:32    

Si tu ne connais pas ça je te conseil de revoir les bases du langage VBA... et le site du zero possède un très bon tutoriel pour  
ça:
 
http://www.siteduzero.com/tutoriel [...] art_200942

Reply

Marsh Posté le 17-04-2011 à 19:30:30    

avec des dicos ?
 
en ajoutant la bibliotheque "microsoft scripting runtime"
 
un truc du genre:
 
Sub fgdh()
 
Dim dico_Col1 As New Scripting.Dictionary, dico_Col2 As New Scripting.Dictionary, dico_Col3 As New Scripting.Dictionary
 
col1 = 1
col2 = 2
col3 = 3
 
'remplissage des 3 dicos
For i = 1 To Cells(65536, col1).End(xlUp).Row
    dico_Col1(CStr(Cells(i, col1).Value)) = 1
Next i
For i = 1 To Cells(65536, col2).End(xlUp).Row
    dico_Col2(CStr(Cells(i, col2).Value)) = 1
Next i
For i = 1 To Cells(65536, col3).End(xlUp).Row
    dico_Col3(CStr(Cells(i, col3).Value)) = 1
Next i
 
'test sur chaque cellule
For i = 1 To Cells(65536, col1).End(xlUp).Row
    If dico_Col1.Exists(CStr(Cells(i, col1).Value)) And dico_Col2.Exists(CStr(Cells(i, col1).Value)) And dico_Col3.Exists(CStr(Cells(i, col1).Value)) Then
        Cells(i, col1).Interior.Color = vbGrayText
    End If
Next i
For i = 1 To Cells(65536, col2).End(xlUp).Row
    If dico_Col1.Exists(CStr(Cells(i, col2).Value)) And dico_Col2.Exists(CStr(Cells(i, col2).Value)) And dico_Col3.Exists(CStr(Cells(i, col2).Value)) Then
        Cells(i, col2).Interior.Color = vbGrayText
    End If
Next i
For i = 1 To Cells(65536, col3).End(xlUp).Row
    If dico_Col1.Exists(CStr(Cells(i, col3).Value)) And dico_Col2.Exists(CStr(Cells(i, col3).Value)) And dico_Col3.Exists(CStr(Cells(i, col3).Value)) Then
        Cells(i, col3).Interior.Color = vbGrayText
    End If
Next i
 
End Sub

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed