comportement inattendu target.value

G

Guest

Guest
Bonjour Tout le monde,

Pendant certains tests j'ai essayé ceci dans le module de code d'une feuille.

Sous excel 2002 (sp3)

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
    Cancel = True
    Target.Value = Abs(Not Target.Value)
 End If
End Sub

Et oh surprise, cela incrémente la cellule d'une unité chaque fois (pratique pour augmenter des dates d'un jour). Alors que sans le Abs() cela donne -1 ou 0 (normal)

Ma question, est-ce que cela ce produit également (l'incrémentation) sur d'autres versions d'excel?

Je vous remercie de ce renseignement qui pourrait m'être précieux.
(je m'en vais tester sous 2007)

A bientôt

ça marche sous 2007 et apparement c'est normal.
 
Dernière modification par un modérateur:

porcinet82

XLDnaute Barbatruc
Re : comportement inattendu target.value

Salut,

Idem pour Excel 2003 SP2.
Je préciserai meme que si la cellule est vide, sans le Abs, ca met -1 ou 0 alors que s'il y a une valeur dans la cellule, ca met soit la valeur, soit -(valeur+1).
Mais je ne comprend pas tres bien a quoi sert ce bout de code, alors peut etre que c'est normal...

@+
 
C

Compte Supprimé 979

Guest
Re : comportement inattendu target.value

Salut tout le monde ;)

Pour moi on peut lire l'instruction : Not Target.Value

Comme :
Rien n'est pas la valeur de la cellule

Réponse :
VRAI ou -1

Vous ne croyez pas :p
 

Lii

XLDnaute Impliqué
Re : comportement inattendu target.value

Bonjour,

c'est Not Target qui est en cause.
Le résultat est bizarre avec des nombres à virgule.
Voir :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not IsNumeric(Target.Value) Then Exit Sub
    Cancel = True
    MsgBox Target.Value & "   " & Not Target.Value
    MsgBox 6 & "   " & Not 6
    MsgBox -6 & "   " & Not -6
    MsgBox 4.8 & "   " & Not 4.8
 End Sub
 
G

Guest

Guest
Re : comportement inattendu target.value

Merci Porcinet, JcGl, Staple,

Apparement plusieurs tests dans la fenêtre d'exécution avec des not and or etc me font penser qu'il s'agit d'un truc que je n'ai jamais compris, les décalages de bit. Et surtout ne me demandez pas d'explication.:p

Porcinet, à l'origine c'était pour vérifier ce que j'utilise souvent en macro quand il s'agit inverser Vrai / Faux ou une propriété par exemple:

commandButton1.enabled=not commandButton1.enabled.

Dans les feuilles de calcul VRAI vaut 1 et Faux 0 en VB Truevaut -1 et False 0. Je voulais savoir ce que les valeurs VB appliquées aux feuilles donnaient.

On s'amuse comme on peu.

En tous cas Merci

Lii, tototiti Bruno Bonjour et merci de vos commentaires.
 
Dernière modification par un modérateur:
C

Compte Supprimé 979

Guest
Re : comportement inattendu target.value

Re,

Si c'est une question de FLAG (vrai/faux), il suffit alors
d'utiliser : Target.Value = Not Target.Value

Comme la valeur est récupérée par VBA donc on ne "joue" qu'avec -1 et 0

C'était juste histoire de mettre mon grain de sel :D
 
G

Guest

Guest
Re : comportement inattendu target.value

Hello Bruno,

C'est vrai, c'était de là que j'étais parti. Mais voulant voir ce que faisait un Abs(Not target.value), je me suis rendu compte de ce comportement.

Puisqu'il parait se reproduire dans toutes versions, je pourrais utiliser se comportement dans des macros.

A+++
 

Statistiques des forums

Discussions
312 424
Messages
2 088 286
Membres
103 808
dernier inscrit
qsfdhqzsfg