Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion: Aidez-moi à comprendre cette ligne [XL-2016]

  1. #41
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    6 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 6 894
    Points : 11 962
    Points
    11 962

    Par défaut

    Dans l'exemple cité If 6 Then, cela revient à écrire If 6=6 Then ce qui ne sert à rien.
    Pas vraiment
    La preuve :
    (If 0 n'est pas évalué à 0 = 0)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro). Ne m'en proposez donc pas.

    Rien n'est plus lamentablement vile qu'un joueur qui pipe les dés
    Celui qui prétend déterminer une cause fondamentale sur la base d'un effet n'a aucune chance d'avoir mon estime. S'il insiste, il a alors droit à mon total mépris.

  2. #42
    Expert éminent sénior

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2012
    Messages
    9 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2012
    Messages : 9 552
    Points : 16 229
    Points
    16 229
    Billets dans le blog
    1

    Par défaut

    je ne comprend pas ton histoire de torchons et des serviettes!

    true=-1 et false=0

    dans tous les langage et cette règle vient du langage C et par extension au C++ un if qualifie si le résulta d'une expression retourne 0 ou pas!

    maintenant je confirme que
    If 6 Then ne serre à rien mais c'est bien à l'origine de ce poste!

    Citation Envoyé par Daniel.C Voir le message
    Bonjour,

    Je suis tombé sur cette ligne que je ne comprends pas :

    Que représente le "6" ?

    La ligne se trouve dans une macro "Worksheet_Change".

    Merci d'avance.


  3. #43
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    13 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 13 292
    Points : 35 399
    Points
    35 399
    Billets dans le blog
    40

    Par défaut

    Écrire If X Then revient à écrire If X <> False Then avec X numérique

    Edit: Si If X Then revenait à dire If X = X Then, alors If 0 Then reviendrait à dire If 0 = 0 Then, ce qui n'est pas le cas.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #44
    Expert éminent sénior

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2012
    Messages
    9 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2012
    Messages : 9 552
    Points : 16 229
    Points
    16 229
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par Pierre Fauconnier Voir le message
    Écrire If X Then revient à écrire If X <> False Then avec X numérique
    exactement.

  5. #45
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    9 850
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 9 850
    Points : 22 052
    Points
    22 052

    Par défaut

    J'ai donc dis une connerie, je me suis moinssé moi-même

    Je viens de faire le test en C :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int main()
    {
        if (0)
        {
            printf("test\n");
        }
        printf("fin\n");
    }
    Le desassemblage montre l'absence du code dans la boucle if (pas d'affichage de "test", appel direct de la fonction puts pour l'affichage de "fin". Dans le cas ou je remplace 0 par 1, le code contenu dans la boucle est présent au désassemblage et il y a affichage de "test" à l'execution, mais aucun test n'est effectué, tout comme si je met la valeur 6 ou -1

    Le compilateur ne crée dans aucun des cas de test, celui-ci étant assez intelligent pour comprendre qu'un test est inutile. Dans cet exemple, on peut donc considérer qu'en cas de valeur 0 -> false que qu'en cas d'autre valeur -> true.

    D’où l’importance d'utiliser true ou false et pas leur soi-disant valeur numérique, car d'un langage à l'autre ça peut changer.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #46
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    13 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 13 292
    Points : 35 399
    Points
    35 399
    Billets dans le blog
    40

    Par défaut

    Merci Christophe pour cette "preuve par désassemblage" très intéressante. Ayant appris l'informatique en autodidacte et ne l'ayant formalisée que très récemment par un bachelor, c'est par des expérimentations, parfois laborieuses , que je suis arrivé à ces conclusions qui, au moment même, me laissaient perplexes, la réflexion dans mon petit cerveau qui m'a permis de comprendre l'économie de calcul du processeur n'étant venue que plus tard.

    Ton complément très instructif me plait donc beaucoup!
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #47
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    6 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 6 894
    Points : 11 962
    Points
    11 962

    Par défaut

    Pour revenir et coller à la question posée par le demandeur -->>

    Les expressions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If nombre_différent_de_0 ...
    sont d'habitude utilisées pour court-circuiter quelque chose (le plus souvent : une vérification).
    Elles sont souvent le fait d'un "intervenant" tiers désireux de "casser" une protection.

    La seule chose qui me "turlupine", est le "exit sub" alors décidé. A moins que ce :
    ait justement été mis juste avant un bloc d'instructions de protection et que ce bloc-là soit le dernier de la procédure et que cet "intervenant" n'ait pas voulu se priver de la faculté de remettre les choses en l'état en se contentant de mettre cette instruction en commentaires.
    Mais même ainsi : pourquoi ne s'est-t-il alors pas contenté d'un simple Exit sub ? -->> mystère ...

    J'aimerais vraiment voir la totalité du code mis dans la procédure concernée, à savoir :
    La ligne se trouve dans une macro "Worksheet_Change".
    Si code trop long, il suffira de ne montrer que la totalité du code situé entre cette instruction et "End Sub"


    EDIT : j'aimerais également connaître le nom exact de la procédure concernée et sa déclaration complète .

    EDIT 2 (je m'en veux de ne pas avoir pensé à cette hypothèse) : un "intervenant" tiers peut avoir remplacé par
    une ligne disant originellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if toto( .. paramètres éventuels ..) then
    où toto serait une fonction (probablement de vérification.protection) retournant une booléenne
    Il lui suffirait alors (soit manuellement, soit en intervenant par code sur le module de code de Woksheet) de remplacer à nouveau, à son gré, "6" par "toto( ....)" pour remettre les choses en leur état originel.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro). Ne m'en proposez donc pas.

    Rien n'est plus lamentablement vile qu'un joueur qui pipe les dés
    Celui qui prétend déterminer une cause fondamentale sur la base d'un effet n'a aucune chance d'avoir mon estime. S'il insiste, il a alors droit à mon total mépris.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [XL-2007] Aidez moi à comprendre cette formule
    Par AKAKO dans le forum Excel
    Réponses: 5
    Dernier message: 27/10/2014, 17h01
  2. aidez moi pour cette requete
    Par bassoum dans le forum MS SQL-Server
    Réponses: 5
    Dernier message: 12/05/2008, 10h51
  3. Réponses: 3
    Dernier message: 25/03/2008, 10h46
  4. AIdez moi à optimiser cette requete MySQL SVP
    Par petozak dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/09/2005, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo