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 :

logiciel de cheque


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 0
    Points
    0
    Par défaut logiciel de cheque
    salut les frere j'ai un problem dans mon application je veux faire une application de imprimer cheque l'application est finis mais le problem dans la marge de l'etat j'ai posé les mesure come il faut mais il ya des decalage dans l’impression du cheque est que il ya une idee ou bien une solution mrc d'avance les frere
    ou bien comment suprime les marge standard de l’imprimante j'ai utilise un simple imprimante canon
    mrc

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,
    1. Je sais que tu n'es pas français, mais ton message aurait eu plus de réponses si tu avais mis de la ponctuation.
    2. Pour la même raison, certains d'entre nous pourraient être offusqués par le terme "frère".
    3. Je ne connais pas la législation marocaine, mais en France, pour imprimer un chèque, cela ne se fait pas sur une imprimante de bureau toute simple.
    4. Si tu as créé un état : as tu les bonnes dimensions du papier dans ton état ? Dans ton serveur d'impression ? Connais tu les marges physiques de l'imprimante ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Bonjour,
    1. Je sais que tu n'es pas français, mais ton message aurait eu plus de réponses si tu avais mis de la ponctuation.
    2. Pour la même raison, certains d'entre nous pourraient être offusqués par le terme "frère".
    3. Je ne connais pas la législation marocaine, mais en France, pour imprimer un chèque, cela ne se fait pas sur une imprimante de bureau toute simple.
    4. Si tu as créé un état : as tu les bonnes dimensions du papier dans ton état ? Dans ton serveur d'impression ? Connais tu les marges physiques de l'imprimante ?
    Bonjour,
    Je ne pense pas qu'il cherche à imprimer des chèques mais plutôt imprimer sur des chèques. Je ne pense pas que la legislation francaise interdise cette pratque.
    Certe, il existe des imprimantes adaptées mais une simple imprimante peut suffire avec un bon paramétrage du positionnement des rubrique dans l'état.
    Ps/ il s'agit du drapeau algérien et non marocain
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par b_reda31 Voir le message
    Bonjour,
    Je ne pense pas qu'il cherche à imprimer des chèques mais plutôt imprimer sur des chèques. Je ne pense pas que la legislation francaise interdise cette pratque.
    Certe, il existe des imprimantes adaptées mais une simple imprimante peut suffire avec un bon paramétrage du positionnement des rubrique dans l'état.
    Ps/ il s'agit du drapeau algérien et non marocain
    J'ai bien compris qu'il voulait faire une personnalisation de chèque. (C'est le terme que l'on emploie). J'ai travaillé dans le chèque pendant plus de 5 ans. Pour imprimer un chèque, il faut être agréé par la Banque de France. Je pense q'il faut un agrément de la Banque d'Algérie dans son cas.
    Il faut utiliser une imprimante à encre magnétique car les chèques sont passés dans des lecteurs spécifiques. Du coup, l'utilisation d'un "simple" état ne fonctionnera pas car il faut utiliser un logiciel d'impression spécifique.
    Dernier point : toutes mes excuses pour la confusion de pays ...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Au temps pour moi.
    Je vais me renseigner sur les lois chez nous.
    J'ai aussi développé un utilitaire d'impression sur chèque qui fonctionne depuis 2 ans avec une simple imprimante laser.
    Je n'ai pas eu de retour par rapport à la lecture des chèques. Et donc pas de souci technique.
    Cela doit certainement dépendre du pays comme vous le dites.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  6. #6
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par b_reda31 Voir le message
    Au temps pour moi.
    Je vais me renseigner sur les lois chez nous.
    J'ai aussi développé un utilitaire d'impression sur chèque qui fonctionne depuis 2 ans avec une simple imprimante laser.
    Je n'ai pas eu de retour par rapport à la lecture des chèques. Et donc pas de souci technique.
    Cela doit certainement dépendre du pays comme vous le dites.
    Je n'ai pas été assez précis concernant mon propos. J'ai parlé de la personnalisation (informations bancaires qui nécessite une imprimante à encre magnétique) mais pas du remplissage de chèque (bénéficiaire, montant, date et signature). Dans ce cas, on peut bien entendu utiliser une imprimante standard.
    Il suffit de créer un état. Un peu de cadrage et cela doit fonctionner...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  7. #7
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    Juste pour info et pour les puristes de la loi :

    http://finance.lelynx.fr/banques/inf...e-legal-39039/

  8. #8
    Membre confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    Par défaut
    Bonjour tout le monde

    Effectivement avec une simple imprimante, il n'y a pas de décalage.
    Il suffit de bien paramétrer l'état d'impression comme suit :

    1/ Bloc : uniquement le corps avec Hauteur = 66 mm (Algérie) pour éviter l'écriture dans la zone blanche

    2/ Format :
    - Mode paysage
    - Retrait = 0
    - Marges papier (mm)
    ..... 170 x 80 (applicable en Algérie)
    ..... marges (H,G,D,B) = 0

    3/ Options : imprimer l'état tel quel

    4/ Créez et positionnez les cellules dans les endroits standards d'un chèque
    5/ Créez une procédure au niveau de l'état
    à l'ouverture de l'état, lancez la procédure pour repositionner les cellules (coordonnées X, Y)
    en fonction des valeurs figurant sur la fiche de la banque en cours d'utilisation.
    Bien entendu, prévoir au niveau de cette fiche, la possibilité de modification des dites coordonnées par l'utilisateur.

    Ci-joint un spécimen de chèque rempli par le logiciel

    Nom : Spécimen_Chèque.jpg
Affichages : 9229
Taille : 82,9 Ko

  9. #9
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Bonjour,
    je procède globalement de la même manière que vous Midou, à quelques exceptions près :
    - En plus de stocker les positions (X,Y) de chaque rubrique pour chaque banque (modèle de chèque), je stocke aussi dans un autre fichier les marge X et Y intrinsèques de l'imprimante.
    En effet, j'ai remarqué que selon le modèle d'imprimante utilisée, il y a certains écarts qui s'ajoutent. Par exemple, il se peut qu'une rubrique soit paramétrée à une position X de 20mm disons.Mais si on mesure la véritable distance après impression, on constate qu'elle est à 23 mm (et cela même si l'état est défini sans marge). Dans cet exemple, l'imrimante ajoute un écart X de 3mm.
    Je pense que cela dépend de l'imprimante en elle même! qui ajoute quelques millimètres. Et cet écart varie d'un constructeur à un autre.
    C'est donc pour cela que j'enregistre cette marge quelques part. Ainsi lors de la procédure de positionnement à l'init de l'état, je déduis cette marge à la valeur enregistrée de la rubrique.
    De cette manière, si le client décide de changer d'imprimante, il n'aura qu'à redéfinir la marge de l'imprimante sans avoir à reparamétrer l'ensemble des modèles déjà enregistrés.

    C'est ce que j'ai tenté d'expliquer en pv à notre ami zi2009cha, je ne sais pas s'il a pu régler son problème ...
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  10. #10
    Membre confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    Par défaut
    Bonjour,

    @b_reda
    Je m'excuse d'avoir mis du temps pour vous répondre. Au fait, j'étais focalisé sur un sos lancé par notre ami B..
    Dernière connexion de zi2009cha remonte au 09/09/2017, difficile de savoir s'il a réglé ou non son problème.

    Concernant votre application
    1/ Mémoriser les décalages d'imprimantes dans une table, c'est astucieux et j'approuve l'idée, c'est plus pratique à l'utilisateur de pouvoir switcher
    sur l'imprimante de son choix, sans être obligé à chaque fois de modifier les coordonnées initiales.

    2/Je suppose que la police d'impression est paramétrable.
    Le champ somme en lettres pourrait poser problème du fait que :
    - il est prévu sur 2 lignes
    - les points X des lignes sont forcément en décalage
    - dans pareil cas, le champ de type multi-lignes est à exclure

    Lors de l'impression du chèque, en cas d'une éventuelle ventilation de la chaine en 2 lignes,
    il y a du réglage à faire surtout si vous utilisez les caractères de limitation. Je ne sais pas si vous avez rencontré ce problème.

  11. #11
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Citation Envoyé par midou23175 Voir le message
    2/Je suppose que la police d'impression est paramétrable.
    Le champ somme en lettres pourrait poser problème du fait que :
    - il est prévu sur 2 lignes
    - les points X des lignes sont forcément en décalage
    - dans pareil cas, le champ de type multi-lignes est à exclure

    Lors de l'impression du chèque, en cas d'une éventuelle ventilation de la chaine en 2 lignes,
    il y a du réglage à faire surtout si vous utilisez les caractères de limitation. Je ne sais pas si vous avez rencontré ce problème.
    Bonjour,
    Oui en effet! une rubrique multiligne ne peut contenir le montant en lettre. Comme vous l'expliquez très bien, le retrait de la première ligne du montant en lettre est différent de celui de la deuxième ligne et par conséquent l'espace de la deuxième ligne n'est pas complétement exploité.
    Pour ma part, j'utilise deux rubriques MontantLettre1 et MontantLettre2 chacune paramétrées de manière indépendante. (Position X, Position Y, Largeur)
    Au moment de la génération de l'état, je teste la taille de la chaîne globale contenant le montant en lettre, si celle-ci dépasse un certain seuil (paramétrable) alors je divise la chaine en deux chaines, l'une pour remplir la ligne1 et l'autre pour la ligne 2.
    Sinon, la ligne 2 reste vide.

    Procédez-vous aussi de cette manière ?
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  12. #12
    Membre confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par b_reda31 Voir le message
    Bonjour,
    Au moment de la génération de l'état, je teste la taille de la chaîne globale contenant le montant en lettre, si celle-ci dépasse un certain seuil (paramétrable) alors je divise la chaine en deux chaines, l'une pour remplir la ligne1 et l'autre pour la ligne 2.
    Sinon, la ligne 2 reste vide.

    Procédez-vous aussi de cette manière ?
    Bonjour,

    Absolument, je procède de la même manière que vous, sauf pour le seuil (paramétrable) à partir duquel se fait la ventilation.
    J'ignore sur quelle base vous fixez ce paramètre.

    Pour ma part, ce seuil est calculé de façon dynamique en tenant compte de :
    - utilisation d'une police d'impression paramétrable
    - insertion d'un nombre maximum de mots dans la 1ère ligne
    - ne pas couper le dernier mot inséré

    Pour cela :
    Je parcours la chaîne de la "somme en lettres" au moyen du caractère espace, pour déterminer ce fameux seuil.

  13. #13
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Citation Envoyé par midou23175 Voir le message
    Bonjour,

    Absolument, je procède de la même manière que vous, sauf pour le seuil (paramétrable) à partir duquel se fait la ventilation.
    J'ignore sur quelle base vous fixez ce paramètre.
    En fait, le seuil est statique mais peut être modifié par l'utilisateur. Ce n'est pas très dynamique en effet. Voici la procédure que j'ai bidouillée :
    NbCar étant le seuil en question.
    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
     
    PROCEDURE DiviserMontant(Ch,NbCar)
    i,n sont des entier;
    n = Taille(Ch);
     
    sCh1,sCh2 sont des chaîne;
    sRes est une chaîne;
    SI Taille(Ch)<=NbCar ALORS
    	sCh1=Ch;
    	sCh2="";
    SINON
    sCh1=Gauche(Ch,NbCar);
    i = Taille(sCh1);
     
    TANTQUE sCh1[[i]]<>" "
    	i = i-1;
    FIN
     
    sCh1=Gauche(Ch,i);
    sCh2 = Droite(Ch,n-i);	
    FIN
    sRes=sCh1+"*"+sCh2;
    RENVOYER sRes;

    Citation Envoyé par midou23175 Voir le message
    Bonjour,
    Pour ma part, ce seuil est calculé de façon dynamique en tenant compte de :
    - utilisation d'une police d'impression paramétrable
    Super! j'imagine que vous êtes passé par la fonction TexteLargeur pour identifier le seuil dynamiquement en fonction de la taille et de la police ?
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  14. #14
    Membre confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par b_reda31 Voir le message
    Super! j'imagine que vous êtes passé par la fonction TexteLargeur pour identifier le seuil dynamiquement en fonction de la taille et de la police ?
    Bonjour,

    Au vu du code, pour déterminer le seuil vous partez de la fin et vous revenez vers le début en opérant par décrémentation.
    Pour moi c'est le sens contraire, je commence à partir du début (zéro) et je vais vers la fin en opérant par incrémentation.
    Le plus important c'est le point commun "construction d'une portion de chaine par extraction à partir de la chaine globale au moyen du caractère espace"

    La fonction qui permet de calculer la largeur du texte à imprimer en fonction de la police spécifiée, c'est iLargeurTexte()
    Dans votre code, il manquait juste l'utilisation de cette fonction.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    // gnXLargeur1 étant la largeur de la 1ère ligne
    // gsXLettre_Montant étant la chaine en lettres du montant du chèque
    // gsXchaine_Limitation1 et gsXchaine_Limitation2 sont les chaines de limitation 
     
    sXChaine_Test, sXChaine1, sXChaine2 sont des chaines
    sTexte_Lettre est une chaine
    nXLongueur est un entier
    bXFin_Test est un booléen=Faux
     
    sTexte_Lettre=gsXchaine_Limitation1+ChaîneFormate(Gauche(gsXLettre_Montant,1),ccMajuscule)+Milieu(gsXLettre_Montant,2)+gsXchaine_Limitation2
     
    // Taille de sTexte_Lettre déterminée de façon dynamique
    nXLongueur=iLargeurTexte(iPolice(MaPolice)+sTexte_Lettre)
     
    nXOCURA est un entier = ChaîneOccurrence(sTexte_Lettre," ")+1
     
    SI nXLongueur > gnXLargeur1 ALORS
        POUR i=1 A nXOCURA
                sXChaine_Test+=ExtraitChaîne(sTexte_Lettre,i," ")
                SI iLargeurTexte(iPolice(MaPolice)+sXChaine_Test) < gnXLargeur1 ALORS
                    sXChaine_Test+=" "
       	        sXChaine1=sXChaine_Test	
                 SINON	
    	         SI bXFin_Test=Faux ALORS
    	             bXFin_Test=Vrai
    	             sXChaine1=SansEspace(sXChaine1)+gsXchaine_Limitation2
    	             sXChaine2=gsXchaine_Limitation1+ExtraitChaîne(sTexte_Lettre,i," ")+" "
    	         SINON	 
    	             sXChaine2+=ExtraitChaîne(sTexte_Lettre,i," ")+" "
    	         FIN
                 FIN
      FIN	
      RUB_Lettre1=SansEspace(sXChaine1)
      RUB_Lettre2=SansEspace(sXChaine2)
    SINON
       RUB_Lettre1=sTexte_Lettre
       RUB_Lettre2=""	
    FIN

  15. #15
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Bonjour,
    Merci à vous pour votre partage. Votre solution est en effet plus propre et entièrement automatique grâce à l'utilisation iLargeurTexte.

    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  16. #16
    Membre confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par b_reda31 Voir le message
    Bonjour,
    Merci à vous pour votre partage. Votre solution est en effet plus propre et entièrement automatique grâce à l'utilisation iLargeurTexte.
    Bonjour,

    Merci à vous, pour m'avoir amené à revisiter mon ancien code.
    J'ai ajouté une optimisation intéressante

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    // gnXLargeur1 = étant la largeur de la 1ère ligne (paramètre)
    // gsXLettre_Montant étant la chaine en lettres du montant du chèque
    // gsXchaine_Limitation1 = paramètre de limitation + " "
    // gsXchaine_Limitation2 = " "+paramètre de limitation
    // remarque : si paramètre de limitation ="" alors
    //     gsXChaine_Limitation1 et gsXChaine_Limitation2 =""
     
     
    sXChaine_Test, sXChaine1, sXChaine2 sont des chaines
    sTexte_Lettre est une chaine
    nXLongueur est un entier
     
    sTexte_Lettre=gsXchaine_Limitation1+ChaîneFormate(Gauche(gsXLettre_Montant,1),ccMajuscule)+Milieu(gsXLettre_Montant,2)+gsXchaine_Limitation2
     
    // Taille de sTexte_Lettre déterminée de façon dynamique
    nXLongueur=iLargeurTexte(iPolice(MaPolice)+sTexte_Lettre)
     
    nXOCURA est un entier = ChaîneOccurrence(sTexte_Lettre," ")+1
     
    SI nXLongueur > gnXLargeur1 ALORS
        POUR i=1 A nXOCURA
                sXChaine_Test+=ExtraitChaîne(sTexte_Lettre,i," ")
                SI iLargeurTexte(iPolice(MaPolice)+sXChaine_Test) < gnXLargeur1 ALORS
                    sXChaine_Test+=" "
                    sXChaine1=sXChaine_Test	
                 SINON	
                      sXChaine1=SansEspace(sXChaine1)+gsXchaine_Limitation2
                      sXChaine2=gsXchaine_Limitation1
    	       
                      POUR k=i A nXOCURA
                              sXChaine2+=ExtraitChaîne(sTexte_Lettre,k," ")+" "
                      FIN  
     
                      sXChaine2=SansEspace(sXChaine2)
    
                      SORTIR	            
    	
                 FIN
      FIN	
      RUB_Lettre1=sXChaine1
      RUB_Lettre2=sXChaine2
    SINON
       RUB_Lettre1=sTexte_Lettre
       RUB_Lettre2=""	
    FIN

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    midou23175 mon frere j'ai n'est pas compris ton code pour l'utilisation de champ exmplique moi svp mrci

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Un grand merci pour votre code utile
    Citation Envoyé par midou23175 Voir le message
    Bonjour,

    Merci à vous, pour m'avoir amené à revisiter mon ancien code.
    J'ai ajouté une optimisation intéressante

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    // gnXLargeur1 = étant la largeur de la 1ère ligne (paramètre)
    // gsXLettre_Montant étant la chaine en lettres du montant du chèque
    // gsXchaine_Limitation1 = paramètre de limitation + " "
    // gsXchaine_Limitation2 = " "+paramètre de limitation
    // remarque : si paramètre de limitation ="" alors
    //     gsXChaine_Limitation1 et gsXChaine_Limitation2 =""
     
     
    sXChaine_Test, sXChaine1, sXChaine2 sont des chaines
    sTexte_Lettre est une chaine
    nXLongueur est un entier
     
    sTexte_Lettre=gsXchaine_Limitation1+ChaîneFormate(Gauche(gsXLettre_Montant,1),ccMajuscule)+Milieu(gsXLettre_Montant,2)+gsXchaine_Limitation2
     
    // Taille de sTexte_Lettre déterminée de façon dynamique
    nXLongueur=iLargeurTexte(iPolice(MaPolice)+sTexte_Lettre)
     
    nXOCURA est un entier = ChaîneOccurrence(sTexte_Lettre," ")+1
     
    SI nXLongueur > gnXLargeur1 ALORS
        POUR i=1 A nXOCURA
                sXChaine_Test+=ExtraitChaîne(sTexte_Lettre,i," ")
                SI iLargeurTexte(iPolice(MaPolice)+sXChaine_Test) < gnXLargeur1 ALORS
                    sXChaine_Test+=" "
                    sXChaine1=sXChaine_Test	
                 SINON	
                      sXChaine1=SansEspace(sXChaine1)+gsXchaine_Limitation2
                      sXChaine2=gsXchaine_Limitation1
    	       
                      POUR k=i A nXOCURA
                              sXChaine2+=ExtraitChaîne(sTexte_Lettre,k," ")+" "
                      FIN  
     
                      sXChaine2=SansEspace(sXChaine2)
    
                      SORTIR	            
    	
                 FIN
      FIN	
      RUB_Lettre1=sXChaine1
      RUB_Lettre2=sXChaine2
    SINON
       RUB_Lettre1=sTexte_Lettre
       RUB_Lettre2=""	
    FIN
    Je vous remercie pour ce code très utile

Discussions similaires

  1. Quel logiciel (EDI) pour débuter en programmation ?
    Par mimosa69 dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 17/01/2016, 16h45
  2. Logiciel et Progiciel
    Par Toine dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 10/04/2012, 13h28
  3. logiciel de programmation en Algorithmique
    Par Thomas Lebrun dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 08/11/2002, 22h18
  4. Réponses: 8
    Dernier message: 17/10/2002, 12h52
  5. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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