Réaliser un label dont le texte s'affiche lettre par lettre [Résolu]

Messages postés
22
Date d'inscription
mardi 13 janvier 2015
Dernière intervention
13 avril 2015
-
Bonjour à tous !

Je viens poser ma question ici car même après plusieurs heures de recherches sur la toile je n'ai pas la réponse.

J'aimerai qu'à l'ouverture d'une form un texte s'affiche automatiquement (mais pas d'un seul coup)

C'est à dire avec par exemple un timer qui à chaque tick m'affiche un caractère supplémentaire de mon label (le texte du label étant préalablement définit)

J'ai bien trouvé ceci,
http://codes-sources.commentcamarche.net/forum/affich-10174-envoyer-un-text-lettre-par-lettre
mais hélas mon faible niveau en VB ne me permet pas d'adapter ma situation ^^' (je sorts tout juste du VBA)

D'avance merci :)
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
1
Merci
Bonjour

 Private word As String
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Timer1.Interval = 200
Timer1.Start()
word = "BONJOUR"
End Sub

Private Sub Timer1_Tick(sender As Object, e As System.EventArgs) Handles Timer1.Tick
Static x As Integer = 1
Label1.Text = word.Substring(0, x)
x += 1
If x > word.Length Then
DirectCast(sender, Timer).Stop()
End If
End Sub

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Zang8
Messages postés
22
Date d'inscription
mardi 13 janvier 2015
Dernière intervention
13 avril 2015
-
Waow Merci à tous pour ces réponses :)
Je vais tester ça et je reviens vous dire quoi ! ;)

Splendide ! tout fonctionne comme je le voulais avec ton code ShayW ! :)
Lilnice
Messages postés
2
Date d'inscription
samedi 14 février 2015
Dernière intervention
14 février 2015
-
Salut, s'il te plait,
peux-tu nous dire sous quel VB ce code fonctionne?
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
> Lilnice
Messages postés
2
Date d'inscription
samedi 14 février 2015
Dernière intervention
14 février 2015
-
Au hasard (???) ===>> celui objet du présent sous-forum !
Commenter la réponse de cs_ShayW
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
Il sera bien que tu nous dises sous quoi tu développes.
Tu es ici dans le forum général Visual Basic.
Or, la réponse que tu attends est différente selon que tu développes sous VB6 ou sous VB.Net (qui ont leurs sous-forums).
Zang8
Messages postés
22
Date d'inscription
mardi 13 janvier 2015
Dernière intervention
13 avril 2015
-
oops désolé, je suis sous Microsoft Visual Basic 2010

Ma réponse se trouve peut être ici..

Private Sub Timer1_Timer()

Static Position As Long
Static Initialise As Boolean
Dim LeTexte As String
Dim LeTexteApres As String

LeTexte = "Je Défile dans un Label !"

If Initialise = False Then
Initialise = True
Position = Len(LeTexte)
End If

Position = Position + 1

If Position >= 0 Then
LeTexteApres = Space(Position) & LeTexte
Else
LeTexteApres = Mid(LeTexte, Abs(Position))
If Position < -Len(LeTexte) Then
Position = Len(LeTexte)
End If
End If

Label1 = LeTexteApres
End Sub


Si tel est le cas, je n'arrive pas à corriger l'erreur qui se produit au niveau de Abs dans
LeTexteApres = Mid(LeTexte, Abs(Position))
NHenry
Messages postés
14323
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
Quelle erreur ?
De plus, retires l'import automatique de Microsoft.VisualBasic (onglet 'références ' des propriétés de ton projet) et utilises les méthodes du framework.

Par exemple, Mid -> Chaine.SubString(...)
Zang8
Messages postés
22
Date d'inscription
mardi 13 janvier 2015
Dernière intervention
13 avril 2015
-
Salut NHenry et merci de rejoindre le sujet,
alors j'ai retiré l'import auto et plusieurs éléments (Mid, Len, Space...) ne sont plus déclarés (dois je continuer sur cette base ou un code différent conviendrait mieux à me requête).

Ps: pour information pourquoi me demandes tu de retirer l'import automatique de Microsoft.VisualBasic ?
NHenry
Messages postés
14323
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
Cet import t'incite à utiliser des fonctions de compatibilité de VB6, cela est fortement déprécié.
Les fonctions du Framework sont nettement plus adaptées et plus logique à utiliser.

Mid -> String.SubString
Len -> String;Length
Space -> New String(...)
Commenter la réponse de ucfoutu
Messages postés
5621
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
17 décembre 2018
Zang8
Messages postés
22
Date d'inscription
mardi 13 janvier 2015
Dernière intervention
13 avril 2015
-
Bonjour et merci cs_Le Pivert cependant je ne suis pas sur de pouvoir réaliser ce que je veux avec le code que tu cites.
je ne cherche pas à déplacer le texte.. Ce que je cherche en gros ca ressemble à ça :

Label1 = Bonjour
Timer = True
Tick 1 = Label1 = B
Tick 2 = Label1 = Bo
Tick 2 = Label1 = Bon
Tick 2 = Label1 = Bonj
Tick 2 = Label1 = Bonjo
Tick 2 = Label1 = Bonjou
Tick 2 = Label1 = Bonjour
Timer = False

Voila bon c'est en gros x) (ca n'a rien de très pro affiché comme ca mais peut être est-ce plus clair ?)

Merci encore d'étayer le sujet :)
Commenter la réponse de cs_Le Pivert
Messages postés
5621
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
17 décembre 2018
0
Merci
Le code que tu nous a montré est celui-ci, qui date de 1999 en VB6 de Nix. Il déplace un texte:

http://codes-sources.commentcamarche.net/source/70-faire-defiler-un-texte-dans-un-label

Pour faire ce que tu veux:

Mettre 2 Timers avec ce code:

Option Strict On
Public Class Form1
    'https://www.youtube.com/watch?v=nwT9UxRW_jw
    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        If Me.Text = "" Then
            Me.Text = "T"
        ElseIf Me.Text = "T" Then
            Me.Text = "TU"
        ElseIf Me.Text = "TU" Then
            Me.Text = "TUT"
        ElseIf Me.Text = "TUT" Then
            Me.Text = "TUTO"
        ElseIf Me.Text = "TUTO" Then
            Timer1.Stop()
            Timer2.Start()
        End If
    End Sub
    Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick
        If Me.Text = "TUTO" Then
            Me.Text = "TUT"
        ElseIf Me.Text = "TUT" Then
            Me.Text = "TU"
        ElseIf Me.Text = "TU" Then
            Me.Text = "T"
        ElseIf Me.Text = "T" Then
            Me.Text = ""
            Timer2.Stop()
            Timer1.Start()
        End If
    End Sub
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.Text = ""
        Timer1.Start() 'regler les 2 Timers à 500
      End Sub
   End Class


A adapter à un label


Commenter la réponse de cs_Le Pivert
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Bon jour,
Est-t-il vraiment si "difficile" :
1) de comprendre et utiliser la méthode Substring de VB.Net pour extraire (et afficher ensuite) les x premiers caractères d'une chaîne alphanumérique ?
2) de déclarer la variable x statique dans l'évènement Tick d'un timer et de l'incrémenter de 1 unité à chaque tick ? (et bien sur de l'interrompre dès que x = la longueur du texte à afficher) ?
Vraiment ?
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.