Comparer deux tableaux ds 2 feuilles

  • Initiateur de la discussion Initiateur de la discussion Sara
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Sara

Guest
Bonjour à tous,

Je souhaite comparer un couple de colonne dans une feuille 1 avec un autre couple de colonnes dans la feulle 2. Si par exemple un couple de valeur de la feuille 1 (C21,D21) est le même que la feuille 2 (C16,D16), alors on mis en jaune le fond de la cellule résultat de la feuille 1. Exemple fichier ci-dessous.
Je voudrais savoir s'il vous plait s'il faut déclarer un tableau (avec deux dimensions) et comment dans VBA et surtout comment jongler entre deux feuilles ?
Merci beaucoup

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

Pièces jointes

Bonjour sara, le forum

une proposition en pièce jointe.

Sub Bouton1_QuandClic()
Dim tablo1 As Variant
Dim tablo2 As Variant
Dim premiereligne As Byte
Dim i As Byte, j As Byte
'ici on stocke le numero de la premiere lignes des données de la feuille 1
premiereligne = 15
'sur la feuille1 les données commencent ligne 16, mais on s'arrete à 15
'pour tenir compte du option base 1

'creation des 2 tableaux
tablo1 = Sheets('feuil1').Range('c16:d29')
'feuille1
tablo2 = Sheets('feuil2').Range('c10:d23')
'feuille2

'ensuite on boucle sur chaque ligne du tablo1
For i = 1 To UBound(tablo1)
   
'puis sur chaque ligne du tablo2
   
For j = 1 To UBound(tablo2)
       
'si la colonne 1 du tablo 1 =la colonne 1 du tablo 2, alors
       
If tablo1(i, 1) = tablo2(j, 1) Then
           
'si la colonne 2 du tablo 1 =la colonne 2 du tablo 2, alors
           
If tablo1(i, 2) = tablo2(j, 2) Then
           
'on colore la plage de la feuille 1
               
With Sheets('feuil1')
                    .Range(.Cells(premiereligne + i, 3), .Cells(premiereligne + i, 4)).Interior.ColorIndex = 6
               
End With
           
End If
       
End If
   
Next j
Next i
End Sub

salut

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

Pièces jointes

Bonjour Sara, Hervé, Wilfried, bonjour le forum,

Même combat qu'Hervé (trop rapide pour moi...) mais sans les tableaux :


Option Explicit 'oblige à déclarer toutes les variables

Sub Macro1()
Dim O As Worksheet, C As Worksheet 'déclare les variables O (Origine) et C (Cible)
Dim Po As Range, Pc As Range 'déclare les varoable Po (Plage origine) et Pc (Plage cible)
Dim celO As Range, CelC As Range 'déclare les variables CelO (Cellule Origine) et CelC (Cellule Cible)

Set O = Sheets('Feuil1') 'définit la varaible O
Set C = Sheets('Feuil2') 'définit la variable C
Set Po = O.Range('C16:C29') 'définit la variable Po
Set Pc = C.Range('C10:C23') 'définit la variable Pc

For Each celO In Po 'boucle sur ttoutes les cellule de la Plage origine
For Each CelC In Pc 'boucle sur toutes les cellule de la Plage cible
'condition : si les cellules sont identiques et que les cellulues à droite le sont aussi
If celO.Value = CelC.Value And celO.Offset(0, 1).Value = CelC.Offset(0, 1).Value Then
'la deuxième cellule à droite se colore de jaune
celO.Offset(0, 2).Interior.ColorIndex = 6
Exit For 'sor de la boucle (CelC)
End If 'fin de la condition
Next CelC 'prochaine cellule de la Plage cible
Next celO 'prochaine cellule de la Plage Origine
End Sub
 
RE-

Voici ma propostion :


Option Explicit

Sub mise_forme_sara()
'déclaration des variables

Dim plage_source_Col1 As Range 'plage d'entrée
Dim plage_compar_col1 As Range 'plage de comparaison

Dim ws_source As Worksheet
Dim ws_trav As Worksheet
Dim m_cell_src As Range
Dim m_cell_comp As Range

Set ws_source = ActiveSheet
Set ws_trav = Worksheets('Feuil2')

ws_source.Select
Set plage_source_Col1 = Range('C16', Range('C65536').End(xlUp))
ws_trav.Select
Set plage_compar_col1 = Range('C10', Range('C65536').End(xlUp))
ws_source.Select
For Each m_cell_src In plage_source_Col1
ws_trav.Select
For Each m_cell_comp In plage_compar_col1
If m_cell_src.Value = m_cell_comp.Value And m_cell_comp.Offset(0, 1).Value = m_cell_src.Offset(0, 1).Value Then
m_cell_comp.Offset(0, 2).Interior.ColorIndex = 6
Exit For
End If
Next
ws_source.Select
Next
End Sub

J'espére que cela t'aidera,

A+


:angry: :angry: décidément j'ai du mal aujourd'hui avec le rafraichissement ..... Salut Robert....

Message édité par: wilfried, à: 13/09/2005 17:40
 
Merci encore une fois les mecs ! ça marche à merveille mais j'ai un petit souci, je voudrais plutot comparer par couple de celule via une boucle 'FOR' et non pas identifier toute la plage et après faire la comparaison...

Sara
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
658
Retour