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

VB.NET Discussion :

Récupération d'une valeur suivant différentes conditions [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Récupération d'une valeur suivant différentes conditions
    Bonjour tout le monde,

    Dans le cadre de mon stage en entreprise, je dois faire la chose suivante :

    Je suis dans un formulaire dans lequel il y a deux textBox contenant un numéro fixe et un numéro portable.
    Je souhaite lancer une impression dans laquelle je dois faire apparaitre un des deux numéros.
    Pour cela, mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            If (tbx_com_cli_fixe.Text <> "" And tbx_com_cli_gsm.Text = "") Then
                ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
     
            ElseIf (tbx_com_cli_gsm.Text <> "" And tbx_com_cli_fixe.Text = "") Then
                ev.Graphics.DrawString(tbx_com_cli_gsm.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
     
            ElseIf (tbx_com_cli_gsm.Text <> "" And tbx_com_cli_fixe.Text <> "") Then
                ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
     
            ElseIf (tbx_com_cli_gsm.Text = "" And tbx_com_cli_fixe.Text = "") Then
                ev.Graphics.DrawString("00000", special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
            End If
    Cela ne fonctionne pas, donc j'ai essayé d'afficher dans un label que j'ai placé sur le formulaire et là il reste vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
            Select Case tbx_com_cli_gsm.Text
                Case ""
                    Select Case tbx_com_cli_fixe.Text
                        Case ""
                            lbl_test_tel.Text = "00000"
                            ev.Graphics.DrawString("00000", special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
                        Case Is <> ""
                            lbl_test_tel.Text = tbx_com_cli_fixe.Text
                            ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
                    End Select
                Case Is <> ""
                    Select Case tbx_com_cli_fixe.Text
                        Case ""
                            lbl_test_tel.Text = tbx_com_cli_gsm.Text
                            ev.Graphics.DrawString(tbx_com_cli_gsm.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
                        Case Is <> ""
                            lbl_test_tel.Text = tbx_com_cli_fixe.Text
                            ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
                    End Select
            End Select
    Et l'impression ne fonctionne pas non plus.

    Voyez-vous une solution pour résoudre mon problème ?
    Toute réponse sera la bienvenue

    Merci à tous pour votre aide.

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Beaucoup de complications pour pas grand chose

    D'après ce que je vois tu as 3 cas distincts :
    • Le numéro de fixe est donné -> on l'imprime (même si on a aussi donné un portable)
    • Le fixe n'est pas donné, mais un numéro de portable l'est -> on imprime le portable
    • Ni le fixe, ni le portable sont donnés -> on imprime le 00000


    Et du coup suffit de juste écrire ceci en code, dans chaque cas on récupère le bon "truc" à imprimer et ensuite on l'imprime
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim textToPrint As String = "00000" ' la valeur par défaut si ni fixe ni portable n'ont été donnés
     
    If fixe.Text <> "" Then
        textToPrint = fixe.Text ' on récupère le numéro de fixe
    Else If gsm.Text <> "" Then
        textToPrint = gsm.Text ' on récupère le numéro de portable
    End If
    ' ici textToPrint contient la bonne valeur selon les cas cités
    ev.Graphics.DrawString(textToPrint, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Bonjour Sehnsucht,

    Je vous remercie de votre réponse.

    J'ai essayé votre suggestion dans le code mais je n'arrive toujours pas récupérer le portable dans le cas où il n'y a pas de fixe.

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Refait voir ton nouveau code !
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    J'utilise un label (lbl_test_tel) pour voir ce que je récupère.

    Voici mon nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    lbl_test_tel.Text = "00000" 'Valeur par défaut dans le label
     
            If tbx_com_cli_fixe.Text <> "" Then
                lbl_test_tel.Text = tbx_com_cli_fixe.Text ' on récupère le numéro de fixe
            ElseIf tbx_com_cli_gsm.Text <> "" Then
                lbl_test_tel.Text = tbx_com_cli_gsm.Text ' on récupère le numéro de portable
            End If
     
            ev.Graphics.DrawString(lbl_test_tel.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
    Mon code ne récupère que le fixe vide ou non puisque le label n'affiche pas "00000" non plus.

  6. #6
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Sais tu faire du pas à pas ?

    Ca t'aidera toute ta vie si tu développe... Et tu verras où ton code passe.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Je ne peux pas faire le pas à pas avec la flèche vert ("Démarrer le débogage") car mon projet est trop lourd.

    Auriez-vous une autre solution pour le faire ?

    Auriez-vous peut-être d'autres idées pour le code ?

    Je vous remercie.

  8. #8
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Estelle0611 Voir le message
    Je ne peux pas faire le pas à pas avec la flèche vert ("Démarrer le débogage") car mon projet est trop lourd.

    Auriez-vous une autre solution pour le faire ?

    Auriez-vous peut-être d'autres idées pour le code ?

    Je vous remercie.
    Voilà qqun qui ne semble pas vouloir y mettre du sien..... o_O

  9. #9
    Membre du Club
    Homme Profil pro
    Dessinateur vrd
    Inscrit en
    Janvier 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Dessinateur vrd
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2015
    Messages : 46
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Je viens de testé ton morceau de code de Sehnsucht et de plus très simple a comprendre.

    Je rentre une chaine de caractère dans ma tbx_com_cli_fixe, il m'affiche bien le fixe

    Si je rentre une chaine de caractere dans ma tbx_com_cli_fixe et ma tbx_com_cli_gsm, il m'affiche toujours bien le fixe

    Si je rentre uniquement une chaine de caractere dans ma tbx_com_cli_gsm, il m'affiche bien le numero de portable.

    Sa marche trés bien.

    Pour le label, es tu sur d'avoir mis dans les propriété de l'objet "00000" ??

  10. #10
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Je sais faire les conditions avec SI et CASE. J'ai déjà testé toutes les possibilités en changeant l'ordre des SI et des CASE et en ajoutant plus ou moins de conditions.
    Cela ne marche toujours pas ainsi que le pas à pas comme expliquer plus tôt (fichier trop lourd pour le faire fonctionner).

    Je vous remet, ci-dessous, mes différents tests :

    Celui-ci ne prend que le portable, si je commence avec le fixe, il ne prend que le fixe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            If tbx_com_cli_gsm.Text <> " " Then
                  ev.Graphics.DrawString(tbx_com_cli_gsm.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
            Else
                  ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
            End If
    Celui-ci ne récupère que le fixe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            If (tbx_com_cli_fixe.Text <> "" And tbx_com_cli_gsm.Text = "") Then
                ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
     
            ElseIf (tbx_com_cli_gsm.Text <> "" And tbx_com_cli_fixe.Text = "") Then
                ev.Graphics.DrawString(tbx_com_cli_gsm.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
     
            ElseIf (tbx_com_cli_gsm.Text <> "" And tbx_com_cli_fixe.Text <> "") Then
                ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
     
            ElseIf (tbx_com_cli_gsm.Text = "" And tbx_com_cli_fixe.Text = "") Then
                ev.Graphics.DrawString("00000", special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
            End If
    Pour celui-ci, j'ai créé un label sur le formulaire pour voir si on arrivait à récupérer le bon numéro.
    Et rien ne fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
            Select Case tbx_com_cli_gsm.Text
                Case ""
                    Select Case tbx_com_cli_fixe.Text
                        Case ""
                            lbl_test_tel.Text = "00000"
                            ev.Graphics.DrawString("00000", special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
                        Case Is <> ""
                            lbl_test_tel.Text = tbx_com_cli_fixe.Text
                            ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
                    End Select
                Case Is <> ""
                    Select Case tbx_com_cli_fixe.Text
                        Case ""
                            lbl_test_tel.Text = tbx_com_cli_gsm.Text
                            ev.Graphics.DrawString(tbx_com_cli_gsm.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
                        Case Is <> ""
                            lbl_test_tel.Text = tbx_com_cli_fixe.Text
                            ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
                    End Select
            End Select
    J'ai testé tous les différentes conditions et je n'arrive jamais à récupérer le fixe ou le gsm (s'il n'y a pas de fixe) ou "00000" (s'il n'y aucun des deux).

    => "00000" est un test pour voir si ça fonctionne dans le cas où il n'y a aucun numéro, il n'est pas utile pour les impressions.

    Je ne sais pas quoi faire d'autre . Auriez-vous d'autres solutions à me proposer ?

  11. #11
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Citation Envoyé par Estelle0611 Voir le message
    Je ne peux pas faire le pas à pas avec la flèche vert ("Démarrer le débogage") car mon projet est trop lourd.
    Je n'ai jamais vu ça encore...

    A la limite, ton problème de téléphone, c'est le dernier de tes soucis. Si tu pouvais debugger, tu aurais déjà corriger ton problème.

    C'était quoi le plan ? Tu vas corriger toutes tes erreurs en aveugle comme ça ?

    Ca va t'être trèèèèèèèèèèèèès trèèèèèèèèèèès long pour faire marcher un programme...

    Bon courage.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  12. #12
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Je vais voir si je trouve une solution ailleurs pour le pas à pas.

    Je vous tiendrais au courant si j'ai réussi à trouver.

  13. #13
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    J'ai enfin réussi à faire le pas à pas.

    Le problème vient du fait que le programme pense que le fixe et le gsm ne sont pas vide.
    Or, j'ai des exemples où je n'ai pas de fixe ou de gsm.

    Il prend donc tout le temps le fixe (même s'il est vide).

    Par exemple, dans le cas des If ... ElseIf ..., le programme s’arrête ici alors qu'il n'y a pas de fixe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ElseIf (tbx_com_cli_gsm.Text <> "" And tbx_com_cli_fixe.Text <> "") Then
            ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)

  14. #14
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Estelle0611 Voir le message
    J'ai enfin réussi à faire le pas à pas.

    Le problème vient du fait que le programme pense que le fixe et le gsm ne sont pas vide.
    Or, j'ai des exemples où je n'ai pas de fixe ou de gsm.

    Il prend donc tout le temps le fixe (même s'il est vide).

    Par exemple, dans le cas des If ... ElseIf ..., le programme s’arrête ici alors qu'il n'y a pas de fixe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ElseIf (tbx_com_cli_gsm.Text <> "" And tbx_com_cli_fixe.Text <> "") Then
            ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
    Je n'ai pas tout lu; mais quand VB affronte une condition AND (donc les deux "côtés" doivent être à True) et qu'il voit que le "côté gauche" est déjà FALSE, il ne se donne même pas la peine de regarder le côté droit et la comparaison retourne FALSE

    Les versions les plus récentes du Framework ont également l'opérateur AND ALSO qui force l'évaluation de toute l'expression avant de retourner True or False.

    Tu peux toujours essayer avec AND ALSO à la place de AND, ou de séparer tes comparaisons "doubles" en comparaisons "simples".

    C'est dans ces cas-là que l'on voit que le "ET" humain est plus tolérant envers l'ambigüité que le AND informatique.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  15. #15
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,
    Citation Envoyé par clementmarcotte Voir le message
    quand VB affronte une condition AND (donc les deux "côtés" doivent être à True) et qu'il voit que le "côté gauche" est déjà FALSE, il ne se donne même pas la peine de regarder le côté droit et la comparaison retourne FALSE

    Les versions les plus récentes du Framework ont également l'opérateur AND ALSO qui force l'évaluation de toute l'expression avant de retourner True or False.
    Non, c'est l'inverse, AndAlso est court-circuitant, And évalue les deux expressions .
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  16. #16
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par rv26t Voir le message
    Bonjour,

    Non, c'est l'inverse, AndAlso est court-circuitant, And évalue les deux expressions .

    Oup!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Honte à moi. Mille excuses.

    Merci pour la correction.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  17. #17
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,



    Je n'ai pas tout lu; mais quand VB affronte une condition AND (donc les deux "côtés" doivent être à True) et qu'il voit que le "côté gauche" est déjà FALSE, il ne se donne même pas la peine de regarder le côté droit et la comparaison retourne FALSE

    Les versions les plus récentes du Framework ont également l'opérateur AND ALSO qui force l'évaluation de toute l'expression avant de retourner True or False.

    Tu peux toujours essayer avec AND ALSO à la place de AND, ou de séparer tes comparaisons "doubles" en comparaisons "simples".

    C'est dans ces cas-là que l'on voit que le "ET" humain est plus tolérant envers l'ambigüité que le AND informatique.
    Rien de tel qu'un petit rappel sur la table de vérité :




  18. #18
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par wallace1 Voir le message
    Rien de tel qu'un petit rappel sur la table de vérité :



    Je suppose qu'avec 15 h 50 et 15 h 50, il faille appeler ça un envoi synchronisé
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  19. #19
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,



    Je suppose qu'avec 15 h 50 et 15 h 50, il faille appeler ça un envoi synchronisé
    Effectivement .... nos montres sont synchro .... ... (c'était juste pour ne pas dire directement ce qu'à évoqué rv26t plus haut.... )


    Cdlt.

  20. #20
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Citation Envoyé par Estelle0611 Voir le message
    J'ai enfin réussi à faire le pas à pas.

    Le problème vient du fait que le programme pense que le fixe et le gsm ne sont pas vide.
    Or, j'ai des exemples où je n'ai pas de fixe ou de gsm.

    Il prend donc tout le temps le fixe (même s'il est vide).

    Par exemple, dans le cas des If ... ElseIf ..., le programme s’arrête ici alors qu'il n'y a pas de fixe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ElseIf (tbx_com_cli_gsm.Text <> "" And tbx_com_cli_fixe.Text <> "") Then
            ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)

    Bonne chose d'avoir régler ce problème de pas-à-pas, on va pouvoir avancer.

    Comment sont remplis les textboxs ? elles sont lus de quelque part ?

    Car il y a un truc, d'emblée, qu'il faut régler c'est que parfois on crois qu'il y a une chaîne vide, et en fait il y a un espace ou plusieurs...
    C'est pour cela, que normalement il faut essayer d'effacer les espaces avant et après les textes qu'on récupères.

    Pour faire cela un Trim(de quelque chose) retourne "le quelque chose" sans les espaces autour:

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ElseIf (Trim(tbx_com_cli_gsm.Text) <> "" And Trim(tbx_com_cli_fixe.Text) <> "") Then
            ev.Graphics.DrawString(tbx_com_cli_fixe.Text, special, Brushes.Black, xpos + largeurcol + 238, ypos + 342)
    Prends un des algorithmes que tu préfères, appliques les Trim, teste au pas-à-pas et dis nous où ça se trompe, quelle ligne avec quelle données.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

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

Discussions similaires

  1. Verification de valeur suivant 4 conditions, boucle if pas une bonne idée ?!
    Par DJEcalcul dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 09/04/2015, 17h12
  2. Réponses: 6
    Dernier message: 24/05/2014, 12h38
  3. [XSL] récupération d'une valeur
    Par Mike35 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/12/2005, 15h58
  4. Réponses: 2
    Dernier message: 03/11/2005, 15h03
  5. récupération d'une valeur dans une variable
    Par jh0483 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/08/2005, 09h49

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