IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Implémenter une console permanente.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    maçon
    Inscrit en
    Mai 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : maçon

    Informations forums :
    Inscription : Mai 2016
    Messages : 1
    Par défaut Implémenter une console permanente.
    Bonjour,

    Dans nombre de mes classeurs, j'ai un paquet de macros qui tourne et j'aimerais pouvoir construire une "console", une sortie texte qui permettrait de lire des informations ( rapports de bugs, informations utiles, ou tout simplement output ) de certaines de mes macro.

    En gros, j'imagine un userform avec une zone de texte, pas plus compliquer. Cependant, j'aimerais :

    1° Que toutes les macro puissent y avoir accès et y écrire : Il faut donc que le module qui la gère soit dans une macro complémentaire sur mon poste, c'est faisable.
    2° Avoir un bouton dans mon RIbbonX pour l'afficher, et la cacher ( pas trop dur, via customUI, il faudra juste coder une macro d'affichage du userform ).

    3° ( le plus important ) : qu'a la fin de l’exécution d'un Sub, ou a la fin de l’exécution de quoi que ce soit, la valeur ( le texte ) contenu dans la console NE DISPARAISSE PAS. Encore mieux, s'il pouvais être enregistrer en dur pour qu'en fermant et rouvrant excel ça fonctionne ce serais bien.

    l'idée est de pouvoir, APRES l’exécution ( réussit ou non ) d'une macro, pouvoir regarder dedans ce qui c'est passer.


    J'ai donc le problème suivant : Comment puis-je faire pour que les data que j'inscrit dedans ( la chaîne de caractères en fait), ne s'efface ni a la fin de l’exécution de VBA ( par ex. via le bouton "réinitialiser" de VBE ), ni a la fermeture du fichier excel contenant le code (mon .xlam en fait). Le soucis est de respecter quand même une certaine rapidité d'exécution.


    Avez-vous une référence qui ressemblerais a mon idée ? Peut-être des liens qui expliquerais (un peu) comment save des data (texte brut) inconditionnellement ou quoi ?

    Merci d’avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    le mieux à mon avis serait que toutes tes macros consigne dans un fichier de log, et que ton UsreForm en affiche le contenue!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    FichierLog "C:\test\Test.log", "toto"
    FichierLog "C:\test\Test.log", "titi"
     
     
    MsgBox OuvrirFichier("C:\test\Test.log")
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
    'Vérifie lexistance d'un   fichier
    Public Function Fichier_Exist(Fichier)
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    Fichier_Exist = fso.FileExists(Fichier)
    Set fso = Nothing
    End Function
     
     
    Function AppendTxt(sFile, sText)
    Dim fso, NewFichier
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set NewFichier = fso.OpenTextFile(sFile, 8)
    NewFichier.Write sText
    NewFichier.Close
    Set NewFichier = Nothing
    Set fso = Nothing
    End Function
    Public Sub FichierLog(sFile, txt)
    Dim FichierLog, fso
    FichierLog = sFile
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(FichierLog) = False Then EnteteFichier FichierLog
    AppendTxt FichierLog, txt & vbCrLf
    Set fso = Nothing
    End Sub
    Private Sub EnteteFichier(Fichier)
    txt = ""
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set NewFichier = fso.OpenTextFile(Fichier, 2, True)
    NewFichier.Write txt
    NewFichier.Close
    Set NewFichier = Nothing
    Set fso = Nothing
    End Sub
    Public Function OuvrirFichier(Fichier)
    Set oFs = CreateObject("Scripting.FileSystemObject")
    Set oFile = oFs.OpenTextFile(Fichier)
    OuvrirFichier = oFile.ReadAll
    oFile.Close
    End Function

Discussions similaires

  1. [VB.NET] Tabulation dans une console
    Par jacma dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/09/2004, 09h50
  2. [C#] Lancer et dialoguer avec une console ?
    Par Selenite dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/09/2004, 19h48
  3. [sdl+glut] une console en trop
    Par khayyam90 dans le forum GLUT
    Réponses: 3
    Dernier message: 02/08/2004, 09h15
  4. Comment envoyer une commande à une console ?
    Par seb_asm dans le forum Assembleur
    Réponses: 3
    Dernier message: 27/03/2004, 14h09
  5. Taille d'une console sous linux
    Par Shinjuku dans le forum C
    Réponses: 7
    Dernier message: 13/06/2003, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo