Salut,
tout est dans la question j'aurai voulu savoir d'une part si c'était possible et d'autre part comment s'y prendre.
Merci
Salut,
tout est dans la question j'aurai voulu savoir d'une part si c'était possible et d'autre part comment s'y prendre.
Merci
Di tu es dans un userform (?) tu peux faire ça avec un double rectangle
Le premier fait la longueur total, l'autre, le curseur, d'une autre couleur, est un pourcentage de la première calculé selon le nombre d'opérations que tu vas faire.
Ex : Tu veux insérer 25 fichiers, la barre principale fait 1000px, 1 fichier = 1000/25 = 40px
Donc pour chaque fichier inséré, tu ajoutes 40px à la longeur de ton "curseur" et tu règles sa largeur (width)
Ça, c'est l'idée. Maintenant, si tu veux du code, tu dis, je rechercherai.
A+
[]Bonjour,
Tu places un contrôle Frame sur ton UserForm et l'intérieur du Frame tu mets un contrôle Label, ensuite tu mets ce code.[/]
jpleroisse
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 Private Sub UserForm_Activate() Call Main UserForm_Initialize End Sub Private Sub UserForm_Initialize() Me.Height = 76.5 Me.Width = 205 Me.Caption = "Entrées de nombres aléatoires" Frame1.Caption = "0%" Frame1.Top = 19.5 Frame1.Height = 28 Frame1.Width = 195 Frame1.Left = 3 Label1.Caption = "" Label1.BackColor = &HFF& Label1.Height = 13 Label1.Width = 20 Label1.Top = 5 End Sub 'Ensuite dans un Module. Sub Main() ' Insère des nombres aléatoires dans la feuille de calcul active Dim Counter As Integer Dim RowMax As Integer, ColMax As Integer Dim r As Integer, c As Integer Dim PctDone As Single If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub Cells.Clear Counter = 1 RowMax = 200 ColMax = 10 For r = 1 To RowMax For c = 1 To ColMax Cells(r, c) = Int(Rnd * 1000) Counter = Counter + 1 Next c PctDone = Counter / (RowMax * ColMax) Call UpdateProgress(PctDone) Next r Unload UserForm1 End Sub Sub UpdateProgress(Pct) With UserForm1 .Frame1.Caption = Format(Pct, "0%") .Label1.Width = Pct * (.Frame1.Width - 10) .Repaint End With End Sub Sub Test() UserForm1.Show End Sub
Moi aussi, j'ai ça... Où Règle est un label qui tient la longueur de ta barre de progression, Curseur est un label (qui grandit) superposé au précédent, Aperçu un userform
C'est simpliste ? C'est tout ce que j'aime...
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 Sub ActionRépétitive() 'ta boucle où tu fais ce que tu veux... Dim Nbredefois, UnitéDeLongueur, i 'etc Nbredefois = NombreDeFoisOùTuFaisCeQueTuVeux UnitéDeLongueur = int (Règle.width / Nbredefois) For i = 1 to Nbredefois insertion(UnitéDeLongueur) Next i end sub Sub insertion(UnitéDeLongueur) Curseur.Visible = False LongueurCurseur = Aperçus.Curseur.Width + UnitéDeLongueur Aperçus.Curseur.Width = LongueurCurseur r = DoEvents Curseur.Visible = True End Sub![]()
A+
Merci à vous deux j'essaye et je vous tiens au courant![]()
Je dois mettre un PS : Si tu as un trop grand nombre de passages dans ta boucle (Nbredefois) tu devras modifier le int(...) et conserver un ou deux chiffres après la virgule
Au lieu de "UnitéDeLongueur = int (Règle.width / Nbredefois)", pour deux chiffres après la virgule, tu fais :
Déclare UnitéDeLongueur as double
Code : Sélectionner tout - Visualiser dans une fenêtre à part UnitéDeLongueur = CDbl(Format((Règle.width / Nbredefois ),"###0.00"))
A+
J'attends !Merci à vous deux j'essaye et je vous tiens au courant![]()
![]()
Salut
Je dois d'abord dire que j'ai chez moi Office 97 (donc VBA 5) et VB6 d'installé sur mon ordi. Ce que j'ai donc trouvé ne fonctionnera peut-être pas chez toi. Sauf si tu as des versions plus récentes...
Tu dois d'abord ajouter un composant ProgressBar. Clique du bouton droit sur la palette d'outils dans l'éditeur VBA et choisis l'item Contrôles supplémentaires (à moins que ça soit Composants) dans le menu contextuel. Cherche Microsoft ProgressBar Control (version 5 ou 6...) et sélectionne le. Confirme ton choix en cliquant sur OK".
Après avoir placé un ProgressBar dans ton UserForm...
J'ai fait ce petit test (avec un petit Sleep, pour avoir le temps d'y voir quelque chose):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub CommandButton1_Click() Dim i As Integer For i = ProgressBar1.Min To ProgressBar1.Max Sleep (50) 'pour voir quelque chose ProgressBar1.Value = i Next i End Sub
- Pour les nouveaux : Mode d'emploi et aide aux nouveaux
- et impérativement les règles du forum. Histoire de garder une ambiance amicale.
- Noubliez pas les balises de Code pour vos listings : bouton # de l'éditeur. Et n'oubliez pas non plus de bouton
- Cours Excel - FAQ Excel - Forum Excel - Cours VBA - Cours complet VBA Excel
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager