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 :

Msgbox en fonction du Poids du Fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 73
    Par défaut Msgbox en fonction du Poids du Fichier
    Bonjour les exceleurs !

    Une fois de plus je pense que vous allez pouvoir m'aidez, devenant "adepte" de ce forum, j'en profite pour remercier toute la communauté sans quoi j'aurais (bcp) plus de mal !

    Donc, mon "problème" :

    j'ai créée une macro qui lance un UserForm. Une Listebox s'affiche ( son contenu est la liste des éléments d'un dossier sur un serveur, qui se met à jour automatiquement à chaque ouverture du UserForm ).

    L'utilisateur double clique sur le fichier qui l'interrese et je fais un "call" d'une autre macro, qui ouvre le fichier sélectionné et fais des filtres automatique.

    Mais voilà .... j'aimerai que si le fichier à ouvrir est inférieur à 500ko un msgbox s'affiche et quitte la procédure sans ouvrir le dit fichier.


    Actuellement j'en suis là, via un code que j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    sub Taille()
     Dim Fichier As String
     Fichier = "nom de mon fichier" 'résultat de listebox.value
     With CreateObject("Scripting.FileSystemObject")
      MsgBox .GetFile(Fichier).Size / 1024 & " Ko."
     End With
     end sub

    Mais alors impossible d'adapter le code !!


    Et question subsidiaire, je n'ai jamais compris pourquoi si je lance l'Userform, la listebox et bien à jour, je ferme l'UserForm, je relance l'Userform et là la listebox a créée des doublons de tous les fichiers dans ma liste !!!!


    Voilà Voilà ! Merci à vous : )

  2. #2
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut msgbox en fonction du poids
    Bonjour,

    Et si tu mettais tout simplement les lignes cette macro dans la macro qui ouvre ou pas selon le poids.

    Pour le subsidiaire: sans tes macros difficile de répondre.

    Cordialement,

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nibledispo Voir le message
    Et si tu mettais tout simplement les lignes cette macro dans la macro qui ouvre ou pas selon le poids.
    Comme suite au message de Paul, une piste avec ce fichier qui évalue la taille des fichiers pour les charger ou non dans un ListBox :

    Dans un module standard du fichier :


    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
    Option Explicit
     
    Public FichierAOuvrir As Variant
    Public Continuer As Boolean
     
    Public ShFichiers As Worksheet
    Public LigneDeTitre As Long
     
     
    Sub LancerLeUserForm()
     
         Set ShFichiers = Sheets("Taille fichiers")
         LigneDeTitre = 10
     
         Range(ShFichiers.Cells(LigneDeTitre + 1, 1), ShFichiers.Cells(ShFichiers.Rows.Count, 2)).Clear
     
         With UserForm1
     
                .Show
     
         End With
     
         Set ShFichiers = Nothing
     
     
    End Sub
     
     
    Function EvaluerTailleFichier(ByVal CheminEtNomDuFichier As String) As Double
     
    Dim Fs As Object
    Dim F As Object
     
        Set Fs = CreateObject("Scripting.FileSystemObject")
     
        If Fs.fileexists(CheminEtNomDuFichier) = True Then
              Set F = Fs.GetFile(CheminEtNomDuFichier)
              EvaluerTailleFichier = F.Size / 1000
        End If
     
        Set F = Nothing
        Set Fs = Nothing
     
    End Function
    Dans le UserForm1 :

    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
    Option Explicit
     
    Private Sub BoutonRepertoireFichiers_Click()
     
     Dim MonFichier As String
     Dim I As Long
     
     
        ListBoxFichiersRetenus.Clear
        FichierAOuvrir = Application.GetOpenFilename("Fichiers (*.xl*),*.xl*")
        TextBoxRepertoire = CurDir
        I = 1
     
        If Val(TextBoxTailleMax) > 0 And FichierAOuvrir <> False Then
           MonFichier = Dir(TextBoxRepertoire & "\*.xl*")
           Do While MonFichier <> ""   ' Commence la boucle.
              If EvaluerTailleFichier(MonFichier) <= Val(TextBoxTailleMax) Then
                 ListBoxFichiersRetenus.AddItem MonFichier
                 With ShFichiers
                    .Cells(LigneDeTitre + I, 1) = MonFichier
                    .Cells(LigneDeTitre + I, 2) = EvaluerTailleFichier(MonFichier)
                    I = I + 1
                 End With
              End If
              MonFichier = Dir   ' Extrait l'entrée suivante.
           Loop
        End If
     
    End Sub
     
     
    Private Sub BoutonContinuer_Click()
     
        Continuer = True
        Unload UserForm1
     
    End Sub
     
     
    Private Sub BoutonAbandonner_Click()
     
        Continuer = False
        Unload UserForm1
     
    End Sub
    Evaluer la taille d'un fichier

  4. #4
    Invité
    Invité(e)
    Par défaut Bonjour, regarde ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Sub Taille()
     Dim Fichier As String
     Dim TailleFichier As Long
     Fichier = "nom de mon fichier" 'résultat de listebox.value
     TailleFichier = CreateObject("Scripting.FileSystemObject").GetFile(Fichier).Size / 1024 '& " Ko."
     If TailleFichier < 500 Then
        MsgBox "le fichier ne fait pas 500 Ko." & vbCrLf & Fichier & " := " & TailleFichier & " Ko.", vbCritical
     Else
        'J'ouvre le fichier
     End If
     End Sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 73
    Par défaut
    Re,

    nibledispo : il me manqué quelques éléments.

    Eric KERGRESSE: Super explications et macro très intéressante, cependant je souhaite tout de même que l'utilisateur qui ouvre le UserForm puisse voir les fichiers existants sur le serveur (chargés dans la ListeBox) sans tenir compte de leurs poids. C'est uniquement au moment où il souhaite l'ouvrir que son poids doit être évalué. Par contre des lignes dans ta macro m'intérresse. Notament pour ma question subsidiaire (je n'ai pas le code avec moi ici). Mais pour éviter les doublons, peut être que lorsque je ferme le UserForm je peux placer cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBoxFichiersRetenus.Clear
    Ainsi la Listebox ce vide, puis lorsque je la relancerai, je n'aurais plus de doublon...à tester. Et d'autre part cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     FichierAOuvrir = Application.GetOpenFilename("Fichiers (*.xl*),*.xl*"

    m'interrese, je peux donc choisir de n'afficher dans la listebox que les fichiers avec extension xls,xlm ?????


    rdurupt : tout simplement, merci, bravo. Efficace, çà fonctionne. (çà semble tellement simple

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par lowno Voir le message

    Notament pour ma question subsidiaire (je n'ai pas le code avec moi ici). Mais pour éviter les doublons, peut être que lorsque je ferme le UserForm je peux placer cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBoxFichiersRetenus.Clear
    Ainsi la Listebox ce vide, puis lorsque je la relancerai, je n'aurais plus de doublon...à tester.
    C'est exactement ça.

    Et d'autre part cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     FichierAOuvrir = Application.GetOpenFilename("Fichiers (*.xl*),*.xl*"
    m'interrese, je peux donc choisir de n'afficher dans la listebox que les fichiers avec extension xls,xlm ?????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        FichierAOuvrir = Application.GetOpenFilename("Fichiers (*.xls;*.xlsm),*.xls;*.xlsm")
    Cordialement.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     Sub Taille()
     Dim Fichier As String
     Dim TailleFichier As Long
     Dim MyClaseur As Workbook
     Fichier = "nom de mon fichier" 'résultat de listebox.value
     TailleFichier = CreateObject("Scripting.FileSystemObject").GetFile(Fichier).Size / 1024 '& " Ko."
     If TailleFichier < 500 Then
        MsgBox "le fichier ne fait pas 500 Ko." & vbCrLf & Fichier & " := " & TailleFichier & " Ko.", vbCritical
     Else
        'J'ouvre le fichier
        Set MyClaseur = Workbooks.Open(TailleFichier)
     End If
     End Sub

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 73
    Par défaut
    Tout fonctionne parfaitement. Merci à tous les participants à cette discussion.

    Je suis ravi de voir que l'entraide fonctionne...et j'ai pu aider une fois sur un poste avec le plaisir de rendre la "pareille"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2010] Fonction Msgbox() qui n'appelle pas le fichier d'aide
    Par Daejung dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 01/02/2015, 21h08
  2. Fonctions de gestion de fichiers
    Par sebduth dans le forum Fortran
    Réponses: 4
    Dernier message: 22/08/2005, 10h38
  3. fonction pour lire les fichier audio
    Par tarek007 dans le forum Multimédia
    Réponses: 1
    Dernier message: 11/05/2005, 16h28
  4. Une fonction de creation de fichier?
    Par zuzur dans le forum C++
    Réponses: 3
    Dernier message: 07/11/2004, 13h10
  5. Détourner une fonction pour copier un fichier en mémoire
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/11/2003, 08h29

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