[RESOLU] Ma progressbar de chargement ne fonctionne pas

scoubidou35

XLDnaute Occasionnel
Bonjour à tous,
J'aurai besoin d'aide car là c'est nouveau pour moi. J'aimerai qu'après avoir entré mon identifiant et mon mot de passe et qu'au moment du click sur le bouton LOGIN soit qu'une progressbar apparaissent en bas de l'écran avec l'évolution du chargement jusqu'à la Feuille "Sommaire". Soit une fenêtre avec une barre de chargement s'affiche pour montrer l'évolution du chargement du fichier.
J'ai besoin de votre aide car je ne maitrise pas du tout les userforms.
Je suis disponible pour toutes questions supplémentaires.
A+
Merci
 

Fichiers joints

scoubidou35

XLDnaute Occasionnel
Bonjour,
Tout d'abord je tenais à vous souhaiter une bonne et heureuse année 2019.

Ensuite, j'ai avancé dans le projet en m'aidant de ce que j'ai pu trouvé sur internet.
J'ai créer un userform avec une progressbar et dans la feuille LOGIN j'ai mis progress.show
Mais quand je démarre le fichier je rentre l'identifiant et le password par exemple admin et 1234 et quand je clique sur le bouton LOGIN.
J'ai bien l'userform qui s'ouvre puis rien et si je click sur la petite croix en haut à droite de l'userform j' arrive sur la bonne page "Sommaire". mais la barre de progress reste vide et je ne comprends pas ce que je fais de mal. C'est la première fois que je fais cela.
Je me tiens dispo pour tous renseignements si besoins
Merci
A+
 

Fichiers joints

herve62

XLDnaute Barbatruc
Bonjour
Il y a maintenant un truc tout simple pour cela
j'ai avancé dans le projet en m'aidant de ce que j'ai pu trouvé sur internet.
J'ai fait pareil mais je pense avoir trouvé mieux et plus simple, ce qui m'a aidé pour adapter dans ton fichier , qui n'est qu'un exemple "bidon" juste pour montrer le principe
1) dans ton usf , afficher la boite à outils
2) clic droit > controles complémentaire> rechercher dans la liste "Microsoft progressbar v 6...." > cocher
3 )tu peux dessiner ta barre > propriétés > SCrolling : tu choisis Standard ou Smooth ( mon choix ici)
Il faut maintenant l'alimenter mais avec sub DANS l'usf là il se trouve en "activate"
A mon avis , tu transferts code LOGIN dans l'usf
J'ai fait vite et ne sait pas à quel événement tu veux faire la progression
J'ai aussi , pour facilité, mis en commentaires les hide de tes feuilles ( workbook open , et dans la sub Login)
 

Fichiers joints

scoubidou35

XLDnaute Occasionnel
Bonjour herve62
Merci pour ton aide.
J'ai suivi tes conseils et maintenant j'ai retranscrit le code dans le fichier mère .
J'ai bien l'ouverture de l'UserForm après avoir
à l'écran la progressbar est active en quand elle est à 100%
j'ai l'écran qui saut à cause de la boucle
J'ai donc pas réussi à intégrer la boucle dans le code de USF.

je n'arrive pas à trouver le code à mettre pour paramétrer la boucle dans USF

La boucle se trouve dans LOGIN

col = .Cells(1, .Cells.Columns.Count) .End(xlToLeft) .Column
lig = .Columns(1) .Cells. Find (txt_user, LookAt := xlWhole) .Row

For i = 3 To col
If Ucase (.Cells(lig, i)) = "X" then
sheets(.Cells(1, i).Value).Visible = true
else
sheets(.Cells(1, i).Value).Visible = 2
End if
Next i

Merci
A+
 

scoubidou35

XLDnaute Occasionnel
Bon j'ai essayé d'intégrer la boucle mais ça ne fonctionne toujours pas. Je ne comprends toujours pas.
Quand je fais F8 pour voir l'ordre de la procédure, çà me semble correcte mais quand je lance le code je n'obtiens rien ou alors j'obtiens un cycle interminable qui plante le code.
Si un pro peu m'aider car là je ne sais plus quoi faire :-(
A+
 

Fichiers joints

herve62

XLDnaute Barbatruc
Bonsoir
Désolé , mais émission foot spécial champion du Monde !!! pas le temps faire VBA
Je regarde demain , c'est bien ce que tu fais avec F8 ! si ça va pas , ajoute des "espions intermédiaires"
pour visualiser toutes les valeurs , tu vas tomber sur le Hic !! c'est ma méthode et surement celle des autres!
Il faut juste que ta progressbar.value s'incrémente d'une valeur % des 100%
ex : si la boucle d'événement fait 1000 il faut répartir en 1/100 cela fera avancer ton échelle par 10
en fait il faut mettre un prorata entre la boucle et la barre
 

herve62

XLDnaute Barbatruc
Au cas ou tu regardes avant moi ce jeudi !! c'est là que ça pêche
Code:
Private Sub UserForm_Activate()
Me.ProgressBar2.Value = 0
i = 2
TotalRows = col * lig ' Application.CountA(Range("A:A"))

Do While i <= TotalRows
Repasse avec F8 ( pas à pas) et tu verras que Totalrows=0 donc ça va pas !!
d'ou vient lig ? col ? du code dans LOGIN , et bien il faut le remettre ici !
Que veux tu faire pendant la progression de la barre ??
Là est la question .... et la solution
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir
À mon avis ce n'est pas une barre de progression qu'il vous faudrait, mais un code un peu moins idiot qui ne cherche plus cinquante fois txt_user dans la colonne A. Une seule fois ça suffit.
Un peu ce genre là :
VB:
Option Explicit

Private Sub CommandButton1_Click()
Dim Rng As Range, T(), L As Long, C As Long
Set Rng = Worksheets("MEMBERS").UsedRange
On Error Resume Next
L = WorksheetFunction.Match(txt_user, Rng.Columns("A"), 0)
On Error GoTo 0
T = Rng.Value
If L > 1 And Txt_passe.Text = CStr(T(L, 2)) Then  
   For C = 6 To UBound(T, 2)
      Worksheets(T(1, C)).Visible = IIf(IsEmpty(T(L, C)), xlSheetVeryHidden, xlSheetVisible)
      Next C
   Sheets("SOMMAIRE").Activate
   ActiveSheet.Cells(3, "F").Value = "Bonjour " & T(L, 5) & " " & T(L, 4) & " "
   ' etc.
Else
   MsgBox "L'utilisateur ou le mot de passe est incorrect", vbExclamation, "INFORMATION GESTRIALS"
   End If
End Sub
 
Dernière édition:

herve62

XLDnaute Barbatruc
Bonjour tous
merci Dranreb , tu m'as bien maché le boulot
Là j'ai repris vite fait ta sub pour l'adapter à notre ami Scoubidou
Restera encore à ajuster , espérons que le "joujou" lui plaise
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Boujour.
Mais à quoi ça sert ?
Réécrit comme ça, ça ne va plus se trainer lamentablement au point qu'il faille une barre de progression pour faire patienter, c'est quasi immédiat !
 

scoubidou35

XLDnaute Occasionnel
Bonjour à tous,

Un grand merci à Dranreb et herve62 pour votre aide
j'ai testé le code
j'ai un petit problème car en fait le formulaire de connection LOGIN ne se remet pas à zéro. Quand on quitte la session et qu'on redémarre excel le nom et mot de passe du dernier utilisateur sont affiché. J'ai essayé en rajoutant:
Nuser = ""
code = ""
à la fin du code mais rien.
Sinon est il possible d'avoir des explications sur le code (je sais je suis chiant) pour que le comprendre car je vous avoue que je n'aurai pas pu trouver ce code.
Enfin, j'avais dans mon code une partie pour la diffusion de message d'alerte en fonction du role et de l'ouverture du fichier en lecture seul sous conditions qui ont disparue.
Faut il les remettre dans LOGIN ou les insérer dans le code de l'UsF.

Je vous remercie encore pour votre aide précieuse et je désolé pour Dranreb si mon code est "idiot" mais je ne suis novice et je suis lien de tout connaitre en VBA. C'est un milieu tout nouveau pour moi mais je suis très motivé pour apprendre. Ce que je fait graces à vous tous et à internet.

Merci.
A+
 

Dranreb

XLDnaute Barbatruc
Qu'est-ce que vous ne comprenez pas ?
Édition, je sais que je n'ai pas tout refait, c'est pour ça que j'ai mis ' etc. là où il faut adapter à l'avenant le reste.
Vous voyez que vous avez tout ce qu'il vous faut dans le tableau dynamique T: les titres en ligne 1 et les infos user en ligne L
Attention j'ai commis une faute e mettant If L > 1 And Txt_passe.Text = CStr(T(L, 2))
parce que ça va planter si l'user n'existe pas dans la liste
Il vaut mieux
If L<2 then
Msgbox "User inexistant"
ElseIf Txt_passe.Text <> CStr(T(L, 2)) then
Msgbox "Mot de passe incorrect"
Else
et la suite.
 
Dernière édition:

herve62

XLDnaute Barbatruc
Pour RAZ immédiat dans login , va en mode "création" pour tes 2 box > clic droit propriétés > value et tu supprimes
Pour la suite mettre dans commande_button :
code = Txt_passe.Value
Nuser = txt_user.Value
Txt_passe.Value = ""
txt_user.Value = ""
Progress.Show
Sinon , le progressbar te va ? , il est très court c'est vrai , mais à l'encontre de DRANREB je respecte tes souhaits , je ne juge pas !!
d'autres ont demandé des "Cellules clignotantes" !!!! tant de gadgets !! ici on fait ... dans la mesure du possible
Pour le reste du code , oui il faut le re insérer dans l'USF , une partie au début de la sub ( les infos : nom , prenom ...) et à la fin pour la sub "alerte"
Là j'ai pas le temps .. ce soir ou demain
 

scoubidou35

XLDnaute Occasionnel
Merci herve62, merci pour le temps que tu passes sur mon projet.
c'est exactement ce que je veux :-D

J'ai retranscris ton code dans mon fichier et j'ai autre bug qui s'affiche
Quand je rentre admin et 1234 j'ai l'UsF qui fonctionne puis un message erreur "invalid property value" et quand je clic sur déboguage le code Me.Progressbar2.Value = p * 15 est surligné en jaune (je ne comprends pas car avec le fichier demo ca fonctionne).
si tu rentres les identifiants suivant sp et sp99 tu as un autre message d'erreur que l'on retrouve sur le fichier joints
je ne sais pas si c'est la cause mais j'ai un grand nombre d'onglets!!! et qui augmente régulièrement.
Merci encore pour l'aide
 

Fichiers joints

herve62

XLDnaute Barbatruc
Bonsoir
Tu n'as pas suivi ce que j'ai dis !!
Reprend ce fichier pour la suite , tout fonctionne , la progressBar est pile à 100% à la fin
en fait il faut aller de 0 à 100 en .value si sup > erreur
Maintenant essaye de remettre ton bout de code manquant pour l'alerte
Je reegarderai demain
 

Fichiers joints

scoubidou35

XLDnaute Occasionnel
Bonsoir herve62
Je ne comprends pas quand tu dis que je n'ai pas "suivi ce que tu as dis"
concernant la progress bar j'ai les même paramètres que dans le fichier et les même codes
concernant les 2 box j'ai bien enlevé les données dans value.
je viens de tout juste d'effectuer les modif que tu as apporté sur le code
j'ai exactement le même code avec les même paramètres et ca bug quand je rentre admin 1234 sur le fichier mère
sinon pour si tu test avec le compte user = sp et wpass = sp99
tu auras le même message d'erreur que j'ai ici pour tous les comptes utilisateurs.
Je mettrai les codes d'alertes demain.
Bonne soirée
A+
 

scoubidou35

XLDnaute Occasionnel
Bonjour herve62
Bon, je viens de finir et après avoir réalisé plusieurs essais, ca a l'air de fonctionner.

J'ai mis des annotations pour m'aider à comprendre le code et pour signaler quand j'ai observé un problème ou quand j'ai une question.
Merci
A+
 

Fichiers joints

Discussions similaires


Haut Bas