Figer les valeurs d'un range dans une variable

pacoako

XLDnaute Occasionnel
Bonjour à tous,

J'essaie de figer les valeurs d'un range de cellule dans une variable range, mais je m'aperçoit que les valeurs de ma variable change lorsque je change le contenue des cellules en question... y-a-t'il un moyen de figer ma variable pour éviter que les données dans MonRange.Value() ne change lorsque je change le contenu des cellules auxquelles ma variable fait référence?

Voici un exemple :

Code:
'La valeur de la cellule A1 est 2 avant l'exécution des sub...
Dim MonRange as range
Private Sub Test

Set MonRange = feuil1.range("A1")

End Sub
'Entre les 2 exécution je change la valeur de A1 pour 3...
Private Sub Message

msgbox MonRange.value

End Sub
'La msgbox affiche donc 3... commen faire pour qu'elle garde la valeur 2 peu importe la valeur de la cellule..je voudrais pouvoir conserver toute les propriétés du range.. donc ne pas avoir à affecter la valeur de la cellule à une variable integer.. exemple : x = range("A1").value
Merci beaucoup pour votre aide!

Bonne journée!
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Figer les valeurs d'un range dans une variable

Bonsoir Pacoako, Bonsoir le Forum

Vite fait (très vite fait avant d'être enfermé au Bureau)

Tout dépend du déclenchement de la Sub, en fait il suffit de travailler comme suit (ou dans le genre) dans le Private Module de la Feuille en Question

Code:
Option Explicit
 
Private MyValue As Integer
 
[COLOR=darkgreen]'DETECTION D'Evènement et Enregistrement de la Variable[/COLOR]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MyValue = Range("A1")
End Sub

[COLOR=darkgreen]'ACTION
[/COLOR]Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "A1" Then Exit Sub
MsgBox "Valeur Précédente " & MyValue
End Sub


Bonne soirée

@+Thierry
 

pacoako

XLDnaute Occasionnel
Re : Figer les valeurs d'un range dans une variable

Salut Thierry, salut le forum,

Donc si je comprends bien, je n'ai pas le choix d'affecter les valeurs des cellules de mon range à un tableau sinon nécessairement les valeurs de ma variable range changerons si je modifie le contenu des cellules auxquelles la variable fait référence?

Merci pour ton aide!!
 

job75

XLDnaute Barbatruc
Re : Figer les valeurs d'un range dans une variable

Bonsoir pacoako, Thierry,

Vous pouvez stocker dans un nom défini dans le classeur la matrice des valeurs par la macro Fige que vous déclanchez quand vous voulez (à l'ouverture, par un bouton etc).

La macro Restitue permet d'analyser cette matrice, quand vous voulez :

Code:
Sub Fige()
Dim plage As Range
Set plage = Range("A1:C10")
ActiveWorkbook.Names.Add Name:="MatriceValeur", RefersTo:=plage.Value
End Sub

Sub Restitue()
Dim tablo, v1
tablo = [MatriceValeur]
v1 = tablo(2, 3)
MsgBox v1 'test
End Sub

A+
 

job75

XLDnaute Barbatruc
Re : Figer les valeurs d'un range dans une variable

Re,

Mon post précédent était pour le cas où l'on veut mémoriser un tableau sur plusieurs cessions Excel.

Si l'on veut mémoriser seulement sur la cession en cours, Thierry a donné la manière de faire.

Une solution du même type pour que vous compreniez bien :

Code:
Dim tablo 'mémorise la variable

Sub Fige()
tablo = Range("A1:C10")
End Sub

Sub Restitue()
Dim v1
v1 = tablo(2, 3)
MsgBox v1 'test
End Sub

Pour définir tablo on n'utilise pas Set...

A+
 

pacoako

XLDnaute Occasionnel
Re : Figer les valeurs d'un range dans une variable

Ahh ça y est!

Merci encore pour les astuces =)

Code:
Dim ValBefore() As Variant
Dim x as integer

ReDim ValBefore(1 To Target.Areas.Count)
For x = 1 To Target.Areas.Count
ValBefore(x) = Target.Areas(x).Value
Next x
 

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 774
Membres
103 662
dernier inscrit
rterterert