Variable range et comparasion d'égalité sur une plage différente

Bonjour,

je suis sur Excel 2003, je travaille sur un programme VBA pour un bon de commande.

Je cherche à créer une variable comportant une plage de cellule définie et de comparer avec d'autres plages sur une feuille différentes pour déterminer si elles sont égales ou pas.

au début du code je crée la variable "i":

Sheets("Feuil1").Select 
Dim i As Range 
Set i = Range("E10:I10") 'la plage de cellule définie' 

et à la fin du code je voudrais la comparer à d'autre plage qui se trouve sur la Feuil2

et savoir si il y a égalité. si il y en a une, une commande est ensuite effectuée.

Sheets("Feuil1").Select 
If Range("I10") = 0 Then 
Sheets("Feuil2").Select 
If i = Range("E26:I26") Then 
Range("E26:I26").Select 
Selection.ClearContents 
End If 
End If 

Ce code ne fonctionne pas, mais l'idée est pourtant simple est claire. Peu etre existe - il une manière différente de l'exprimer.

ou alors comment formuler une égalité de deux plage de cellule de deux feuilles différentes?

par exemple :

If Sheets("Feuil1")Range("E10:I10") = Sheets("Feuil2")Range("E26:I26") Then ....

mais cette expression ne fonctionne pas

Merci de votre aide !

Bonjour,

D'abord laisse-moi te dire que tu heurtes (involontairement sans doute) des habitudes multi-décennales et quasi-générales d'utilisation de quelques lettres de l'alphabet telles i, j, n... comme variables de type numérique Integer ou Long... (ce qui a probablement été généré par des habitudes d'écritures mathématiques antérieures...). Rien n'empêche des utilisations différentes mais ce ne sera jamais de nature à faciliter les échanges, car tu obliges à contrevenir à des réflexes spontanés d'interprétation, donc un effort mental supplémentaire...

Ensuite tu peux affecter les valeurs d'une plage à une autre plage, mais comparer globalement les valeurs de deux plages, tu auras une erreurs. Il te faut passer par une comparaison des valeurs de cellule par cellule respectivement de chacune des plages.

Et plutôt que de le faire en utilisant une variable Range, tu gagnerais à affecter les valeurs de chaque plage à comparer à une variable (non typée, soit de type Variant, qui accueillera un tableau) [l'initialisation s'écrit à peut près de la même façon (il faut omettre le Set car alors tu n'affecte pas une référence d'objet mais des valeurs).

Ce qui te permet d'opérer la comparaison membre à membre, au moyen d'une boucle, sur des tableaux, hors Excel, donc plus rapide...

Plus rapide une fois que tu auras fait disparaître tout Select de ton code (lesquels constituent le handicap parfait pour ralentir VBA ! sans contrepartie positive !)

Pour aller plus loin il faudrait en dire une plus et de façon plus précise sur tes intentions à l'issue de la comparaison.

Cordialement.

Rechercher des sujets similaires à "variable range comparasion egalite plage differente"