Paramétrer le nom d'une Progress Bar sous Excel 2003

Signaler
Messages postés
1
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
12 décembre 2007
-
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
-
Bonjour à tous,

Je pratique le VBA sous Excel 2003 depuis quelques mois seulement et je m'exalte devant les possibilités ouvertes par les communications, incrémentations et autres opérations entres ces deux logiciel.
Mais aujourd'hui j'ai découvert un truc que j'arrive pas à faire ou alors ma méthode est mauvaise
(Ca doit être ca...)

J'expose mon problème:
J'ai une feuille excel avec 200 lignes de suivi de pièces
Je récupère un pourcentage en Colonne "DV" à partir de la Ligne "4"

J'ai 1 ProgressBar devant chaque ligne (soit 200 ProgressBar) qui doivent afficher cette valeur de pourcentage

A chaque action sur la ligne qui fait augmenter le pourcentage, je veux actualiser la ProgressBar.

J'arrive à le faire pour la première ligne avec le sub suivant:

    Private Sub PB()
        ' Je récupère la valeur de la ligne active (en l'occurence 4 pour la première ligne
          remplie)
        Dim i As Integer
        i = ActiveCell.Row

       

' A la ligne 4 j'ai une Progressbar de nom PRB1 (Name) qui prend la valeur de mon
          pourcentage en Range("DV4")



        PRB1.Value = Range("DV" & i).Value
    End Sub

Cela marche parfaitement dès que je modifie une valeur qui joue sur mon pourcentage, la ProgressBar augmente

Problème:
Comment paramétrer (ou variabiliser) le nom de ma ProgressBar (le 1 derrière PRB) pour que cela fonctionne pour chaque ligne (eh oueh j'en ai 200 quand même et ca me relou un peu de me tapper 200 sub)
J'ai essayé pas mal de trucs et chercher et fouiller sur le net et dans les bouquins mais je n'ai rien trouvé.

J'ai essayé un truc du genre (puis plein d'autre avec des OleObjects et .Name et j'en passe)




    Private Sub PB()

       
        Dim i As Integer

        i = ActiveCell.Row

        ' J'affecte j = i - 3 pour que la ProgressBar PRB1 correspondent à la ligne 4 ou elle se
          trouve

        Dim j as integer
        j = i - 3    


       




PRB(j).Value = Range("DV" & i).Value
    End Sub





En clair ce que je veux c'est quand:    ligne 4> PRB1.value = Range("DV4").value





    ligne 5> PRB2.value = Range("DV5").value
    ...
    ..
    .


        ligne 203> PRB200.value = Range("DV203").value

Est ce que cela est assez clair? Quelqu'un aurais t'il une réponse?

1 réponse

Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
bonjour

Excuses-moi d'intervenir car je ne suis pas expert dans ce domaine précis, mais si cela peux te servir, inspires  toi du  code suivant que je viens de découvrir : je l'ai parcouru et il me semble répondre à ton problème suppression de tous les controles (checkbox : dans le cas présent ce sera des ProgressBar) et réallocation avec les valeurs ensuites mises à jour et le code utilise bien la collection OleObjects

Donb à voir :
http://www.dailydoseofexcel.com/archives/2004/10/06/adding-activex-controls-to-worksheet-in-vba/