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
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
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?
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
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