Supprimer des caractères d'un label - Visual Basic 2010, VB.NET

Fermé
iKreal -  
 Utilisateur anonyme -
Bonjour, je code en VB.NET et depuis pas mal de temps, je cherchais un code qui permet de supprimer une chaîne spécifiée de caractères.
Exemple : dans le texte "Salut les amis", je voudrais supprimer "les", ce qui ferait "Salut amis".
J'ai trouvé ce code :
Label1.Text = Label1.Text.Remove(6, 9)

Mais ils me disent :
"L'index et le compte doivent faire référence à un emplacement situé dans la chaîne.
Nom du paramètre : count"

J'ai fait plusieurs tests, notamment ceci :
Label1.Text = Label1.Text.Remove(startIndex:=6, count:=4)

Donc aidez-moi s'il vous plaît, merci de votre réponse attendue le plus rapidement possible.
A voir également:

15 réponses

Utilisateur anonyme
 
Bonsoir, au début de cette conversation Le Pivert t'as donné le lien du cours de P Lassere.

Tu devrais suivre ce cours depuis le début.
Apprendre les bases te sera bien plus utile que de passer des heures sur les forums à espérer une réponse à un problème que tu ne décris que partiellement.
Tu viens de perdre 2 jours, alors que tu aurais eu le temps de lire le cours de long en loin, et de faire les exercices.
Ça ne veut pas dire maitriser VB.net, mais avoir vu au moins une fois le socle minimum pour te poser les bonnes questions:
  • Un label doit il être le moyen de stocker ma donnée ou ce pour quoi il est fait afficher un texte?
  • Dois-je me casser les pieds à compter les caractères pour modifier le texte quand il doit changer (pas simple si on passe de 10,0 h à 9,9...) ou utiliser un outil qui va bien pour composer mon texte, bien formaté, en fonction de variables?


Bien sûr, même après ce cours, il est probable que tu sois encore perdu, mais cette fois, quand untel te dis de regarder la classe Math et bien la notion de classe devrait t'être un peu plus familière.
De même tu aurais compris que CInt ne fait pas d'arrondi, il converti une donnée d'un type "quelconque" vers le type Entier, par exemple
Dim entier As Integer = CInt(True)
fonctionne et veut dire quelque chose, alors qu'arrondir la valeur vraie n'a aucun sens.



Modérer m'amène à intervenir dans de nombreux posts, mais les seuls langages que je connaisses sont le C# et un peu de VB. Pour vos codes pensez à la coloration.
Réponse trouvée ->Question Résolue
2
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Tu nous donnes ce site où tu as la solution:

Math.Round


https://openclassrooms.com/forum/sujet/vb-net-arrondir-0-00-38725

Ce qui donne:

 Label4.Text = CStr(Math.Round(SystemInformation.PowerStatus.BatteryLifeRemaining / 3600, 1))


Il faut faire un petit effort personnel. Avec du copier coller tu atteindras vite les limites de la programmation. Il faut comprendre ce que l'on fait!

Et pour le Help, j'étais en WE.

Nous sommes des bénévoles ;:)
2
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

voir ceci:

https://plasserre.developpez.com/cours/vb-net/?page=langage-vb2#LV-E-1-a

Intéresses toi à la méthode Replace

Dim s As String= "Visual_Basic"

s= s.Replace("_"," " ) 'Donne s= "Visual  Basic"
0
iKreal
 
Re, le problème c'est que c'est un nombre généré par le temps de la batterie. Je vais dire mon projet :
Afficher sur un texte (label) le temps en heures avec un chiffre après la virgule d'autonomie de la batterie. Pour cela, je divise le temps restant de la batterie par 60. Et le truc c'est que ça me donne un nombre comme "1.6756715865651738", donc ce que je veux, c'est supprimer du caractère 4 au caractère 20 par exemple.
Voici ce que j'ai fait avec un timer d'interval 100 :

    Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick
Label4.Text = Label4.Text.Remove(startIndex:=4, count:=20)
End Sub


Merci de votre aide.
Cordialement, iKreal.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
iKreal
 
Sur ton site, j'ai trouvé un code intéressant, le seul problème c'est que je débute sur Visual Basic, et je n'ai encore jamais utilisé les fonctions Dim.
Voici ce code intéressant :
Dim s As String = "VisualBasic"

s = s.Remove(2, 7) 'Donne s= "Viic"

Le problème c'est que je veux remplacer le Label4.Text, or ici, je ne comprends pas trop le code. Je vais me renseigner sur quelques sites mais aidez-moi quand-même au cas au je ne trouve pas la solution.
0
iKreal
 
J'ai cherché un peu et j'ai un peu compris.
Voici ces quelques lignes de code :
    Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick
        Label4.Text = Texte4
    End Sub

    Dim Texte4 As String = SystemInformation.PowerStatus.BatteryLifeRemaining / 3600
<souligne>Texte4</souligne>= Texte4.Remove(3, 20)


L'objectif est que le Texte du Label4 soit correspondant au temps restant de la batterie (explication : Label4 = Texte4 = Temps restant de la batterie en secondes remis en heures avec un chiffre après la virgule (divisé par 3600 et supression des caractères 3 à 20)). N'oubliez pas que le premier caractère est le caractère 0.

Le problème c'est qu'à l'endroit souligné (Texte4), c'est souligné par des vagues bleues et c'est écrit comme erreur "Déclaration attendue.". Je ne trouve pas comment faire, aucune proposition n'est disponible. Aidez-moi, vraiment.
Cordialement, iKreal.
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Bonjour,

je n'ai encore jamais utilisé les fonctions Dim

C'est pourtant par là qu'il faudrait commencer.
"Dim" n'est pas une fonction mais une déclaration de variable.

Tu déclares ta variable :
Dim Texte4 As String

Tu la valorises :
Texte4 = SystemInformation.PowerStatus.BatteryLifeRemaining / 3600

et tu valorises ton label :
Label4.Text = Texte4.Remove(3, 20)
0
iKreal
 
Re gbinforme,
le problème que je dis une deuxième fois, c'est que Texte4 se souligne et une erreur "Déclaration attendue" se produit.

Voici plusieurs lignes de codes de la form :

    Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick
        Label4.Text = Texte4
    End Sub

    Dim Texte4 As String
    Texte4 = SystemInformation.PowerStatus.BatteryLifeRemaining / 3600
    Texte4 = Texte4.Remove(3, 20)


Ce qui souligne, c'est Texte4 à la ligne 6 et 7.
Aide-moi s'il te plait.
Cordialement, iKreal.
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Bonjour,

Bien entendu !
Il faudrait tout de même mettre les lignes dans la procédure, avant
End Sub
qui bien sûr doit la terminer.
Vouloir faire des choses compliquées, c'est très bien, mais ce serait tout de même nécessaire de connaitre les principes élémentaires.
0
iKreal
 
Re, je vais vous montrer les lignes de code car il y a un problème dans le rendu :

    Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick
        Dim Texte4 As String
        Texte4 = SystemInformation.PowerStatus.BatteryLifeRemaining / 3600
        Texte4 = Texte4.Remove(4, 9)
        Label4.Text = Texte4
    End Sub


Le problème, c'est que par exemple, au lieu d'obtenir "1,2", j'obtiens le bon résultat mais sans les caractères supprimés : "1,24444444445".
Aidez-moi, s'il vous plaît.
Cordialement, iKreal.
0
iKreal
 
Sinon, aurais-tu un code pour arrondit un nombre au lieu de tronquer ? Parce que si il reste genre 1,69 heures, çe serait plutôt 1,7 et non 1,7.
Cordialement, iKreal.
0
iKreal Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   6
 
J'attends une réponse.
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Bonsoir,

Ici c'est un site d'entraide gratuit et l'on répond lorsque l'on a le temps : si tu veux une réponse immédiate tu passes un contrat avec une SII et s'ils te répondent un dimanche, tu m'appelles : je ne serais pas dérangé.

Si tu avais consulté l'aide tu saurais qu'il existe une fonction round et je te laisse en prendre connaissance car je n'apprécie pas beaucoup ta demande comminatoire.

Bonne fin de dimanche.
0
iKreal Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   6
 
Ok, excuse-moi, je vais me renseigner et merci. ^^
(C'est juste pressant).
iKreal.
0
iKreal Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   6
 
Je me suis renseigné et je ne comprends rien.
(Plusieurs sites :
https://openclassrooms.com/forum/sujet/vb-net-arrondir-0-00-38725
https://docs.microsoft.com/fr-fr/dotnet/api/system.math.round?redirectedfrom=MSDN&view=netframework-4.8)

J'ai essayé ce code que j'ai trouvé sur un autre site (il arrondi à l'unité malheureusement) et il ne fonctionne pas :

    Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick
        Dim Texte4 As String
        Texte4 = CInt(SystemInformation.PowerStatus.BatteryLifeRemaining / 3600)
        Label4.Text = Texte4
    End Sub


Si vous avez le temps, pouviez-vous écrire directement les lignes de codage qu'il faut faire. Je voudrais que le nombre soit arrondi au dixième prêt.

Rappel de mon objectif : Afficher le temps restants de la batterie en heures avec un chiffre après la virgule sur un label (label4).
Voici un élément qu'il faudra (à mon avis) faire :
SystemInformation.PowerStatus.BatteryLifeRemaining / 3600 pour diviser le temps restants de la batterie par 3600 (pour le rendre en heures)
(le texte s'appelle Label4)
Si vous arrivez et si cela fonctionne (ou non) je vous remercierai vraiment donc si vous avez 5-10 minutes à consacrer pour moi, ce serait gentil de votre part.

Cordialement,
iKreal.
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
re,

Tu t'agites beaucoup pour peu de résultat : pas étonnant que tu sois "à la bourre".
Il suffit de regarder dans l'aide la syntaxe de la fonction que je t'ai donnée :

Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick
    Label4.Text = Round(SystemInformation.PowerStatus.BatteryLifeRemaining / 3600, 1)  
End Sub
0
iKreal Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   6
 
Le problème c'est que Visual Basic ne reconnait pas Round. Je code du VB.net je rapelle. Aidez-moi s'il vous plaît.
Cordialement,
iKreal.
0
iKreal Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   6
 

Si vous avez 5 minutes, je vous prie de répondre ! :p
0
Utilisateur anonyme
 
Non tu as tous les éléments depuis 3 jours, donc débrouille toi un peu.
Je ferme ce sujet, nous aidons à apprendre, on ne fait pas le travail des autres.
0