Inserer un Tchat (mini) dans un UserForm

paul87

XLDnaute Impliqué
Bonjour à tous,
Bonjour le Forum.
Voilà, dans mon appli j'ai un fichier .xls qui dès son ouverture lance un UserForm qui sert de "plateforme de répartition et re direction" vers d'autres xls.
Jusque là tout va bien et fonctionne à la perfection.
Ce fichier xls de départ et utilisé en réseau interne par 10 à 15 personnes simultanément.
Je souhaiterai rajouter une fonctionnalité de tchat (simple ou évolué) directement dans ce UserForm
Est-ce possible..?
si oui comment...?
Merci de m'indiquer quelques pistes, ou tutoriels.
Paul87
 

Dranreb

XLDnaute Barbatruc
Re : Inserer un Tchat (mini) dans un UserForm

par contre, le texte précedent s'efface à chaque nouvelle saisie, il n'y a donc qu'une ligne à chaque fois.
Oui, vous voyez bien que je n'ai prévu qu'une ligne dans le fichier pour le texte du dernier message envoyé par quelqu'un.
De plus, il n'y a pas d'affichage dans la textBox1 du texte saisi en Textbox2
Non plus, non. Vous savez je me suis borné à écrire le plus gros, après c'est du détail à peaufiner.
 

paul87

XLDnaute Impliqué
Re : Inserer un Tchat (mini) dans un UserForm

Bonsoir,
j'ai bien rajouté dans le code du CommandButton1
le code nécessaire au transfert vers la TextBox1, avec la concaténation de l'id_user.
puis le code qui efface le contenu de ma TextBox2.
En fait comme dans mon premier modèle..
mais maintenant je sèche lamentablement...
il faudrait m'expliquer un peu votre code..pour que j'avance
Toutes les lignes entrées doivent-elles se stocker dans le fichier .txt..?
 

Pièces jointes

  • chatV2.xls
    28.5 KB · Affichages: 53
  • chatV2.xls
    28.5 KB · Affichages: 62
  • chatV2.xls
    28.5 KB · Affichages: 55
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Inserer un Tchat (mini) dans un UserForm

Ce serait plutôt à vous de m'expliquez ce que vous voulez faire. En attendant vos contrôles sont des TextBox, pas des ListBox.
Avec une ListBox Vous pourriez évidemment lire et écrire plusieurs lignes dans un fichier texte.
Mettez autant de Print # qu'il faut pour les écrire et autant de Line Input pour les lire.
Je crois que la touche F1 sur les mots clés du langage vous expliquera aussi bien que moi.

P.S. Remarquez, avec une ListBox vous pourriez toujours n'enregistrer que le dernier message envoyé par quelqu'un.
Essayez le classeur joint.
 

Pièces jointes

  • chatV2.xls
    41 KB · Affichages: 81
  • chatV2.xls
    41 KB · Affichages: 77
  • chatV2.xls
    41 KB · Affichages: 69
Dernière édition:

paul87

XLDnaute Impliqué
Re : Inserer un Tchat (mini) dans un UserForm

Bonjour et encore merci pour votre aide..et votre patience.!
j'ai testé votre classeur joint,
j'ai maintenant un enregistrement dans le fichier .txt du UserLogin + du texte entré en TextBox2, et ceci fonctionne quel que soit le poste et l'utilisateur, c'est ok pour ça.
Mais dans ce fichier .txt, chaque nouveau texte entré, efface le précédent. Est-ce que c'est normal.?
L'affichage dans la ListBox1 devrait se faire depuis:
Code:
Me.ListBox1.AddItem Format(H, "hh:mm") & ", " & Z
...enfin si j'ai bien compris..(ce qui n'est pas sur du tout...) et là, je n'ai aucun affichage dans la ListBox1 alors qu'il devrait y avoir un rafraichissement de cette ListBox1 toutes les 5 secondes par "ContrôleChgt".
j'ai l'impression qu'il ne se passe rien de la macro "Public Sub ContrôleChgt"
De plus, je ne comprends pas bien à quoi sert la variable "Z" ..à récupérer la valeur (en string) contenue dans .txt ..?
Merci encore..
j'ai bien quelques connaissances en vba..mais là c'est un peu trop ardu pour moi..
 
Dernière édition:

paul87

XLDnaute Impliqué
Re : Inserer un Tchat (mini) dans un UserForm

Re...
finalement j'ai fais un grand pas en avant..!! ça marche !!
j'avais simplement oublié de lancer automatiquement la sub "VérifHeureTchat":eek:
je trouvais ça bizarre que rien ne se passe..!!!
Je vais vérifier que ça fonctionne bien partout..sur tous les postes et je reviens vers vous pour finaliser..
Encore merci +++++++++
 

Dranreb

XLDnaute Barbatruc
Re : Inserer un Tchat (mini) dans un UserForm

Bonjour.
Ah oui dans Feuil1 j'ai oublié de rectifier :
VB:
Private Sub CommandButton1_Click()
LancementTchat
End Sub
Oui, c'est ça, Z sert à récupérer l'userlogin et le texte du dernier message envoyé par quelqu'un, y compris éventuellement sois même.
 

paul87

XLDnaute Impliqué
Re : Inserer un Tchat (mini) dans un UserForm

J'ai juste encore une question...enfin je crois..
peut-on paramétrer un retour à la ligne automatique dans la ListBox si le texte entré dans la TextBox et trop long..?
ou suis je obligé de limiter le nombre de caractères de ma textbox en fonction de la largeur de ma ListBox..?
Merci encore
 

paul87

XLDnaute Impliqué
Re : Inserer un Tchat (mini) dans un UserForm

En remplacant la ListBox par une Textbox et en adaptant le code comme ceci:
Me.TextBox3 = TextBox3 + Format(H, "dd/mm hh:mm") & " -> " & Z & vbLf
ca fonctionne!! avec un retour à la ligne si message trop long.
avec comme propriétés pour cette TextBox3: WordWrap= True et MultiLigne=True ainsi que Enabled=False

Maintenat toute dernière question..
peut'on faire émettre à Excel un son à l'arrivée d'un message...j'ai testé Beep en fin de "Public Sub ContrôleChgt" lorque le nouveau message est affiché....ça ne marche pas.!
Une idée..?
 

Dranreb

XLDnaute Barbatruc
Re : Inserer un Tchat (mini) dans un UserForm

Ce que je ne comprend pas dans ce cas c'est pourquoi vous mettez le vbLf à la fin. J'aurais plutôt mis :
VB:
Me.TextBox3 = TextBox3 & vbLf & Format(H, "dd/mm hh:mm") & " -> " & Z
Et vous n'avez pas peur qu'au fil de la journée le contenu de la TextBox3 grossisse tellement qu'on ne voit plus le dernier message ?
Chez moi Beep produit le même son qu'un MsgBox auquel on ne précise pas de nuance en 2ième paramètre. C'est le Wave assigné à "Son par défaut" dans le volet "Sons" des Propriétés de Sons et périphériques audio du panneau de configuration.
 

paul87

XLDnaute Impliqué
Re : Inserer un Tchat (mini) dans un UserForm

Bonjour,
avec ceci rajouté dans la macro:
Code:
Public Sub ContrôleChgt(ByVal H As Date)
Dim Z As String
If H = DateHeureTchat Then Exit Sub
Open ChNomFTchat For Input As #1
Line Input #1, Z
Close #1
DateHeureTchat = H
Me.TextBox3 = TextBox3 + Format(H, "dd/mm hh:mm") & " -> " & Z & vbLf
Me.TextBox3.SetFocus
TextBox3.CurLine = 0
End Sub
ça fonctionne...j'ai bien un "scrolling" à partir de la dernière ligne.
bon, ça m'oblige à passer la propriété enabled de False à True....mais ce n'est pas bien grave..!! puisque si une entrée est faite dans cette TextBox..elle ne sera pas diffusée en ligne.

Par contre,..pour le son..je ne comprends pas votre commentaire et ce que je peux faire...
Encore MERCI +++
 

paul87

XLDnaute Impliqué
Re : Inserer un Tchat (mini) dans un UserForm

re,
finalement avec ça..le son marche à l'arrivée de nouveaux messages..!!Nickel
Décaration:
Code:
Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpzSoundName As String, ByVal uFlags As Long) As Long
1 module:
Code:
Sub Macro1()
Call sndPlaySound32("C:/WINDOWS/Media/chimes.wav", 0)
End Sub
et enfin:
Code:
Private Sub TextBox3_Change()
Macro1
End Sub

Par contre, j'ai un plus gros problème..
Si deux ou plusieurs utilisateurs postent un message dans un intervalle très proche...çe qui risque fatalement arriver, un ou plusieurs des messages ne sont pas enregistrés/affichés.
j'ai essayé de diminuer la fréquence de rafraichissement à 1/86400 c'est un peu mieux...
si je passe à 0.5/86400...ça devient instable et ne fonctionne plus..
existe t'il une solution pour être sur de ne perdre aucun message..même ceux postés aux mêmes moments..??
Après ça ....l'APPLI est terminée..!!!!!!
MERCI +++++
 

Dranreb

XLDnaute Barbatruc
Re : Inserer un Tchat (mini) dans un UserForm

Bonjour.
Ce que vous pouvez faire c'est tester dans une toute petite procédure si un Beep tout seul produit un son, si un MsgBox en produit un (ils n'en produisent pas non plus chez moi si je n'ai pas allumé mes 2 petits HP). Et s'il s'avère que c'est parce que la config. matérielle ne permet pas de produire des sons, remplacez peut être simplement par un MsgBox "Nouveau message :" & Z, vbInformation, "Tchat". Sinon voyez s'il est placé au bon endroit.

Eh oui, le deuxième problème est plus sérieux. J'y pensais plus ou moins. Deux voies à creuser:
1: au lieu d'écrire le message tout de suite, différer cette écriture jusqu'à ce que la dernière heure du fichier soit dépassée de plus de 5 secondes et la faire effectuer par la procédure exécutée périodiquement,
2: Empiler dans le fichier tous les messages vieux de moins de 10 secondes avec cette heure notée dedans.
D'une façon ou d'une autre ça complique sérieusement. De la 2ième surtout, mais elle est plus confortable.
 
Dernière édition:

paul87

XLDnaute Impliqué
Re : Inserer un Tchat (mini) dans un UserForm

Oup's...ca se complique même au delà de mes moyens....mince alors...!!
sans compter qu'avec l'une ou l'autre des solutions..il y aura un retard à l'affichage
Comment faire alors..?

Ne serait-il pas possible de faire une sorte de test style.
pas de transfert/écriture du nouveau message dans .txt tant que l'affichage .txt vers textbox n'est pas fait (ou la macro "ContrôleChgt" terminée)

ou bien...
juste un "timer" qui bloque l'exéctution de la macro de transfert/écriture pendant 1sec de plus que "now" ou variable "DateHeureTchat"
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise