IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Macros et VBA Excel Discussion :

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


Sujet :

Macros et VBA Excel

  1. #1
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut Aidez-moi à comprendre cette ligne
    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.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    @Trystan441 :
    J'ai reçu un courriel avec ta réponse mais je ne vois pas ta réponse sur le forum. Est-ce que tu l'as supprimée ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Points : 341
    Points
    341
    Par défaut
    Bonjour Daniel,

    Effectivement j'avais posté quelque chose mais je l'ai supprimé car je disais quelque chose de complètement évident !

    Le 6 correspond à la condition qui te sort de ta procédure.

    En revanche, j'ajouterai : cette ligne est elle intégré à une procedure ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    En revanche, j'ajouterai : cette ligne est elle intégré à une procedure ?
    Oui, tout à fait.

    Le 6 correspond à la condition qui te sort de ta procédure.
    Mais quelle condition ? C'est ça que je ne comprends pas.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Invité
    Invité(e)
    Par défaut
    en fait tout teste est true/false, true c'est toutes valeur <>0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If 123456789 Then Exit Sub

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Points : 341
    Points
    341
    Par défaut
    C'est justement là TOUT le mystère !

    Peux-tu mettre ta procédure dans la discussion ?

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    Une telle ligne de code ("If 6 Then Exit Sub") est aussi insensée que le serait celle-ci :
    dan une expression conditionnelle.
    Je doute fort (si vraiment écrite ainsi) qu'elle soit le fait d'un développeur.
    Elle ne pourrait, à la rigueur, avoir un sens que dans une instruction genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select case une_variable
       case 6
      ...
    End select
    Où as-tu pêché cette ligne de code ?
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Le code est assez long et fait référence à d'autres cellules ainsi qu'à la macro "Worksheet_SelectionChange". J'ai peur qu'il soit imbuvable, comme ça. je joins en attendant ta réponse le classeur. Je mettrais le code si tu ne souhaites pas ouvrir le classeur.
    Tu peux reproduire le problème en entrant une valeur numérique inférieure à 14 en P11 de la feuille "Finale".

    PatrickROZIER Petanque_VO.xlsm
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Je mettrais le code si tu ne souhaites pas ouvrir le classeur.
    Ah !
    Lis ma signature.
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    @unparia : Je n'avais pas lu ta réponse. Apparemment, nos posts se sont croisés. Le code provient d'un utilisateur pour lequel j'avais écrit une macro (dans une autre partie du classeur).
    Je doute fort (si vraiment écrite ainsi) qu'elle soit le fait d'un développeur.
    En tout cas, le classeur semble donner satisfaction à son propriétaire...

    Mais ta réponse me fait penser que, dans la macro "Worksheet_SelectionChange", j'ai des "Select Case" qui vont déclencher des "Worksheet_Change"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
         Select Case Range("B15")      'dossard
                Case Is = ""
                      Range("D15") = ""
                Case Is = 13
                      Range("D15") = Range("B13")
                Case Else
                      Range("D15") = Range("B17")
          End Select
    Est-ce qu'il serait alors licite d'écrire

    A ma connaissance, non ?

    Est-ce que tu souhaites que je publie le code ?

    @dysorthographie : Dans ce cas, le débranchement est systématique ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  11. #11
    Invité
    Invité(e)
    Par défaut
    @dysorthographie : Dans ce cas, le débranchement est systématique ?
    Fais le test avec n'importe quel valeur !

  12. #12
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Oui, tu as raison.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  13. #13
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    en fait tout teste est true/false, true c'est toutes valeur <>0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If 123456789 Then Exit Sub
    Ton assertion est fausse. True, c'est True et pas "toutes valeurs <> 0"... Il serait plus juste de dire que toute valeur <> 0 n'est pas False.

    En fait, IF teste que c'est faux et pas que c'est vrai, et le branchement se fait si ce n'est pas faux et pas si c'est vrai. Mais tout ce qui n'est pas faux n'est pas forcément vrai, et ça peut amener son lot de petits tracas.

    Teste le code suivant et tu verras bien que 123456789 n'est pas égal à True

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Test()
    If 123456789 Then MsgBox "Yeah" Else MsgBox "Hé me***"
    If 123456789 = True Then MsgBox "Yeah" Else MsgBox "Hé me***"
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Invité
    Invité(e)
    Par défaut
    J'ai dit que toutes valeurs différent de zéro est true!
    Si tu veux faire un teste avec condition respecte ce que j'ai dit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub Test()
    If 123456789 Then MsgBox "Yeah" Else MsgBox "Hé me***"
    If 123456789 <>0 Then MsgBox "Yeah" Else MsgBox "Hé me***"
    End Sub

  15. #15
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    J'ai dit que toutes valeurs différent de zéro est true![...]

    Et tu as tort, comme je l'ai dit tout à l'heure et comme les deux lignes de code que j'ai données le montrent. Celles que tu viens de donner testent que ce n'est pas faux, et pas que c'est vrai.

    Si ce que tu dis était correct, les deux lignes afficheraient le même message, mon second test renverrait "Yeah" et pas "Hé me***". CQFD (et j'ai parfaitement respecté ce que tu as dit!). Prends un peu de recul svp. Tes réponses dans l'énervement ne sont pas productives.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  16. #16
    Invité
    Invité(e)
    Par défaut
    ce que j'ai dit ce vérifie!
    Un teste ce vérifie true/false TOUTES valeur <>0 s'évalue à true!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Test()
    If 25 Then MsgBox "Yeah" Else MsgBox "Hé me***"
    If 25 <>0 Then MsgBox "Yeah" Else MsgBox "Hé me***"
    End Sub

  17. #17
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Quand tu testes If 25 <>0 Then MsgBox "Yeah" Else MsgBox "Hé me***", tu testes que 25 N'EST PAS FAUX et pas que 25 EST VRAI!!

    Si tu veux tester que 25 est vrai, tu dois tester 25 = true.

    Ce n'est quand même pas compliqué à comprendre, pour un membre expert confirmé senior ingénieur en développement de logiciels, si?

    Et donc, tu as tort lorsque tu dis que tout ce qui n'est pas faux est vrai, comme dans ce message repris ci-dessous! Ce que affirmes là n'est pas correct. Point barre!
    Citation Envoyé par dysorthographie Voir le message
    [...]true c'est toutes valeur <>0[...]


    Citation Envoyé par dysorthographie Voir le message
    [...]
    Un teste ce vérifie true/false TOUTES valeur <>0 s'évalue à true![...]
    Ca n'évalue pas à VRAI, ça évalue à PAS FAUX, ce qui n'est pas la même chose et cela peut conduire à des déductions erronées dans la suite du code, même si je concède que dans beaucoup de cas, ça revient au même dans l'exécution du code. Mais un IF (comme un SI en Excel) ne teste pas TRUE, il teste NOT FALSE, et toute valeur qui n'est pas FALSE est forcément NOT FALSE, mais pas forcément TRUE. Si tu veux tester qu'une valeur est vraiment TRUE, tu dois tester valeur = true.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  18. #18
    Invité
    Invité(e)
    Par défaut
    Un teste ce vérifie true/false TOUTES valeur <>0 s'évalue à true!
    Un teste ce vérifie true/false TOUTES valeur <>0 s'évalue à true!
    Un teste ce vérifie true/false TOUTES valeur <>0 s'évalue à true!
    Tu as le droits de torturer mes propos mais a aucun moment j'ai dit que 25 ou toutes autre valeurs était true mais bien <>0

  19. #19
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Je ne torture rien de ce que tu dis. Tu as dit exactement
    Citation Envoyé par dysorthographie Voir le message
    [...]true c'est toutes valeur <>0[...]
    EDIT (pour éviter les méprises)
    Ca Ce que tu dis veut donc bien dire que tout ce qui n'est pas 0 est TRUE, ou alors on ne parle pas la même langue. Je ne déforme donc pas tes propos en disant cela. Et lorsque tu dis true c'est toutes valeur <>0, tu dis une erreur, comme je te l'ai montré dans mes lignes de code qui traduisent exactement ce que tu dis. Il faut juste l'accepter.

    Là dessus, j'arrête. Tu me fatigues vraiment beaucoup!
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #20
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    If...Then...Else, instruction
    .....
    Syntaxe

    If condition Then [statements] [Else elsestatements]


    condition Une expression numérique ou expression de chaîne qui prend la valeur True ou False. Si l'argument condition est Null, il est considéré comme False.
    Une expression de la forme TypeOf objectname Is objecttype. Objectname est une référence à un objet et objecttype est un type d'objet valide. L'expression a pour valeur True si objectname est du type d'objet indiqué par objecttype ; sinon elle a pour valeur False.
    tout le reste n'est que distinguo à faire entre "prendre la valeur de " et "être".
    Amitiés
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

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

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