Bonjour à tous,
Débutant en VBA, je me trouve confronté à un problème que j'esseye de résoudre par moi-même depuis quelques jours maintenant, mais duquel je ne me dépatouille pas.
Je dois comparer les cellules de 2 feuilles excel 2003 formatées strictement de la même façon (même intitulé de colonne et données à la même place). Les cellules identiques seront colorées en vert, celles différentes laissées blanche ou mises en rouge.
Je sais résoudre ce genre de problème avec les fomules excel, mais je dois automatiser le processus, ainsi j'aimerai que la maccro marche pour n'importe quel problème de ce type, donc en gros qu'elle compare automatiquement toutes les cellules non vides de chaque feuilles une à une.
Les commentaires dans le codage sont les bienvenus afin de m'aider à comprendre ce que vous faites, après tout je suis la pour ça
Je me tiens a votre disposition pour apporter des précisions éventuelles à mon problème si je n'ai pas été assez explicite. Vous trouverez en pièce jointe un exemple de fichier que je pourrai avoir a traiter (j'ai simplifier a titre d'exemple, ceux que je dois comparer sont beaucoup plus lourd, d'où la nécéssité d'une maccro).
Je poste également une maccro que j'ai trouvée sur internet et qui fonctionne dans mon cas mais qui ne répond pas exactement a ce que l'on me demande, elle fonctionne par ligne et n'automatise pas le processus puisqu'il faut spécifié le nombre de colonnes.
Sub ColorerCommuns()
ncol = 10 ' nombre de colonnes
Application.ScreenUpdating = False
Set f1 = Sheets("Feuil1")
Set f2 = Sheets("Feuil2")
f1.Range("A1").CurrentRegion.Interior.ColorIndex = xlNone
f2.Range("A1").CurrentRegion.Interior.ColorIndex = xlNone
a = f1.Range("A1").CurrentRegion.Value
b = f2.Range("A1").CurrentRegion.Value
Set mondico1 = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(a)
temp = ""
For K = 1 To ncol: temp = temp & a(i, K): Next K
mondico1(temp) = i
Next i
For i = 1 To UBound(b)
temp = ""
For K = 1 To ncol: temp = temp & b(i, K): Next K
If mondico1.exists(temp) Then
f1.Cells(mondico1(temp), 1).Resize(, 11).Interior.ColorIndex = 4
f1.Cells(mondico1(temp), 10) = i 'mondico1(temp)
f2.Cells(i, 1).Resize(, 11).Interior.ColorIndex = 4
f2.Cells(i, 10) = mondico1(temp)
End If
Next
End Sub
Bonne journée a tous, et merci à ceux qui s'interesseront a mon problème !
Débutant en VBA, je me trouve confronté à un problème que j'esseye de résoudre par moi-même depuis quelques jours maintenant, mais duquel je ne me dépatouille pas.
Je dois comparer les cellules de 2 feuilles excel 2003 formatées strictement de la même façon (même intitulé de colonne et données à la même place). Les cellules identiques seront colorées en vert, celles différentes laissées blanche ou mises en rouge.
Je sais résoudre ce genre de problème avec les fomules excel, mais je dois automatiser le processus, ainsi j'aimerai que la maccro marche pour n'importe quel problème de ce type, donc en gros qu'elle compare automatiquement toutes les cellules non vides de chaque feuilles une à une.
Les commentaires dans le codage sont les bienvenus afin de m'aider à comprendre ce que vous faites, après tout je suis la pour ça
Je me tiens a votre disposition pour apporter des précisions éventuelles à mon problème si je n'ai pas été assez explicite. Vous trouverez en pièce jointe un exemple de fichier que je pourrai avoir a traiter (j'ai simplifier a titre d'exemple, ceux que je dois comparer sont beaucoup plus lourd, d'où la nécéssité d'une maccro).
Je poste également une maccro que j'ai trouvée sur internet et qui fonctionne dans mon cas mais qui ne répond pas exactement a ce que l'on me demande, elle fonctionne par ligne et n'automatise pas le processus puisqu'il faut spécifié le nombre de colonnes.
Sub ColorerCommuns()
ncol = 10 ' nombre de colonnes
Application.ScreenUpdating = False
Set f1 = Sheets("Feuil1")
Set f2 = Sheets("Feuil2")
f1.Range("A1").CurrentRegion.Interior.ColorIndex = xlNone
f2.Range("A1").CurrentRegion.Interior.ColorIndex = xlNone
a = f1.Range("A1").CurrentRegion.Value
b = f2.Range("A1").CurrentRegion.Value
Set mondico1 = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(a)
temp = ""
For K = 1 To ncol: temp = temp & a(i, K): Next K
mondico1(temp) = i
Next i
For i = 1 To UBound(b)
temp = ""
For K = 1 To ncol: temp = temp & b(i, K): Next K
If mondico1.exists(temp) Then
f1.Cells(mondico1(temp), 1).Resize(, 11).Interior.ColorIndex = 4
f1.Cells(mondico1(temp), 10) = i 'mondico1(temp)
f2.Cells(i, 1).Resize(, 11).Interior.ColorIndex = 4
f2.Cells(i, 10) = mondico1(temp)
End If
Next
End Sub
Bonne journée a tous, et merci à ceux qui s'interesseront a mon problème !
Dernière édition: