Microsoft 365 Créer une barre de progression dans un tableau Excel

  • Initiateur de la discussion Initiateur de la discussion applefanboy13200
  • Date de début Date de début
  • Mots-clés Mots-clés
    barre

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

applefanboy13200

Guest
Bonjour,

Je viens solliciter votre aide pour savoir si quelqu'un saurait comment créer une barre de progression dans un tableau Excel (Pour être plus parlant, je vous ai joint un document Excel comprenant une barre de progression généré par l'extraction d'une plateforme).

L'idée serait qu'en rentrant le pourcentage dans la colonne de droite, la barre s'ajuste automatiquement en fonction.

Si vous avez une solution, ce serait top pour moi mais également pour toute la communauté !
 

Pièces jointes

bonsoir
je reprend l'idée de excfl mais avec un peu de vba
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r&, v&, i&, coeff&, barre As Range, t&
    If Not Intersect(Target, [B2:B15]) Is Nothing Then
        For t = 1 To Target.Count
            r = 255: v = 0
            Set barre = Target(t).Offset(, 1)
            Debug.Print Target(t).Address
            If Target(t) = "" Then barre = ""
            barre = String(Round((20 / 100) * Val(Target(t).Value * 100)), "g")
            If Len(barre) > 20 Then barre = String(20, "g")
            If Len(barre) < 1 Then barre = "g"
            'If Val(Target.Value * 100) = 0 Or IsEmpty(Target(1)) Then barre = "": Exit Sub
            barre.Font.Color = vbGreen
            For i = 1 To Len(barre.Value)
                coeff = Round(255 / 20)
                r = r - coeff: r = IIf(r < 0, 0, r)
                v = v + coeff: v = IIf(v > 255, 255, v)
                barre.Characters(Start:=i, Length:=2).Font.Color = RGB(r, v, 0)
            Next
        Next
    End If
End Sub
demo4.gif


on peut inverser les couleurs
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r&, v&, i&, coeff&, barre As Range, t&
    If Not Intersect(Target, [B2:B15]) Is Nothing Then
        For t = 1 To Target.Count
            r = 0: v = 255
            Set barre = Target(t).Offset(, 1)
            Debug.Print Target(t).Address
            If Target(t) = "" Then barre = ""
            barre = String(Round((20 / 100) * Val(Target(t).Value * 100)), "g")
            If Len(barre) > 20 Then barre = String(20, "g")
            If Len(barre) < 1 Then barre = "g"
            'If Val(Target.Value * 100) = 0 Or IsEmpty(Target(1)) Then barre = "": Exit Sub
            barre.Font.Color = vbRed
            For i = 1 To Len(barre.Value)
                coeff = Round(255 / 20)
                v = v - coeff: v = IIf(v < 0, 0, v)
                r = r + coeff: r = IIf(r > 255, 255, r)
                barre.Characters(Start:=i, Length:=2).Font.Color = RGB(r, v, 0)
            Next
        Next
    End If
End Sub
 

Pièces jointes

Dernière édition:
version 3.0
le nombre de caractères s'adapte a la largeur de cellule
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r&, v&, i&, coeff&, barre As Range, t&, nbChar&
    If Not Intersect(Target, [B2:B15]) Is Nothing Then
        For t = 1 To Target.Count
            r = 0: v = 255
            Set barre = Target(t).Offset(, 1)
            barre.Font.Size = 6
            nbChar& = Round(barre.ColumnWidth - 2)
            Debug.Print Target(t).Address
            If Target(t) = "" Then barre = ""
            barre = String(Round((nbChar / 100) * Val(Target(t).Value * 100)), "g")
            If Len(barre) > 20 Then barre = String(20, "g")
            If Len(barre) < 1 Then barre = "g"
            'If Val(Target.Value * 100) = 0 Or IsEmpty(Target(1)) Then barre = "": Exit Sub
            barre.Font.Color = vbRed
            For i = 1 To Len(barre.Value)
                coeff = Round(255 / nbChar)
                v = v - coeff: v = IIf(v < 0, 0, v)
                r = r + coeff: r = IIf(r > 255, 255, r)
                barre.Characters(Start:=i, Length:=2).Font.Color = RGB(r, v, 0)
            Next
        Next
    End If
End Sub

correction coquille (20 codé en dur)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r&, v&, i&, coeff&, barre As Range, t&, nbChar&
    If Not Intersect(Target, [B2:B15]) Is Nothing Then
        For t = 1 To Target.Count
            r = 0: v = 255
            Set barre = Target(t).Offset(, 1)
            barre.Font.Size = 6
            nbChar& = Round(barre.ColumnWidth - 2)
            Debug.Print Target(t).Address
            If Target(t) = "" Then barre = ""
            barre = String(Round((nbChar / 100) * Val(Target(t).Value * 100)), "g")
            If Len(barre) > nbChar Then barre = String(nbChar, "g")
            If Len(barre) < 1 Then barre = "g"
            'If Val(Target.Value * 100) = 0 Or IsEmpty(Target(1)) Then barre = "": Exit Sub
            barre.Font.Color = vbRed
            For i = 1 To Len(barre.Value)
                coeff = Round(255 / nbChar)
                v = v - coeff: v = IIf(v < 0, 0, v)
                r = r + coeff: r = IIf(r > 255, 255, r)
                barre.Characters(Start:=i, Length:=2).Font.Color = RGB(r, v, 0)
            Next
        Next
    End If
End Sub
demo4.gif
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
385
Retour