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

WinDev Discussion :

Répétition de morceaux de code


Sujet :

WinDev

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 67
    Points : 47
    Points
    47
    Par défaut Répétition de morceaux de code
    Bonjour,

    J'ai créé une procédure.
    Dans cette (longue) procédure, j'ai des morceaux de code qui reviennent régulièrement dont voici un exemple :
    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
                            CAS 1 : nLigneXLS = 22 //01
    			CAS 2 : nLigneXLS = 20 //02
    			CAS 3 : nLigneXLS = 37 //03
    			CAS 4 : nLigneXLS = 8 //04
    			CAS 6 : nLigneXLS = 59 //07
    			CAS 7 : nLigneXLS = 18 //08
    			CAS 8 : nLigneXLS = 39 //09
    			CAS 9 : nLigneXLS = 6 //10
    			CAS 10 : nLigneXLS = 24 //11	
    			CAS 11 : nLigneXLS = 11 //12
    			CAS 12 : nLigneXLS = 13 //13
    			CAS 13 : nLigneXLS = 56 //14
    			CAS 14 : nLigneXLS = 15 //15
    			CAS 15 : nLigneXLS = 41 //16
    			CAS 16 : nLigneXLS = 43 //17
    			CAS 17 : nLigneXLS = 28 //19
    			CAS 18 : nLigneXLS = 26 //20
    			CAS 19 : nLigneXLS = 47 //21
    			CAS 20 : nLigneXLS = 45 //22
    			CAS 21 : nLigneXLS = 54 //23
    			CAS 22 : nLigneXLS = 30 //24
    Quand je sélectionne cela pour en faire une procédure il me dit que "Le bloc de code sélectionné n'a pas une syntaxe correcte pour créer une procédure autonome"
    Je ne peux pas prendre le SELON qui va avec les CAS car le SELON n'est pas toujours le même. Je ne sais pas si je me fais bien comprendre

    Comment faire pour que je puisse donner un nom à ce morceau de code puis l'appeler en tapant juste ce nom ?
    Je suis sûr que c'est tout simple mais j'ai rien trouvé...

    Merci d'avance pour votre aide

  2. #2
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Peux tu nous donner les différentes conditions de ton SELON.
    Car il faut que tu intègre ton selon dans la procédure et qu'en suite tu passes un paramètre à ta procédure.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour

    Si vous nous énumériez les SELON ou les catégories de SELON, nous pourrions peut-être vous aider plus précisément.

    Cela étant :
    1. il semble que vous devez tester une valeur entière et il ne devrait pas être trop compliqué de travailler avec un SELON "une valeur entière ou numérique"
    2. vous pouvez travailler avec des paramètres optionnels ou en nombre variable. Voyez dans l'aide Procédures, Passage de paramètres.

    Bon travail

    Hemgé

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 67
    Points : 47
    Points
    47
    Par défaut
    OK. Merci. Je pensais que Windev aurait prévu un truc tout bête pour cela sans pour autant passer par des procédures...
    Voici mon code :
    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
    22
    23
    24
    25
    26
    nLigneXLS est un entier
    MaREQ_Absences est une Source de Données
     
    SELON MaREQ_Absences.IDAgent
    			CAS 1 : nLigneXLS = 22 //01
    			CAS 2 : nLigneXLS = 20 //02
    			CAS 3 : nLigneXLS = 37 //03
    			CAS 4 : nLigneXLS = 8 //04
    			CAS 6 : nLigneXLS = 59 //07
    			CAS 7 : nLigneXLS = 18 //08
    			CAS 8 : nLigneXLS = 39 //09
    			CAS 9 : nLigneXLS = 6 //10
    			CAS 10 : nLigneXLS = 24 //11	
    			CAS 11 : nLigneXLS = 11 //12
    			CAS 12 : nLigneXLS = 13 //13
    			CAS 13 : nLigneXLS = 56 //14
    			CAS 14 : nLigneXLS = 15 //15
    			CAS 15 : nLigneXLS = 41 //16
    			CAS 16 : nLigneXLS = 43 //17
    			CAS 17 : nLigneXLS = 28 //19
    			CAS 18 : nLigneXLS = 26 //20
    			CAS 19 : nLigneXLS = 47 //21
    			CAS 20 : nLigneXLS = 45 //22
    			CAS 21 : nLigneXLS = 54 //23
    			CAS 22 : nLigneXLS = 30 //24
    		FIN
    Parfois la source de donnée porte un nom différent de MaREQ_Absences (par exemple : MaREQ_ExceptionsPlanning)

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    de ce que je comprends de votre question, la réponse est simple :
    - création d'une fonction (globale ou locale en fonction des besoins)
    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
    22
    23
    24
    25
    26
     Procedure selectionXLS(nIDAgent)
     
     SELON nIDAgent
       CAS 1 : RENVOYER(22) //01
    			CAS 2 : RENVOYER 20 //02
    			CAS 3 : RENVOYER 37 //03
    			CAS 4 : RENVOYER 8 //04
    			CAS 6 : RENVOYER 59 //07
    			CAS 7 : RENVOYER 18 //08
    			CAS 8 : RENVOYER 39 //09
    			CAS 9 : RENVOYER 6 //10
    			CAS 10 : RENVOYER 24 //11	
    			CAS 11 : RENVOYER 11 //12
    			CAS 12 : RENVOYER 13 //13
    			CAS 13 : RENVOYER 56 //14
    			CAS 14 : RENVOYER 15 //15
    			CAS 15 : RENVOYER 41 //16
    			CAS 16 : RENVOYER 43 //17
    			CAS 17 : RENVOYER 28 //19
    			CAS 18 : RENVOYER 26 //20
    			CAS 19 : RENVOYER 47 //21
    			CAS 20 : RENVOYER 45 //22
    			CAS 21 : RENVOYER 54 //23
    			CAS 22 : RENVOYER 30 //24
    			AUTRE CAS : RENVOYER -1 //au cas où...
    FIN
    puis dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    nLigneXLS est un entier
    MaREQ_Absences est une Source de Données
    MaREQ_ExceptionsPlanning est une Source de Données
     
    nLigneXLS = selectionXLS(MaREQ_Absences.IDAgent)
    nLigneXLS = selectionXLS(MaREQ_ExceptionsPlanning.IDAgent)
    ...
    Enfin voilà ce que j'ai compris de votre problème

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 67
    Points : 47
    Points
    47
    Par défaut
    Merci de vos réponses.
    Effectivement cela fonctionne pour cette fonction car elle est simple et courte mais j'ai des morceaux de codes beaucoup plus longs et qui reviennent 3 ou 4 fois. J'aurais aimé trouver une solution pour y apporter une modification une fois plutôt que 3 ou 4 quand j'ai quelque chose à changer dans le code.
    Je ne pensais pas que l'on était obligé de passer par une procédure/fonction.
    Vous me confirmer qu'il n'y a aucune autre solution ?

  7. #7
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Tout dépend te ton code.
    Exemple si tu fait des tests sur des valeurs tu peux toujours déclarer des constantes (ou des variables) dans ton code, puis faire des tests dessus.
    En cas de changement de valeur tu fait un seul changement.
    Tu peux aussi utiliser un tableau associatif pour faire le retour de ton selon cas.
    Des solutions il y en a toujours ça dépend juste du contexte et de ce que tu veux faire.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  8. #8
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Citation Envoyé par meganulos Voir le message
    Merci de vos réponses.
    Effectivement cela fonctionne pour cette fonction car elle est simple et courte mais j'ai des morceaux de codes beaucoup plus longs et qui reviennent 3 ou 4 fois. J'aurais aimé trouver une solution pour y apporter une modification une fois plutôt que 3 ou 4 quand j'ai quelque chose à changer dans le code.
    Je ne pensais pas que l'on était obligé de passer par une procédure/fonction.
    Vous me confirmer qu'il n'y a aucune autre solution ?
    Je ne comprend pas vraiment cette remarque !!

    Pour factoriser du code, il n'y pas d'autre solution que d'extraire ce code et de le rendre commun.

    Quelque soit les termes utilisés, procédure, fonction ou quelque soit le terme que tu veux donner à ce concept, le concept reste le même.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/10/2014, 14h34
  2. [Débutant] Aide à comprendre le morceaux du code vb6
    Par gaithewolf dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/08/2013, 10h04
  3. [WD12] Répétition de codes
    Par Arasen dans le forum WinDev
    Réponses: 5
    Dernier message: 01/07/2009, 08h31
  4. Morceaux de code dynamique
    Par Celeborn dans le forum C++
    Réponses: 3
    Dernier message: 11/06/2009, 20h50
  5. [W12] Répétition d'un bout de code
    Par thierrybatlle dans le forum WinDev
    Réponses: 1
    Dernier message: 16/09/2008, 11h56

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