Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

optimisé le code d'une barre d'évolution

  • Initiateur de la discussion Initiateur de la discussion gunm
  • Date de début Date de début

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 !

G

gunm

Guest
Bonjour,
je suis débutant dans le domaine mais j'aimerais créé une barre dévolution.
j'ai réussi à en créé une le problème est que le code que j'ai effectuer me parait long. Je ne maitrise pas les boucles...

je partage mon fichier pour qu'on puisse voir mon code.

Ma barre d'évolution se fait bien sur 2 ligne et j'ai besoin de remettre la case en blanc au cas ou je changerais la valeur de mon "nb"
Etant donner que je fait toujours plus un a chaque fois je me dis qu'il doit exister une boucle spécifique.
Cependant ma barre d'évolution s'arrète volontairement a 10. Si mon chiffre est supérieur à 10, mon "nb" sera rouge.

Merci de vos suggestions 🙂
 

Pièces jointes

Re : optimisé le code d'une barre d'évolution

Bonsoir,

je te propose ainsi :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A4" Then
  If Target > 10 Then Range("C4:G5").Interior.Color = vbYellow: Exit Sub
  Range("C4:G5").Interior.Color = vbWhite
  If Target < 1 Then Exit Sub
  For t = 1 To Target.Value
    Range("C4:G5").Cells(t).Interior.Color = vbYellow
  Next t
End If
End Sub

Pas besoin d'appuyer sur un bouton, la zone se colorie dès que tu changes la valeur en A4. Cf. fichier joint
 

Pièces jointes

Re : optimisé le code d'une barre d'évolution

ha oui effectivement le code est beaucoup beaucoup plus court et plus simple

Merci pour cette réponse rapide !
 
Re : optimisé le code d'une barre d'évolution

Re,

sinon, tu peux aisément modifier un rectangle jaune dont la taille varierait proportionnellement à celle de ta cellule A4. Cf. exemple ci joint.
Le code est :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A4" Then
  With ActiveSheet.Shapes("Rectangle 1")
    .Height = Range("C9").Height
    .Width = Range("C9:G9").Width * Application.Min(1, Target / 10)
    .Top = Range("C9").Top
    .Left = Range("C9").Left
  End With
End If
End Sub
 

Pièces jointes

Re : optimisé le code d'une barre d'évolution

re,
sinon comment faire si ma case "A4" est une formule ? du style recherche ou somme ?
j'ai essayer de remplacer le "A4" par une variable exemple "nb".
nb= val(range("a4")
et si je veux remplir de manière à l'envers ? de remplir de gauche à droite, et de bas en haut? j'ai essayer de changer la code au niveau du code " for" mais ca ne donne rien de cohérent.

merci
cdt
 
Re : optimisé le code d'une barre d'évolution

Re,

En effet dans ce cas, le changement ne survient pas sur la cellule A4, mais sur celles dont elle dépend
Par exemple, si la formule en A4 est : =SOMME(A5:A8)

Il faut alors modifier la macro ainsi :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A5:A8")) Is Nothing Then
  If Range("A4") > 10 Then Range("C4:G5").Interior.Color = vbYellow
  Range("C4:G5").Interior.Color = vbWhite
  If Range("A4") < 1 Then Exit Sub
  For t = 1 To Range("A4")
    Range("C4:G5").Cells(t).Interior.Color = vbYellow
  Next t
end Sub

ou par changement de la taille d'un rectangle jaune :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A5:A8")) Is Nothing Then
  With ActiveSheet.Shapes("Rectangle 1")
    .Height = Range("C9").Height
    .Width = Range("C9:G9").Width * Application.Min(1, Range("A4") / 10)
    .Top = Range("C9").Top
    .Left = Range("C9").Left
  End With
End If
End Sub

Vois l'exemple joint
 

Pièces jointes

Re : optimisé le code d'une barre d'évolution

re, j'ai de nouveau un soucis avec le code :/

En feuille 1 il y a le code qui fonctionne, et en feuille 3 j'ai essayer de le reproduire mais je suis confronter à un problème d'étiquette.
Pourtant je ne fait que changer les valeurs cibles. Je n'arrive pas à comprendre mon erreur

merci
 

Pièces jointes

- 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

C
Réponses
7
Affichages
1 K
codebarre
C
T
Réponses
3
Affichages
3 K
L
Réponses
1
Affichages
1 K
Réponses
13
Affichages
2 K
Réponses
5
Affichages
825
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…