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

VB.NET Discussion :

probleme de pourcentage avec progressbar


Sujet :

VB.NET

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 274
    Points : 237
    Points
    237
    Par défaut probleme de pourcentage avec progressbar
    Bonjour,


    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim regex As New Regex("\[download\] +([^%]+)%", (RegexOptions.Singleline Or RegexOptions.Compiled))
            Dim match As String = regex.Match(Me.TextBox_Info.Text).Value.Replace("[download] ", "")
            If TextBox_Info.Text.Contains("%") Then
                'ProgressBar1.Value = match.ToString
                ProgressBar1.Value = CType(match.ToString.Replace("%", ""), Integer)
                Me.Label4.Text = match.ToString
            End If
    mon erreur :
    Nom : erreur.jpg
Affichages : 990
Taille : 55,7 Ko

    comment on fait pour associer les pourcentages avec progressbar1?
    Merci de votre compréhension,

  2. #2
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Ton illustration montre bien le problème immédiat : tu essaye de convertir un Réel (0.0) en Integer, le message d'erreur est clair et ton CType aussi.
    Cependant, ton code me semble fort compliqué ...
    Pour utiliser le ProgressBar, il faut affecter ses propriétés Minimum et Maximum, et ensuite lui donner une Value. La Value doit être comprise dans intervalle [Minimum, Maximum]. S'il la plage de valeurs à présenter est hors de cette intervalle, il faut soit changer les bornes, soit appliquer un facteur d'échelle (une règle de trois) à Value de sorte qu'elle entre proportionnellement dans intervalle. Le plus facile est de modifier les bornes ..., pas besoin de calculs compliqués
    La définition d'une intervallle [1,100] est sans doute plus appropriée à la représentation de pourcentages.
    L'usage de la propriété Increment peut s'avérer utile aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            ProgressBar1.Minimum = 1
            ProgressBar1.Maximum = 100
            ProgressBar1.Value = ValeurAPresenter ' !!! Minimum <= ValeurAPresenter <= Maximum !!!
    J'espère que ça t'aidera ...

  3. #3
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Suite ...

    Comme je n'avais toujours rien pour expérimenter simplement un ProgressBar, l'exposé de ton problème m'a décidé à faire un petit labo : je t'envoie son dossier de développement (ProgressBar.zip).

    Bon amusement,

    Nom : ProgressBar.jpg
Affichages : 994
Taille : 22,9 Ko

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 274
    Points : 237
    Points
    237
    Par défaut
    Bonjour Phil Rob,
    Merci d'avoir répondu à mon probléme. j'aimerai récupérer le pourcentage télécharger avec progressbar avec youtube-dl ( voir image sur dessous)
    Nom : pourcentage.jpg
Affichages : 916
Taille : 7,1 Ko

    j'ai essayer plusieurs code mais toujours mème erreur :
    La conversion de la chaîne " 0.0" en type 'Integer' n'est pas valide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ProgressBar1.Value = String.Format("{0:0.0}", match.ToString.Replace("%", ""))
    comment faire pour récupérer le pourcentage en progressbar?

    Merci de votre réponse

  5. #5
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Dès lors que ta source te donne le pourcentage (ex. 16.3), il te suffit de le lire et l'affecter tel quel à la Value du ProgressBar.
    Et puisqu'il s'agit de pourcentages, le Minimum du ProgressBar vaut 0 et son Maximum vaut 100.
    Bien entendu, la propriété Value attend un Integer et donc, c'est pas la peine de jouer avec des réels tel que " 0.0".
    De plus, je ne crois pas qu'il soit nécessaire d'user des expressions régulières pour faire ce travail, vois le code ci-dessous.

    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
            Dim Chaine As String = "[download] 16.3% et blabla ..."
    ' ...
            Dim DebutValeur As Integer
            Dim FinValeur As Integer
            Dim ChaineValeur As String
            Dim Valeur As Integer
     
            DebutValeur = Chaine.IndexOf("]") + 1   'Ici commence la chaine numérique qui nous intéresse
            FinValeur = Chaine.IndexOf("%")            'et ici, elle se termine
            ChaineValeur = Chaine.Substring(DebutValeur, FinValeur - DebutValeur) 'La chaine numérique commence comme calculé et se termine un certain nombre de caractères plus loin
            Valeur = ChaineValeur                            'La conversion d'office réalisée par VB est suffisante, la chaine est convertie avec arrondi : 16.3 ==> 16 et 16.6 ==> 17
     
            MaProgressBar.Minimum = 0
            MaProgressBar.Maximum = 100
            MaProgressBar.Value = Valeur

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 274
    Points : 237
    Points
    237
    Par défaut
    j'ai essayer votre code toujours la même erreur
    Nom : pourcentage.jpg
Affichages : 934
Taille : 50,8 Ko
    le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim debut As Integer = TextBox_Info.Text.IndexOf("]") + 1
                Dim Fin As Integer = TextBox_Info.Text.IndexOf("%")
                Dim chainevaleur As Integer = TextBox_Info.Text.Substring(debut, Fin - debut).Replace(" ", "")
                Dim Valeur As Integer = chainevaleur
                ProgressBar1.Value = Valeur
    pourquoi ça fonctionne pas avec progressbar?

  7. #7
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Je en vois pas pourquoi tu dois faire un Replace(" ", ""), mais ce n'est pas le problème.
    Comme tu peux le voir sur l'illustration ci-dessous, j'ai utilisé mon labo de ce matin pour expérimenter le code et il n'y a pas d'erreur, quelle que soit la valeur du pourcentage dans ma chaine de test, que je fasse un Replace ou pas.
    Ton problème est ailleurs : Fais donc un MessageBox.Show (TextBox_Info.Text) juste avant de commencer l'extraction, pour voir comment est vraiment la chaine. Tiens-moi informé et j'y regarderai encore, mais pas tout de suite, j'ai des corvées ...
    Nom : ProgressBar2.jpg
Affichages : 1017
Taille : 91,4 Ko

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 274
    Points : 237
    Points
    237
    Par défaut
    Bonsoir,

    j'ai essayer votre code mais çà fonctionne pas toujours pas. alors essayer plusieurs astuce j'ai ajouter - 2 pour arrondir la fin valeur et la ça fonctionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FinValeur = Chaine.IndexOf("%") - 2
    c'est dommage avec progressbar quand c'est pas lire la valeur 16.3?

  9. #9
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bizarre que les décimales te posent problèmes alors que pas chez moi ...
    Mais si maintenant ça marche tant mieux

    Pour ce qui est de représenter les décimales, ce n'est pas possible puisque la propriété Value est de type Integer mais tu peux contourner le problème :
    • Pour une décimale : Valeur à représenter (avec sa décimale) multipliée par 10 et Maximum à 1000 au lieu de 100 Ex. 16.3 ==> 163 à représenter sur une échelle de 0 à 1000
    • Pour deux décimales : Valeur à représenter (avec ses décimales) multipliée par 100 et Maximum à 10000 au lieu de 100 Ex. 16.37 ==> 1637 à représenter sur une échelle de 0 à 10000
    • ...

    Note qu'à l'écran, personne ne peut voir la différence entre 16 sur 100 et 163 sur 1000, ou 1637 sur 10000, ...

    Bonne soirée,

  10. #10
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Salut

    N'y a t il pas confusion entre substring et substr, en tout cas en Javascript:
    substring (début, fin)
    substr (début, longueur)
    Donc si tu fais ChaineValeur = Chaine.substring(DebutValeur, FinValeur), sa donne quoi ?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  11. #11
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Salut ProgElect,
    A ma connaissance, la classe String ne propose que Substring. Son deuxième argument désigne le nombre de caractères à extraire et s'il est omis, alors c'est toute la chaine située après l'indice de départ qui est extraite.
    Bonne soirée ...
    Nom : ProgressBar3.jpg
Affichages : 919
Taille : 32,4 Ko

  12. #12
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 274
    Points : 237
    Points
    237
    Par défaut
    Bonjour,
    merci à Phil Rob de m'avoir aider à mon probléme car j'ai trouver la solution à mon probléme en remplacer un point en virgule.
    Nom : progressbar.jpg
Affichages : 1004
Taille : 17,5 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Chaine As String = "[download] 16.3% et blabla ..."
     
            Dim DebutValeur As Integer = Chaine.IndexOf("]") + 2
            Dim FinValeur As Integer = Chaine.IndexOf("%")
            Dim ChaineValeur As String = Chaine.Substring(DebutValeur, FinValeur - DebutValeur)
            Dim arrondir As String = Replace(ChaineValeur, ".", ",")
            ProgressBar1.Value = arrondir
            MyProgressBar1.Value = arrondir
            Label1.Text = arrondir
    cadeau: j'ai récuperer une class progressbar intégrer text en pourcentage :
    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
    Class MyProgressBar
        Inherits ProgressBar
     
        Public Sub New()
            MyBase.New()
            Me.SetStyle((ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint), True)
        End Sub
     
        Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
            Dim rect As Rectangle = Me.ClientRectangle
            Dim g As Graphics = e.Graphics
            ProgressBarRenderer.DrawHorizontalBar(g, rect)
            rect.Inflate(0, 0)
            If (Me.Value > 0) Then
                Dim clip As Rectangle = New Rectangle(rect.X, rect.Y, CType(Math.Round(((CType(Me.Value, Single) / Me.Maximum) _
                                    * rect.Width)), Single), rect.Height)
                ProgressBarRenderer.DrawHorizontalChunks(g, clip)
            End If
            Dim text As String = (Value & " %")
            Dim f As Font = New Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold)
            Dim strSize As SizeF = g.MeasureString(text, f)
            Dim location As Point = New Point(CType(((rect.Width / 2) _
                            - (strSize.Width / 2)), Single), CType(((rect.Height / 2) _
                            - (strSize.Height / 2)), Single))
            g.DrawString(text, f, Brushes.Blue, location)
        End Sub
    End Class

  13. #13
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bravo !
    et bon dimanche ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec ProgressBar de Richfaces
    Par nawfal_saber dans le forum JSF
    Réponses: 1
    Dernier message: 30/07/2008, 13h45
  2. probleme avec ProgressBar
    Par k_boy dans le forum VC++ .NET
    Réponses: 8
    Dernier message: 15/09/2006, 17h19
  3. [Kylix] Probleme de séparateur avec Kylix2 ?
    Par jeanphy dans le forum EDI
    Réponses: 4
    Dernier message: 10/02/2003, 16h41
  4. Réponses: 12
    Dernier message: 23/10/2002, 11h56
  5. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26

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