Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Afficher une liste tabulée dans une msgbox

12 réponses
Avatar
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

10 réponses

1 2
Avatar
LSteph
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




Avatar
MichDenis
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
Avatar
thomas
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" a écrit dans le message de groupe de
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




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


"MichDenis" a écrit dans le message de groupe de
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
Avatar
MichDenis
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" a écrit dans le message de groupe de
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
Avatar
thomas
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" a écrit dans le message de groupe de
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" a écrit dans le message de groupe de
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
Avatar
MichDenis
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" a écrit dans le message de groupe de
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" a écrit dans le message de groupe de
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
Avatar
Modeste
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)))

Avatar
lSteph
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" a écrit dans le message de groupe de
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




Avatar
thomas
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" a écrit dans le message de groupe de
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" a écrit dans le message de groupe de
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" a écrit dans le message de groupe de
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
1 2