Est-il possible de cadrer un tableau dans un msgbox ?

Signaler
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
 Bonsoir,

En vbs, j'ai les variables suivantes:
var0 = "AAAAAAAA     "
var1 = "BBBBBBBBBBb"
var2 = "CCCCC   "
var3 = "DDDDDDDDDD    "
Var0 à var3 sont de longueurs différentes.
Je rajoute des spaces, à droite, pour que celles-ci soient de même longueur.
En faisant var0 & " ! " var1" & " ! " &vbCrLf& var2 & " ! " var3" & " ! ",
mon souhait est d'afficher le résultat suivant, dans une MsgBox:
AAAAAAAA             ! BBBBBBBBBBb          !
CCCCC                ! DDDDDDDDDD           !

J'arrive à obtenir ce résultat dans un fichier .txt, mais impossible
de l'obtenir dans une MsgBox.

Quelqu'un aurait-il une idée ???

Merci d'avance de vos suggestions.
jean-marc

Ps: send pour Julien (jrivet), je n'ai pas encore eu le temps de tester pour mon problème
de copier/coller excel vers mailto (translation de vba en vbs)....peut-être dimanche si je suis en forme....
=========================================================

Ci-dessous mon script, un peu brouillon:

Option Explicit
Dim var0, var1, var2, var3, sep, avant
var0 = "AAAAAAAA     "
var1 = "BBBBBBBBBBb"
var2 = "CCCCC   "
var3 = "DDDDDDDDDD    "
sep = " ! "
avant = var0 & sep & var1 & sep & var2 & sep & var3



Dim myVar (4), myTds (4), Variables, Array_Var
myVar(0) = Cstr(var0)
myVar(1) = CStr(var1)
myVar(2) = CStr(var2)
myVar(3) = CStr(var3)
Array_Var = Array(myVar(0), myVar(1), myVar(2), myVar(3))



Dim i, Resultat
For i = 0 To UBound(Array_Var)
    Call Modify_Len_Var (myVar(i), sep)
    Resultat = Resultat & vbCrLf & myVar(i)
Next 



'MsgBox Len(myVar(0)) &vbCrLf& Len(myVar(1)) &vbCrLf& Len(myVar(2)) &vbCrLf& Len(myVar(3))
  
MsgBox "avant: " &vbCrLf& var0 & sep &vbCrLf& var1 & sep & var2 &vbCrLf& sep & var3 & sep &vbCrLf&_
       "après: " &vbCrLf& myVar(0) & myVar(1) &vbCrLf& myVar(2) & myVar(3) &vbCrLf&vbCrLf&_
       "visu des variables avant:" &vbCrLf& var0 & sep &vbCrLf& var1 & sep &vbCrLf& var2 &_
        sep &vbCrLf& var3 & sep &vbCrLf&_
       "visu des variables après:" &vbCrLf& myVar(0) &vbCrLf& myVar(1) &vbCrLf& myVar(2) &vbCrLf&_
        myVar(3) &vbCrLf&vbCrLf& "visu de la variable Resultat:" &vbCrLf& Resultat



'Test pour voir si conforme dans un .txt
'Création d'un fichier pour visu du tableau
Dim fso, fichier, file_temp, Lecture
file_temp = "d:\fichier_test.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fichier = fso.CreateTextFile(file_temp, True)



fichier.WriteLine("Test d'écriture dans un fichier")
fichier.WriteLine Var0 & sep & Var1 & sep
fichier.WriteLine Var2 & sep & Var3 & sep
fichier.WriteLine "==============================="
fichier.WriteLine myVar(0) & myVar(1)
fichier.WriteLine myVar(2) & myVar(3)
fichier.Close



Set fichier = fso.OpenTextFile(file_temp, 1)
Do While fichier.AtEndOfStream <> True
Lecture = fichier.ReadAll
Loop
Call fichier.Close



'Visu du fichier
Dim WshShell, Shell
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Shell = Wscript.CreateObject("Shell.Application")
Shell.MinimizeAll
'shell.Open "d:"
Shell.Open file_temp
Shell.TileVertically
WshShell.Popup "Restaure"
Shell.UndoMinimizeAll






Set WshShell = Nothing
Set Shell = Nothing



Call fso.DeleteFile(file_temp)



Set fso = Nothing
Set fichier = Nothing
MsgBox Lecture
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function Modify_Len_Var(result, sep)
While Len(result) < 20   ' Teste la valeur du compteur.
result = Replace(result,result, result & " ")
'MsgBox "Vérif result dans While Len(result)" &vbCrLf&_
'       "Longueur de result: " & Len(result) &vbCrLf& result
Wend   ' Fin de la boucle While lorsque result > 19.



result = result & sep
'MsgBox "Vérif de result après le While Len(result)" &vbCrLf&_
'        result &vbCrLf& "Longueur de result: " & Len(result)
End Function



WScript.Quit

6 réponses

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Re,

Si la solution du MsgBox n'est pas possible, je vais remplacer la
msgbox par l'affichage du tableau dans un fichier .htm tempry.
Je completerai ce topic pour les gens interessés (ou curieux !!).

jean-marc
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Salut,

Ce qui t'empêche de réaliser celà, c'est la police utilisée pour écrire dans un MsgBox. Un 'i' y est moins large qu'un 'M', ...
Pour éviter ce souci, fabriques ta propre MsgBox, et utilises un Label avec une police du style COURIER.


Dans cette police, toutes les lettres (ainsi que les espaces) ont la même largeur, et tu pourras réaliser ton tableau.




Tu as réussi à le faire dans ton premier post ...







Manu


--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
Et en VBS, pas question de SubClasser la MsgBox, pour remplacer à la volée la police de caractères ^^

"ta propre MsgBox", econs..... sauf que notre ami JMO est en vbs...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour à tous,

Merci à Manu et Thomas de leur intérêt pour ce post.
Je viens d'essayer avec WshShell.Popup, même décentrage qu'avec une MsgBox.

Je continue mes essais avant de me replier vers la solution html.

@+.
jean-marc
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
Thomas ? non Reynald ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Re,

Autant pour moi,

Je crois me souvenir d'avoir vu une adresse mail du genre xxxxx.reynald@msn.com , il y a quelques années.
A mon age, la mémoire me joue des tours.

Bonne journée et bon week-end.

jean-marc