Help pb macro

  • Initiateur de la discussion bipbip
  • Date de début
B

bipbip

Guest
Bonjour à tous,

j'ai besoin d'aide pour affiner ma macro.
Qqs explications: je veux comparer les valeurs des celulles de 2 tableaux excel qui se trouvent sur 2 feuilles.

Voici ma macro:

Sub ComparaisonTableau()

Dim RG1 As Range, RG2 As Range
Dim Tblo1, Tblo2, Rg3 As Range
Dim A As Long, B As Integer, C As Long, D As Integer

Set RG1 = Sheets('010305').Range('E3:p27') 'Tabeau 1
Set RG2 = Sheets('020305').Range('E3:p27') 'Tableau 2
Set Rg3 = Sheets('Comparaison').Range('E3') 'Tableau des résultats

If RG1.Rows.Count <> RG2.Rows.Count Then
MsgBox 'Le tableau n'a pas le même nombre de lignes'
Exit Sub
End If
If RG1.Columns.Count <> RG2.Columns.Count Then
MsgBox 'Le tableau n'a pas le même nombre de colonnes'
Exit Sub
End If

Tblo1 = RG1: Tblo2 = RG2: D = 1
Application.ScreenUpdating = False
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If Tblo1(A, B) <> Tblo2(A, B) Then
C = C + 1
Rg3(C, D) = RG1(A, B).Address(0, 0)
Rg3(C, D).Offset(, 1) = Tblo1(A, B)
Rg3(C, D).Offset(, 2) = RG2(A, B).Address(0, 0)
Rg3(C, D).Offset(, 3) = Tblo2(A, B)
End If
Next
Next

Set RG1 = Nothing: Set RG2 = Nothing: Set Rg3 = Nothing
Erase Tblo1: Erase Tblo2
End Sub

Mon soucis est le suivant:

Je souhaiterais pouvoir dans un premier temps apporter qqs couleur au résultats trouvé c'est à dire si la valeur du tableau 2 est supérieur à celle du tableau 1 le résultat s'affiche en vert si elle est inférieur en rouge.
Ensuite niveau présentation mon résultat n'est pas celui que j'espérais en effet je souhaite obtenir un tableau identique au deux autres avec UNIQUEMENT les valeurs qui changent sous un autre code couleur les autres ne serait alors pas modifié.
Or ce que j'obtient est du genre 'n°cellule(F6)puis la valeur du tableau 1 (10)et la valeur du tableau 2(11)'.uniquement pour les valeurs qui ont changées(là c OK), mais j'ai pas les valeurs ichangées et en plus le résultat ne s'affiche même pas dans les bonnes cellules.

Bref à l'aide SVP

[file name=Semaine10.zip size=32423]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Semaine10.zip[/file] [file name=Semaine10.zip size=32423]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Semaine10.zip[/file]
 

Pièces jointes

  • Semaine10.zip
    31.7 KB · Affichages: 11

Jam

XLDnaute Accro
Salut bipbip,

Pas le temps de répondre complètement à ta question mais juste 2/3 p'tites astuces à te soumettre:

1) Pour les codes couleurs, tu peux utiliser le formatage conditionnel.
2) D'abord félicitation pour l'utilisation de tableaux au lieu d'adresser les cellules (c'est ma marotte). Par contre tu peux pousser le truc jusqu'au bout: au lieu de passer le résultat directement dans les cellules, tu modifies le tblo puis quand le traitement est terminé tu colles le résultat. Ceci pourrait t'aider à valider ton dernier point.
3) La gestion des Array étant parfois compliqué, je te conseille d'avoir recours au mode pas à pas (F8) et de regarder l'état de tes variables/tableaux afin de t'assurer du bon déroulement de ta procédure.
4) Le truc très chiant avec les Tableaux se sont les indices de début (0 : 1). Si tu veux te simplifier la vie, autant mettre Option Base 1 en entête de module.

HTH
 

WILFRIED

XLDnaute Impliqué
Salut Bipbip, MrExcel,

Pour la couleur tu peut aussi rajouter un test et appliqer :

if valuer1>valeur2 then
activecell.font.colorindex=rgb(255,0,0) 'rouge
elseif valeur1<2 then
activecell.font.colorindex=rgb(0,255,0) 'vert
end if

Ne comprennand pas trés bien ton système de variable tableau je ne peut pas te dire ou placer ce test. Si tu à un peu de temps et de patience, je suis preneur pour des explications.

A+ et merci

:)
 

Discussions similaires

Réponses
1
Affichages
270
Réponses
12
Affichages
295
Réponses
1
Affichages
199

Statistiques des forums

Discussions
312 552
Messages
2 089 525
Membres
104 203
dernier inscrit
mika9213