Afficher une liste tabulée dans une msgbox

Le
thomas
Bonjour,

Je veux afficher un résultat, sous forme de liste à 3 colonnes, dans une
msgbox.

Mon souci est que les données des 3 colonnes ont une longueur variable.
Comment tabuler la présentation, pour que tout soit bien cadré?

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LSteph
Le #6934701
Bonjour,

exemple
pour un champ fixé à une largeur maximale de 15 caractères
mettre les 15 premiers caractères de (la valeur du champ + 15 espaces)
puis idem selon la largeur fixée pour la deuxième,...troisième colonne.

Cordialement.

--
lSteph

Bonjour,

Je veux afficher un résultat, sous forme de liste à 3 colonnes, dans une
msgbox.

Mon souci est que les données des 3 colonnes ont une longueur variable.
Comment tabuler la présentation, pour que tout soit bien cadré?

Merci




MichDenis
Le #6934691
Utilises la constante VbTab au lieu des espaces....mais dans
un Msgbox ce n'est pas toujours évident d'avoir des résultat alignées

Un petit exemple :

MsgBox "tentative d'alignée des données " & vbCrLf & _
"Polution" & vbTab & "air" & vbTab & vbTab & "Automobiles" & vbCrLf & _
"toto" & vbTab & "Hôpitalisation" & vbTab & "sorties"




"thomas" <nomail> a écrit dans le message de news: %231$w4A$
Bonjour,

Je veux afficher un résultat, sous forme de liste à 3 colonnes, dans une
msgbox.

Mon souci est que les données des 3 colonnes ont une longueur variable.
Comment tabuler la présentation, pour que tout soit bien cadré?

Merci
thomas
Le #6991591
Bonjour,

Je ne comprends pas comment cela peut être aligné si la valeur du champ
n'est pas constante et que je rajoute toujours le même nombre d'espaces


"LSteph" discussion : #gh$1N$

Bonjour,

exemple
pour un champ fixé à une largeur maximale de 15 caractères
mettre les 15 premiers caractères de (la valeur du champ + 15 espaces)
puis idem selon la largeur fixée pour la deuxième,...troisième colonne.

Cordialement.

--
lSteph

Bonjour,

Je veux afficher un résultat, sous forme de liste à 3 colonnes, dans une
msgbox.

Mon souci est que les données des 3 colonnes ont une longueur variable.
Comment tabuler la présentation, pour que tout soit bien cadré?

Merci




thomas
Le #6991581
Je vais essayer merci, mais si une variable dépasse la valeur d'une
tabulation ca me décale tout, non?


"MichDenis" discussion : eunoRP$
Utilises la constante VbTab au lieu des espaces....mais dans
un Msgbox ce n'est pas toujours évident d'avoir des résultat alignées

Un petit exemple :

MsgBox "tentative d'alignée des données " & vbCrLf & _
"Polution" & vbTab & "air" & vbTab & vbTab & "Automobiles" & vbCrLf & _
"toto" & vbTab & "Hôpitalisation" & vbTab & "sorties"




"thomas" <nomail> a écrit dans le message de news:
%231$w4A$
Bonjour,

Je veux afficher un résultat, sous forme de liste à 3 colonnes, dans une
msgbox.

Mon souci est que les données des 3 colonnes ont une longueur variable.
Comment tabuler la présentation, pour que tout soit bien cadré?

Merci
MichDenis
Le #6992341
Je sais que ce n'est pas l'idéal... mais il n'y a pas beaucoup d'alternatives
de tenter un peu de bricolage

Voici le même exemple, en utilisant une méthode plus efficace

'------------------------------------------
Sub test()

Dim x As String
Dim A As String * 20, B As String * 20
Dim C As String * 20, D As String * 20
Dim E As String * 20, F As String * 20

A = "Pollution": B = "air": C = "Automobiles"
C = "toto": D = "Hospitalisation": E = "Sorties"

x = vbTab & vbTab ' Le séparateur -> nombre de tab au choix !

MsgBox "tentative d'alignée des données " & vbCrLf & vbCrLf & _
A & x & B & x & C & vbCrLf & _
C & x & D & x & E & vbTab & F

End Sub
'------------------------------------------



"thomas" <nomail> a écrit dans le message de news:
Je vais essayer merci, mais si une variable dépasse la valeur d'une
tabulation ca me décale tout, non?


"MichDenis" discussion : eunoRP$
Utilises la constante VbTab au lieu des espaces....mais dans
un Msgbox ce n'est pas toujours évident d'avoir des résultat alignées

Un petit exemple :

MsgBox "tentative d'alignée des données " & vbCrLf & _
"Polution" & vbTab & "air" & vbTab & vbTab & "Automobiles" & vbCrLf & _
"toto" & vbTab & "Hôpitalisation" & vbTab & "sorties"




"thomas" <nomail> a écrit dans le message de news:
%231$w4A$
Bonjour,

Je veux afficher un résultat, sous forme de liste à 3 colonnes, dans une
msgbox.

Mon souci est que les données des 3 colonnes ont une longueur variable.
Comment tabuler la présentation, pour que tout soit bien cadré?

Merci
thomas
Le #6992481
ok.. un type de variable " String * 20" ca correspond à quoi?
je pourrais aussi compte la longueur des variables et adapter le nombre
d'espaces ensuite en concéquence, non?


"MichDenis" discussion : edws#
Je sais que ce n'est pas l'idéal... mais il n'y a pas beaucoup
d'alternatives
de tenter un peu de bricolage

Voici le même exemple, en utilisant une méthode plus efficace

'------------------------------------------
Sub test()

Dim x As String
Dim A As String * 20, B As String * 20
Dim C As String * 20, D As String * 20
Dim E As String * 20, F As String * 20

A = "Pollution": B = "air": C = "Automobiles"
C = "toto": D = "Hospitalisation": E = "Sorties"

x = vbTab & vbTab ' Le séparateur -> nombre de tab au choix !

MsgBox "tentative d'alignée des données " & vbCrLf & vbCrLf & _
A & x & B & x & C & vbCrLf & _
C & x & D & x & E & vbTab & F

End Sub
'------------------------------------------



"thomas" <nomail> a écrit dans le message de news:

Je vais essayer merci, mais si une variable dépasse la valeur d'une
tabulation ca me décale tout, non?


"MichDenis" discussion : eunoRP$
Utilises la constante VbTab au lieu des espaces....mais dans
un Msgbox ce n'est pas toujours évident d'avoir des résultat alignées

Un petit exemple :

MsgBox "tentative d'alignée des données " & vbCrLf & _
"Polution" & vbTab & "air" & vbTab & vbTab & "Automobiles" & vbCrLf & _
"toto" & vbTab & "Hôpitalisation" & vbTab & "sorties"




"thomas" <nomail> a écrit dans le message de news:
%231$w4A$
Bonjour,

Je veux afficher un résultat, sous forme de liste à 3 colonnes, dans une
msgbox.

Mon souci est que les données des 3 colonnes ont une longueur variable.
Comment tabuler la présentation, pour que tout soit bien cadré?

Merci
MichDenis
Le #6995541
Dim A As String * 20

Le "*20" après le type "String" indique que le contenu "Texte" de cette
variable ne dépassera pas "20 caractères" ...Advenant le cas où on
tenterait de le faire, la variable ne conserverait seulement les 20
premiers caractères. Mais, ça veut aussi dire que chacune des variables
occupe exactement le même espace mémoire (soit 20 caractères) même
si le contenu que l'on lui attribue est de 5 caractères.

Petit exemple
"Air" devient dans la variable "Air "
"Automobiles" -> "Automobiles "
Les 2 variables ont des contenues de 20 caractères.

Lorsque l'on utilise pareille pratique, il faut s'assurer d'attribuer à la variable
"String" un nombre suffisant de caractères pour contenir la chaîne de caractères
la plus longue que notre programme peut générer

Comme chacune des variables à la même longueur, l'utilisation de la constante
VbTab permet de dresser un tableau avec des colonnes alignées facilement.
Cependant, un "MsgBox" a ses contraintes...il n'a pas été conçu pour afficher
"une base de donnée" ... si c'est volumineux, pourquoi ne pas utiliser un contrôle
"ListBox" ?




"thomas" <nomail> a écrit dans le message de news: %
ok.. un type de variable " String * 20" ca correspond à quoi?
je pourrais aussi compte la longueur des variables et adapter le nombre
d'espaces ensuite en concéquence, non?


"MichDenis" discussion : edws#
Je sais que ce n'est pas l'idéal... mais il n'y a pas beaucoup
d'alternatives
de tenter un peu de bricolage

Voici le même exemple, en utilisant une méthode plus efficace

'------------------------------------------
Sub test()

Dim x As String
Dim A As String * 20, B As String * 20
Dim C As String * 20, D As String * 20
Dim E As String * 20, F As String * 20

A = "Pollution": B = "air": C = "Automobiles"
C = "toto": D = "Hospitalisation": E = "Sorties"

x = vbTab & vbTab ' Le séparateur -> nombre de tab au choix !

MsgBox "tentative d'alignée des données " & vbCrLf & vbCrLf & _
A & x & B & x & C & vbCrLf & _
C & x & D & x & E & vbTab & F

End Sub
'------------------------------------------



"thomas" <nomail> a écrit dans le message de news:

Je vais essayer merci, mais si une variable dépasse la valeur d'une
tabulation ca me décale tout, non?


"MichDenis" discussion : eunoRP$
Utilises la constante VbTab au lieu des espaces....mais dans
un Msgbox ce n'est pas toujours évident d'avoir des résultat alignées

Un petit exemple :

MsgBox "tentative d'alignée des données " & vbCrLf & _
"Polution" & vbTab & "air" & vbTab & vbTab & "Automobiles" & vbCrLf & _
"toto" & vbTab & "Hôpitalisation" & vbTab & "sorties"




"thomas" <nomail> a écrit dans le message de news:
%231$w4A$
Bonjour,

Je veux afficher un résultat, sous forme de liste à 3 colonnes, dans une
msgbox.

Mon souci est que les données des 3 colonnes ont une longueur variable.
Comment tabuler la présentation, pour que tout soit bien cadré?

Merci
Modeste
Le #6996041
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :

Je sais que ce n'est pas l'idéal... mais il n'y a pas beaucoup d'alternatives
de tenter un peu de bricolage


;o)))
notament si la police utilisée pour le MsgBox n'est pas une police à pas constant
(Courier new, Fixedsys, Terminal)
police qui ne peut etre changée dans EXCEL ( Sauf API )
ceci est une option d'affichage Windows, externe à EXCEL et qui s'applique à toutes les applications !!!!

http://cjoint.com/?gnnEuKc1OP

Sub test()
Dim x As String
Dim A As String * 20, B As String * 20
Dim C As String * 20, D As String * 20
Dim E As String * 20, F As String * 20
Dim y As Integer, z As Integer, w As Integer
'----- génération longueurs aleatoires
y = 2 + Int(Rnd() * 20)
z = 2 + Int(Rnd() * 20)
w = 2 + Int(Rnd() * 20)
'----- générartion chaines
A = String(y, "i"): B = String(z, "a"): C = String(w, "m")
x = vbTab ' Le séparateur -> nombre de tab au choix !

MsgBox "tentative d'aligner des données " & vbCrLf & vbCrLf & _
A & x & B & x & C & vbCrLf & _
B & x & C & x & A & vbCrLf & _
C & x & A & x & B
End Sub


--
@+
;o)))

lSteph
Le #6997291
Bojour ,

parceque si on prend toujours les 15 premiers caractères (nb à
adapter)
de la chaine +15 espaces
le champ fera toujours 15 caractères
soit
0 caractère(s) + 15 espaces
1 cractère(s) +14 espaces
2 caractères+13 espaces..

..etc...

@+

lSteph

On 12 juin, 23:17, "thomas" <nomail> wrote:
Bonjour,

Je ne comprends pas comment cela peut être aligné si la valeur du cham p
n'est pas constante et que je rajoute toujours le même nombre d'espaces

"LSteph" discussion : #gh$1N$

Bonjour,

exemple
pour un champ fixé à une largeur maximale de 15 caractères
mettre les 15 premiers caractères de (la valeur du champ + 15 espaces)
puis idem selon la largeur fixée pour la deuxième,...troisième colon ne.

Cordialement.

--
lSteph


Bonjour,

Je veux afficher un résultat, sous forme de liste à 3 colonnes, dans une
msgbox.

Mon souci est que les données des 3 colonnes ont une longueur variable .
Comment tabuler la présentation, pour que tout soit bien cadré?

Merci




thomas
Le #7000181
string as * ca me convient tout à fait !

non ce n'est pas volumineux, juste quelques lignes pas plus de 10 ou 15 et
en générale autour de 5
c'est pour info, pas pour faire un choix comme dans une listbox

merci


"MichDenis" discussion : #
Dim A As String * 20

Le "*20" après le type "String" indique que le contenu "Texte" de cette
variable ne dépassera pas "20 caractères" ...Advenant le cas où on
tenterait de le faire, la variable ne conserverait seulement les 20
premiers caractères. Mais, ça veut aussi dire que chacune des variables
occupe exactement le même espace mémoire (soit 20 caractères) même
si le contenu que l'on lui attribue est de 5 caractères.

Petit exemple
"Air" devient dans la variable "Air "
"Automobiles" -> "Automobiles "
Les 2 variables ont des contenues de 20 caractères.

Lorsque l'on utilise pareille pratique, il faut s'assurer d'attribuer à la
variable
"String" un nombre suffisant de caractères pour contenir la chaîne de
caractères
la plus longue que notre programme peut générer

Comme chacune des variables à la même longueur, l'utilisation de la
constante
VbTab permet de dresser un tableau avec des colonnes alignées facilement.
Cependant, un "MsgBox" a ses contraintes...il n'a pas été conçu pour
afficher
"une base de donnée" ... si c'est volumineux, pourquoi ne pas utiliser un
contrôle
"ListBox" ?




"thomas" <nomail> a écrit dans le message de news:
%
ok.. un type de variable " String * 20" ca correspond à quoi?
je pourrais aussi compte la longueur des variables et adapter le nombre
d'espaces ensuite en concéquence, non?


"MichDenis" discussion : edws#
Je sais que ce n'est pas l'idéal... mais il n'y a pas beaucoup
d'alternatives
de tenter un peu de bricolage

Voici le même exemple, en utilisant une méthode plus efficace

'------------------------------------------
Sub test()

Dim x As String
Dim A As String * 20, B As String * 20
Dim C As String * 20, D As String * 20
Dim E As String * 20, F As String * 20

A = "Pollution": B = "air": C = "Automobiles"
C = "toto": D = "Hospitalisation": E = "Sorties"

x = vbTab & vbTab ' Le séparateur -> nombre de tab au choix !

MsgBox "tentative d'alignée des données " & vbCrLf & vbCrLf & _
A & x & B & x & C & vbCrLf & _
C & x & D & x & E & vbTab & F

End Sub
'------------------------------------------



"thomas" <nomail> a écrit dans le message de news:

Je vais essayer merci, mais si une variable dépasse la valeur d'une
tabulation ca me décale tout, non?


"MichDenis" discussion : eunoRP$
Utilises la constante VbTab au lieu des espaces....mais dans
un Msgbox ce n'est pas toujours évident d'avoir des résultat alignées

Un petit exemple :

MsgBox "tentative d'alignée des données " & vbCrLf & _
"Polution" & vbTab & "air" & vbTab & vbTab & "Automobiles" & vbCrLf & _
"toto" & vbTab & "Hôpitalisation" & vbTab & "sorties"




"thomas" <nomail> a écrit dans le message de news:
%231$w4A$
Bonjour,

Je veux afficher un résultat, sous forme de liste à 3 colonnes, dans une
msgbox.

Mon souci est que les données des 3 colonnes ont une longueur variable.
Comment tabuler la présentation, pour que tout soit bien cadré?

Merci
Publicité
Poster une réponse
Anonyme