écrire un STRING sur deux lignes

Résolu
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014 - 18 juil. 2011 à 18:18
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 18 juil. 2011 à 22:33
Bonjour,

J'essaye de coder un petit programme d'impression de chèque mais je rencontre un problème:
si le montant en lettre dépasse 45 caractères, il faut découper le string sur deux lignes car une ligne ne peux supporter que 45 caractères sur le chèque.

Quelqu'un peut m'aider??

Merci

8 réponses

joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
18 juil. 2011 à 19:58
Ce code normalement doit gérer les deux possibilités:

 Dim chain1 As String
            Dim sChaine As String
            Dim chain2 As String
            Dim chain3 As String
            Dim split As Integer
            Dim occ_espace As Integer
            Dim occ_tiret As Integer

            sChaine = Resultat.Text
            Split = Len(sChaine) / 45
            chain1 = Mid$(sChaine, 1, 45)

            occ_espace = InStrRev(chain1, " ")
            occ_tiret = InStrRev(chain1, "-")
            If occ_espace > occ_tiret Then
                chain2 = Mid$(chain1, 1, occ_espace)
                chain3 = Mid$(sChaine, occ_espace + 1, 80)
            Else
                chain2 = Mid$(chain1, 1, occ_tiret)
                chain3 = Mid$(sChaine, occ_tiret + 1, 80)
            End If
            


            MsgBox(chain2)
            MsgBox(chain3)
3
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
18 juil. 2011 à 18:53
en faite j'ai réussi à trouver un astuce qui est la suivante:

sChaine = Resultat.Text
            Split = Len(sChaine) / 45
            chain1 = Mid$(sChaine, 1, 45)
            chain2 = Mid$(sChaine, 46, 80)
            MsgBox(chain1)
            MsgBox(chain2)


Mais il faut contrôler quand couper "sChaine" de telle façon à ne pas avoir un chiffre qui est couper en deux lignes :

"neuf" # "ne-uf"
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 juil. 2011 à 18:56
Bonjour,
Ton problème est peut-être plus compliqué que ce que tu penses :
Il ne s'agit pas seulement de "couper" et ajouter un retour-charriot au 45ème caractère.
Il faut encore vérifier que la coupure se fait à un endroit "acceptable".
Cela commence par une réflexion sur l'algo ou simplement le raisonnement à tenir en langage naturel pour savoir où et comment "couper".
Qu'as-tu commencé dans ce sens ('hors développement) ?
Quel est ton algo ou ton raisonnement ?
Commence par ce point (hors développement, encore une fois) et je te promets que je t'aiderai alors, sur le vu de tes efforts de réflexion.


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
18 juil. 2011 à 19:04
Merci bien,
ce que je pense est que :
1- la coupure doit se faire lors de la trouvaille d'un espace (déjà je m'assure qu'un mot est fini)
2-je dois vérifier l'emplacement de cet espace à ce qu'il soit le plus proche possible de la 45ème emplacement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 juil. 2011 à 19:15
Mets cela en algo ou en langage naturel, s'il te plait.
Car tu te contentes là de dire ce que tu voudrais, "dans la foulée", mais sans dire par quel mécanisme logique ! Et là il n'y a pas d'effort fait !
J'appelle toutefois ton attention sur le fait
- qu'il ne suffit pas de penser aux espaces (réfléchis, au lieu de te précipiter). Les nombres en lettres comportent également d'autres possibilités de "coupures".... Lezsquelles ? ===>> il faut pour cela d'abord comprendre comment, en français, on écrit les nombres en lettres (quatre-vingt, par exemple).
- que :
je dois vérifier l'emplacement de cet espace à ce qu'il soit le plus proche possible de la 45ème emplacement

est très loin d'être satisfaisant ! un 47ème caractère "espace" peut être plus proche du 45ème, mais "déborde" déjà ta limite de 45 !*
Prends ton temps, au lieu de te précipiter, et reviens avec du logique complet et bien pensé
___________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
18 juil. 2011 à 19:48
Je te demande ton avis à propos de ce code:

Dim chain1 As String
            Dim sChaine As String
            Dim chain2 As String
            Dim chain3 As String
            Dim split As Integer
            Dim occ_espace As Integer

            sChaine = Resultat.Text
            Split = Len(sChaine) / 45
            chain1 = Mid$(sChaine, 1, 45)
            occ_espace = InStrRev(chain1, " ")
            chain2 = Mid$(chain1, 1, occ_espace)
            chain3 = Mid$(sChaine, occ_espace + 1, 80)
            MsgBox(chain2)
            MsgBox(chain3)


Mais il ne gère que l'espace pour le moment
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 juil. 2011 à 20:53
Bravo

Mais enlève ces deux lignes qui ne servent à tien :

Dim split As Integer
et
Split = Len(sChaine) / 45

D'autant que Split est un mot réservé !

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 juil. 2011 à 22:33
Lis quand même le MP que je viens de t'adresser à propos d'un autre aspect.


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
Rejoignez-nous