[VBA] Userform.Show n'affiche rien

  • Initiateur de la discussion Initiateur de la discussion MaitrePoul
  • 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 !

M

MaitrePoul

Guest
Bonsoir à tous,

J'ai un problème très étrange, j'utilise une userform pour afficher une barre de progression.
J'appelle dans mon programme grâce à UserForm.Show et
dans le code de la userform j'utilise :
Private Sub UserForm_Initialize()
Pour mettre toutes les instructions et qu'elles soient lancées immédiatement.

Mon problème assez bizarre est que la fenêtre de la barre de progression ne s'affiche qu'a la fin du calcul et donc qu'a la fin de Private Sub UserForm_Initialize() et que donc la barre est à 100%.
Pourtant, normalement dès que j'utilise le .Show la fenêtre devrait s'ouvrir.. Mais ce n'est pas le cas elle s'affiche que lorsque la procédure est terminée.
Lors de l'execution ligne par ligne avec F8 une fois arrivé à la ligne UserForm.Show la fenêtre ne s'ouvre pas et pourtant le calcul commence... Et pouf la fenêtre s'affiche à la fin (à la ligne End Sub)

Avez-vous une idée ?
Merci d'avance
 
Re : [VBA] Userform.Show n'affiche rien

Bonsoir.
Utilisez plutôt ma barre de progression: Les calculs se font à l'extérieur de l'uf. Il faut exécuter Tâche "un titre", NombrDePassagePrévus juste avant la boucle et après chaque passage dans celle ci exécuter OùÇaEnEst
Cordialement.
 

Pièces jointes

Re : [VBA] Userform.Show n'affiche rien

Alors le code de la l'userform donne :
Code:
Private Sub UserForm_Initialize()

    Sheets("Projects").Select
    Application.ScreenUpdating = False
    Me.Height = 72
    
    Dim compteur As Double, progression As Double
    
    compteur = 0
    progression = 0
    
    Dim dossier As String, fic As String, anciencode As String, nouveaucode As String, designation As String, I As Integer, j As Integer
    Dim pointeur As Integer, Cellule As String
    
    dossier = Worksheets("INI").Range("B6").Value
    fic = Worksheets("INI").Range("B5").Value
    
    I = 2
    
    Sheets("Projects").Unprotect ("mdp")
    
    pointeur = 2
    Cellule = "lol"
    Do Until Cellule = ""
        pointeur = pointeur + 1
        Cellule = Cells(pointeur, 2)
    Loop
    

    Do Until ExecuteExcel4Macro("'" & dossier & "\[" & fic & "]Project list'!R" & I & "C2") = "0"
            
        j = 2
        compteur = compteur + 1
        designation = ExecuteExcel4Macro("'" & dossier & "\[" & fic & "]Project list'!R" & I & "C3")
        
        Do Until designation = Cells(j, 3) Or j = pointeur
                j = j + 1
        Loop
        
        If designation = Cells(j, 3) Then
                        ........
        End If
        
        If j = pointeur Then
                        .......
        End If
        
        I = I + 2
       

            progression = progression + 1
            Image_barre.Width = progression * 1.5
            Label_barre.Caption = progression & "%"
            DoEvents

    
            UserForm.Repaint
    Loop
        
    Sheets("Projects").Protect Password:="mdp", DrawingObjects:=True, Contents:=True, Scenarios:=True
    
    Application.ScreenUpdating = True
    Me.Height = 95
    
End Sub

Et dans le ThisWorkbook :
Code:
Private Sub Workbook_Open()
......
......
......
UserForm.Show
......
......
......
End Sub

Tout ce qui est dans Workbook_Open se fait très bien au moment de l'appel de la userform le code s'execute bien mais n'affiche la userform que à la dernière ligne (End Sub) du code de celle-ci, puis lorsque l'on ferme la userform le code du workbook_open reprend bien.
Tout fonctionne sauf l'affichage de la userform...

Merci pour votre aide
 
Re : [VBA] Userform.Show n'affiche rien

Bonjour

Quand VBA lit userform1.Show, il lance automatiquement userform_initialize et exécute l'ensemble des instructions contenues dans cette macro avant d'afficher le formulaire. C'est le fonctionnement standard et obligatoire d'excel.
Les instructions du userform_initialize sont en effet indispensables à excel pour savoir ce qu'il doit mettre dans le formulaire ! Le "problème" décrit n'en n'est donc pas un mais le fonctionnement normal.

Les instructions qui figurent dans le code du userform_initialize doivent être restreintes à ce dont excel a besoin avant d'afficher le formulaire. Tout le reste doit être mis ailleurs. En particulier tout ce qui fait des calculs sur la feuille.
Dans cette macro particulière on met par exemple les instructions nécessaires pour définir les valeurs qui apparaissent dans les listes, les valeurs par défaut des textbox, ...

dans le cas présent, si il s'agit seulement de faire une barre de progression, il faut utiliser la solution proposée par Dranreb ou bien une des nombreuses solutions présentes ici
Recherche | www.excelabo.net
 
Re : [VBA] Userform.Show n'affiche rien

bonjour tous 🙂
essai de mettre ton code dans activate et non dans initialize??

sans Application.ScreenUpdating = False

quoi que la ligne ci dessus pas sur vu qui y a repaint..il faudrat tester
 
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

  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
520
K
Réponses
12
Affichages
2 K
X
  • Question Question
Réponses
4
Affichages
2 K
Xplor
X
D
Réponses
8
Affichages
2 K
Réponses
1
Affichages
1 K
A
Réponses
17
Affichages
3 K
Ananas94
A
K
Réponses
6
Affichages
5 K
Katou1604
K
Réponses
22
Affichages
5 K
J
Réponses
4
Affichages
1 K
Jess5913
J
N
  • Question Question
Réponses
5
Affichages
3 K
Retour