Conversion VBA Champs Numérique en Champs Text cadré à droite

Résolu
PAlterEgo Messages postés 4 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 7 novembre 2007 - 7 nov. 2007 à 11:53
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 8 nov. 2007 à 06:11
Bonjour,

Ancien développeur GAP3, je viens de me mettre au VBA et rencontre un problème sans doute simple pour un pro mais épineux pour moi :

J'ai une table en entrée avec des champs numériques (des montants)
Je dois créer en sortie un enregistrement dans une table dont tous les champs sont obligatoirement définis en txt. (les montants sont des txt de 20char)

Le seul soucis c'est que je dois cadrer les montants à droite et là je n'y parviens pas. Quoi que je fasse ils sont toujours cadrés à gauche !

Si quelqu'un pouvait m'offrir son aide, ce serait le rêve...

Mille merci

Patrick

8 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2007 à 22:18
Faisons que tu récupères ton champ numérique dans String sMont:

Dim sMont As String, txt As String
Dim n As Long
sMont = tonChampNumeric   ' à toi de voir cette récup
n = Len(sMont)
If n < 20 Then
  txt = Space(20 - n) & sMont
 Else
  txt = sMont
End If

txt contient ton champ cadré à droite avec dezs espaces devant.

ciao...
BruNews, MVP VC++
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 nov. 2007 à 06:11
salut,
il suffit d'ajouter une ' devant la valeur
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2007 à 19:01
char *c = champ;
len = strlen(txt);
if(len < 20) {
  do {
     *c++ = ' ';
  } while(++len < 20);
}
strcpy(c, txt);

ciao...
BruNews, MVP VC++
0
PAlterEgo Messages postés 4 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 7 novembre 2007
7 nov. 2007 à 21:24
Merci Beaucoup pour cette très rapide réponse, on se sent moins seul.


Par contre, ma base est une base Access 2003 et le code du VB 6.3 !

Je suis donc toujours à la rue !
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2007 à 21:58
Alors je transfère sur le forum VB.

ciao...
BruNews, MVP VC++
0
PAlterEgo Messages postés 4 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 7 novembre 2007
7 nov. 2007 à 22:03
Merci et toutes mes excuses pour cette erreur de routage.
0
PAlterEgo Messages postés 4 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 7 novembre 2007
7 nov. 2007 à 22:30
Merci beaucoup.
Je n'ai donc pas d'autre solution que de mettre des blancs devant ?
Je vais le tester de ce pas.
Encore merci
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 nov. 2007 à 23:17
Il faudrait peut-être mieux comprendre ce que tu entends par cadrage ...
En principe, un nombre est aligné à droite et du texte aligné à gauche.

Alors si tu dois aligner à droite du texte, tu dois absolument passer par la méthode que t'offre BruNews

Mais si c'est pour afficher des données qui proviennent d'une table, disons, tu as toujours la possibilité de "caster" ces valeurs.
CStr(Champ) >> Champ devient une chaîne
CDbl(Champ) >> Champ devient un Double
... et il y en a plusieurs autres

MPi²
0
Rejoignez-nous