HELP pour comparaison de cellules VBA

HELP pour comparaison de cellules VBA - VB/VBA/VBS - Programmation

Marsh Posté le 29-07-2014 à 16:19:16    

Bonjour à tous,
 
débutant en VBA j'ai un petit souci.
 
L'objectif de la macro est de comparer 2 plages de données dans 2 feuilles de calcul d'un même classeur. Si les 2 cellules sont égales, alors je veux faire apparaître "#N/A" dans la seconde feuille.
 
Pour ce faire je pense avoir trouvé comment faire pour une colonne, mais je n'arrive pas à passer à la colonne suivante.
 

Citation :


Sub Macro1()  
 
Dim i As Integer  
i = 5  
While i < 200
 
If Worksheets("Feuil1" ).Range("G" + CStr(i)).Value <> Worksheets("Feuil2" ).Range("G" + CStr(i)).Value Then  
 
Worksheets("Feuil2" ).Activate  
 
Worksheets("Feuil2" ).Range("G" + CStr(i)).Value="#N/A"  
 
End If  
 
i = i + 1  
 
Wend  
 
End Sub  


 
Grâce à cela, ça compare la colonne G et le #N/A apparaît si les 2 valeurs sont identiques.
 
Ma question est donc : comment compléter cela pour faire ce procédé de la colonne G à la colonne S ? ou plus simplement sur toute la plage [G5:S200]
 
Merci à vous pour votre aide !


Message édité par sbaq le 29-07-2014 à 16:20:15
Reply

Marsh Posté le 29-07-2014 à 16:19:16   

Reply

Marsh Posté le 29-07-2014 à 20:46:25    

Bonjour
 
Tu demandes : Si les 2 cellules sont égales, alors je veux faire apparaître "#N/A" dans la seconde feuille
 
Dans ton code tu mets : <> (c'est-à-dire différentes) et tu affirmes : Grâce à cela, ça compare la colonne G et le #N/A apparaît si les 2 valeurs sont identiques.  :ouch: :pt1cable:  :ouch:  
 
Voici donc 2 codes :
Celui-ci pour écrire #N/A lorsque les cellules sont identiques :

Code :
  1. Sub x()
  2. Dim r As Range
  3. Dim c As Range
  4. Dim o As Variant
  5. Dim d As Variant
  6.   Set r = Worksheets("Feuil1" ).Range("G5:S200" )
  7.   With Worksheets("Feuil2" )
  8.     For Each c In r.Cells
  9.       o = c.Value
  10.       d = .Range(c.Address).Value
  11.       If VarType(o) = VarType(d) Then
  12.         If o = d Then .Range(c.Address).Value = "#N/A"
  13.       End If
  14.     Next c
  15.   End With
  16. End Sub


Et celui-ci pour écrire #N/A lorsque les cellules sont différentes:

Code :
  1. Sub y()
  2. Dim r As Range
  3. Dim c As Range
  4. Dim o As Variant
  5. Dim d As Variant
  6.   Set r = Worksheets("Feuil1" ).Range("G5:S200" )
  7.   With Worksheets("Feuil2" )
  8.     For Each c In r.Cells
  9.       o = c.Value
  10.       d = .Range(c.Address).Value
  11.       If VarType(o) = VarType(d) Then
  12.         If o <> d Then .Range(c.Address).Value = "#N/A"
  13.       Else
  14.         .Range(c.Address).Value = "#N/A"
  15.       End If
  16.     Next c
  17.   End With
  18. End Sub


Message édité par patrice33740 le 29-07-2014 à 20:53:57
Reply

Marsh Posté le 30-07-2014 à 09:30:38    

Au temps pour moi j'avais bien écrit n'importe quoi... je confirme, elles doivent être identiques, je m'étais trompé sur le signe <>, il fallait bien un égal, ne me demande pas pourquoi j'en suis arrivé là, je me le demande encore...
 
En tout cas un énorme merci pour ta (tes) réponse(s), ça m'aide énormément :)

Reply

Sujets relatifs:

Leave a Replay

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