Vba access 2003 : not true ne vaut plus false !!!

0/5 (12 avis)

Snippet vu 10 691 fois - Téléchargée 30 fois

Contenu du snippet

Bong sang, mais c'est pas vrai ! mais si !, Not True reste vrai maintenant ! MS a du redéfinir la valeur interne de True de telle sorte que Not True ne soit plus égal à 0 (qui est la valeur interne de False) ou alors je me demande si ce n'est pas plutôt un problème de traduction en français de True en Vrai, toujours est-il que Not True ne vaut plus toujours False ! En fait, selon la version du moteur VBA, la version d'Access et la version du projet Access qui est ouverte, tantôt le test fonctionne normalement (comme pour les précédentes versions d'Office et de VBA), et tantôt il reste toujours vrai : il n'est donc plus possible de prévoir quand le code va fonctionner ou pas. Du coup toutes les lignes de code telle que If Not MonBooleen Then ... doivent être réécrite en If MonBooleen = False Then ... car Not MonBooleen peut être évalué à vrai quelque soit la valeur de MonBooleen !
Heureusement, un ami m'a donné une idée simple, qui ressemble un peu à la technique de l'injection SQL : il suffit de remplacer toutes les occurrences de [Not] par [False =] mais seulement pour les booléens (de toute façon, on se demande bien qui peut utiliser Not avec autre chose que des booléens, à savoir pour inverser les bits d'un entier !). Sacré farceur ce Bill !

Source / Exemple :


Public Sub TestNotTrue()

    Dim bMonBooleen As Boolean
    bMonBooleen = True
    If Not bMonBooleen Then
        MsgBox "Not True ne vaut pas False !!!"
    Else
        MsgBox "Ok, Not True vaut bien False."
    End If

End Sub

Conclusion :


C'est pas une blague !

A voir également

Ajouter un commentaire Commentaires
C'est exactement la même chose.
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
22 janv. 2008 à 09:42
NON, en C/C++ différent de 0 n'est pas considéré comme True ni comme rien du tout, c'est 0 OU NON 0 mais rien de plus.
cs_Patrice99
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

22 janv. 2008 à 08:27
Oui mais dans Access, le problème est que la variable était bien un booléen, alors que si tu fais un test avec un int, ce n'est pas la même chose.
NeerLess
Messages postés
1
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
22 janvier 2008

22 janv. 2008 à 01:02
Salut à tous !

Du point je code aussi en C/C++, je porte à ta connaissance que ce genre d'interprétation existe !!!

En effet, en C/C++, toute valeur différente de 0 (en binaire) est consdérée comme un True, ceci est du à un test des drapeaux de ALU au coeur du CPU (le drapeau Z [Zero] précisement). Le code source qui suit marche avec Dev-C++ :

#include<stdio.h>

int main()
{
clrscr();

int r=1;

if (r) printf("R est vrai. R=%d",r);
r=(!r); // l'exclamation est pour le Not
if (r) printf("R est vrai. R=%d",r);

getch();
}

J'éspère avoir été utile, et à la prochaine.
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
26 juil. 2004 à 17:11
Le vba.net est en bonne phase d'avancement. Il y aura un peu de travail de migration mais au moins ça harmonisera avec le vb actuel qui est entierement devenu .net, en avant avec le framework.
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.