IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Feuille modale


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut [VBA-E] Feuille modale
    Hello,

    je tente de créer une barre de progression pour montrer l'avancement de la conversion de fichiers texte en fichiers excel. Lorsque je clique sur le bouton permettant de convertir, ma barre s'affiche.
    (j'essaie d'adapter un exemple de progressbar qui fonctionne que j'ai à mon cas....)

    puis un fois la barre affichée, rien ne se passe. La barre est dans un userform, elle est composée d'une frame sur laquelle un label est censé s'etirer pour materialiser la progression. Or je pense que le probleme vien du fait que mon bouton qui lance la macro de conversion se trouve lui aussi sur un userform.

    j'affiche ma progressbar comme ca (dans le debut de ma procedure qui convertit) :

    puis le code n'a plus l'air d'avancer... (rien ne se convertit, excel n'utilise pas le processeur alors que normalement il utilise 100% lors de la conversion). Je clique donc sur ma barre pour la fermer (fermer le userform Barre) et j'ai une erreur à la ligne suivante :

    qui se trouve à la fin de mon code de conversion (toujours dans le meme module, à la fin).

    l'erreur qu'il me donne est la suivante

    "Vous devez d'abord fermer ou masquer la feuille modale en premier plan"

    Je comprends pas de trop mais à mon avis le probleme vient du fait que j'ai deja mon userform qui contient le bouton sur lequel je clic d'ouvert.

    Une ptite idée?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Oops

    en fait tout est dans l'aide mais je suis passé à coté... je devais cacher mon userform qui conteint le bouton avant de cacher ma progressbar puis je réaffiche mon userform qui contient le bouton


    EDIT :

    par contre le code de ma macro ne s'effectue toujours pas... j'ai ma barre qui s'affiche, je dois cliquer pour la fermer puis le code s'execute mais je ne revoit biensur plus ma barre...
    Comment dois-je m'y prendre? Je dois cacher ma barre, faire avancer ma conversion (je converti 1 fichier parmi mes 40) puis je reaffiche ma barre etc... ?

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello Elstak, je passais par là...
    Un peu de code, peut-être...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Oui mais que mettre...
    bon voilà :

    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
    Barre.Show
    
    Application.ScreenUpdating = False
    
    Worksheets("noms1").Visible = True
    Worksheets("noms1").Select
    Set MaPlage = Worksheets("noms1").Range("A1").CurrentRegion
    
    For iLigne = 1 To MaPlage.End(xlDown).Row
        If (MaPlage.Cells(iLigne, 4) <> "") Then
            NomFichier = MaPlage.Cells(iLigne, 1) & _
            Format(NumeroSemaineDerniere + MaPlage.Cells(iLigne, 2), "0000") & _
            MaPlage.Cells(iLigne, 5).Value
            NomFichierExcel = MaPlage.Cells(iLigne, 4) & " SEM " & NumeroSemaineDerniere
            'si le fichier texte existe
            If Len(Dir(Chemin & "\" & NomFichier & ".txt")) <> 0 Then
                'si il n'a pas encore été converti
                If (Len(Dir(Chemin & "\" & NomFichierExcel & ".xls"))) = 0 Then
                    'on le convertit
                    Call Importation_Convertion(Chemin & "\" & NomFichier & ".txt")
                    Call Exportation(Chemin, NomFichierExcel)
                    NbConvert = NbConvert + 1
                End If
            Else
                'on l'inscrit en erreur
                MenuGeneral.ListeErreur.AddItem Chemin & "\" & NomFichier & ".txt"
            End If
        End If
    Next
    
    MenuGeneral.Label3.Caption = "Liste des fichiers qui n'ont pas pu etre convertis (car ils sont introuvables) :"
    MenuGeneral.Label4.Caption = "Nombre de fichiers convertis : " & NbConvert
    MenuGeneral.MultiPage1.Value = 1
    Worksheets("noms1").Visible = False
    Application.ScreenUpdating = True
    
    MenuGeneral.Hide
    Barre.Hide
    MenuGeneral.Show

    le code qui n'est pas en rouge etait là avant mes modifs et fonctionne. là c'est un peu du nimporte quoi ce que j'ai rajouté mais je sais pas trop comment m'y prendre. Pour le moment j'ai juste essayé de faire apparaitre le barre en debut de code puis de la faire disparaitre à la fin. Mais là ma barre s'affiche, je dois la ferme manuellement puis le code s'execute...

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello,
    Déjà, j'ignorait qu'il existât un progressbar en VBA (!)
    Donc, quand j'en ai besoin, j'utilise deux labels supperposés de couleurs différentes, le premier d'une longueur fixe voulue, le second (le curseur) d'une longueur nulle au départ. Ensuite, je règle le "pas" du "curseur" = à la longueur du premier divisée par le nombre d'opérations (ici le nombre de fichiers à ouvrir)
    Enfin, pour chaque fichier ouvert, j'allonge le curseur d'un "pas"
    Je crois que j'utilise DoEvents pour laisser le temps au "curseur" de s'afficher mais n'en suis pas sûr.
    Maintenant, pour la progressbar, tu me dis où tu la trouves parce que même sur VBA 2003 je ne l'ai pas
    A+

    Edit
    Tu as ces explications dans plusieurs réponses sur le forum à Progressbar

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Hop,

    tu t'ennuye pendant tes vacances?

    J'utilise aussi un truc semblable au tiens petit dodo !
    C'est une frame sur laquelle se trouve un label qui s'allonge...

    le code permettant l'alongement est là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub UpdateProgress(Pct)
     
    PctColor = 255 - Round(255 * Pct, 0)
     
        With UserForm1
            .FrameProgress.Caption = Format(Pct, "0%")
            .LabelProgress.Width = Pct * (.FrameProgress.Width - 10)
            .LabelProgress.BackColor = RGB(0, PctColor / 3, PctColor)
            .Repaint
        End With
    End Sub
    là j'essayais juste d'afficher ma Barre (qui est un userform) à l'avancement 0 puis de la cacher sans encore essayer de l'allonger mais deja là ca coince...

    Ok pour le do event mais moi mon souci est que j'ai deja un userform d'ouvert avant l'apparition de l'userform de la barre... donc j'ai le probleme avec ca :

    "Vous devez d'abord fermer ou masquer la feuille modale en premier plan"

    enfin jvais aller chercher... là jfini une doc puis je replonge dans la progressbar

Discussions similaires

  1. [VBA-E] erreur 422 d'abord cacher la feuille modale.
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/06/2006, 07h19
  2. [VBA] Paramétre fénêtre modale / indépendante
    Par BaRonm3 dans le forum Access
    Réponses: 6
    Dernier message: 06/06/2006, 10h21
  3. [VBA-E]feuille créée sous condition
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/02/2006, 15h11
  4. [VBA] [Excel] feuille masquée = pas de macro?
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/01/2006, 12h58
  5. [VB6]affichage d'une feuille modale / message d'erreur 400
    Par getea85 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/01/2006, 18h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo