[VBA] Userform.Show n'affiche rien

MaitrePoul

XLDnaute Nouveau
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
 

Dranreb

XLDnaute Barbatruc
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

  • ExUfBarrAv.xls
    86.5 KB · Affichages: 133
  • ExUfBarrAv.xls
    86.5 KB · Affichages: 130
  • ExUfBarrAv.xls
    86.5 KB · Affichages: 136

MaitrePoul

XLDnaute Nouveau
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
 

Misange

XLDnaute Barbatruc
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
 

laetitia90

XLDnaute Barbatruc
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:

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 097
Membres
103 116
dernier inscrit
kutobi87