Bonjour à tous
Je fais suite à un mon post lister-sous-repertoires-vides-api-windows .
Comment en restant sur cette solution technique, récupérer la capacité/poids des repertoires.
Merci par avance pour votre aide
Bonjour chez vous
Bonjour à tous
Je fais suite à un mon post lister-sous-repertoires-vides-api-windows .
Comment en restant sur cette solution technique, récupérer la capacité/poids des repertoires.
Merci par avance pour votre aide
Bonjour chez vous
Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
Poésie 44, n° 17 - Albert Camus
Mes réponses vous ont aidés, un clic sur leur pouce vert
Bonjour chez vous
Bonjour
Si tu t'obstines à vouloir faire cela à l'aide de fonctions de l'Api de Windows :
1) voilà de quoi calculer, avec de telles fonctions, la taille d'UN SEUL fichier :
Code pour 32 bits. Types à modifier si 64 bits :
2) Il te faut donc parcourir les fichiers et incrémenter un compteur des tailles relevées. !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long Dim mot_haut As Long Public Function extrait_taille(chemin As String) As Long Dim p_fic As Long, taille As Long p_fic = lOpen(chemin, &H0&) extrait_taille = GetFileSize(p_fic, mot_haut) lclose p_fic End Function Private Sub command1_Click() MsgBox extrait_taille("d:\doevents.xlsm") & " octets" End Sub
Existe peut-être (je n'en sais rien) une autre fonction, d'une autre librairie, retournant directement la taille d'un dossier. Je ne la cherche même pas, car elle ne ferait qu'utiliser elle-même ces trois fonctions et totaliser ... Autant le faire soi-même, alors !
3) Je ne comprends pas pourquoi tu ne le fais pas en utilisant le même principe (parcourir et totaliser les tailles) en utilisant en boucle la fonction Filelen native de VBA ...
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Dans un processus récursif ça devient lourd quand avec filesysobject il existe une méthode.
Donc va falloir mixer les deux.
Merci pour ton aide unparia
Bonjour chez toi
Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
Poésie 44, n° 17 - Albert Camus
Mes réponses vous ont aidés, un clic sur leur pouce vert
Bonjour chez vous
que vient faire (que viendrait faire) "filesysobject" là-dedans ? Et qui en parle ? Explique !quand avec filesysobject il existe une méthode.
Donc va falloir mixer les deux.
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Un exemple valant mieux qu' un long discours
Size Property
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Function ShowFolderSize(filespec) Dim fso, f, s Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(filespec) s = UCase(f.Name) & " uses " & f.size & " bytes." ShowFolderSize = s End Function
Bonjour chez toiFor files, returns the size, in bytes, of the specified file. For folders, returns the size, in bytes, of all files and subfolders contained in the folder.
Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
Poésie 44, n° 17 - Albert Camus
Mes réponses vous ont aidés, un clic sur leur pouce vert
Bonjour chez vous
Je préfère alors le "long discours", car tu dis vouloir traiter par des fonctions de l'Api et viens maintenant avec FSO !
Si ce n'est qu'une allusion pour "comparer" les "performances", ma réponse va être très très très claire.
Lorsque l'on utilise FSO, on charge énormément de choses. En "cachette", certes, mais au demeurant très lourdes. Bien plus lourdes que le code que l'on aurait à écrire pour éviter ce "fardeau".
Si ton "but" est de charger, pourvu que cela "ne se voit pas", voilà une étrange manière de poser un regard sur le développement informatique.
C'est un peu comme si tu te faisais un énorme "couteau suisse", que tu te "trimbalerais" (en le cachant ou non) pour en utiliser ici le tire-bouchon, là la scie, là l'ouvre-boîte, là le tournevis etc ...
Et si, de surcroît, tu dois passer par un sas de contrôle, ton couteau suisse ne passera pas (tel est le cas sur ma machine et bien d'autres, où rien de VBS ne peut passer ).
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Tu as raison sur le fond mais développer un calcul de taille sur des répertoires c'est un investissement peu rentable vu le temps que je vais y consacrer sauf si tu me dis que c'est quelques lignes à ajouter mais je n'y crois pas du tout
Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
Poésie 44, n° 17 - Albert Camus
Mes réponses vous ont aidés, un clic sur leur pouce vert
Bonjour chez vous
Alors je te le dis !sauf si tu me dis que c'est quelques lignes à ajouter mais je n'y crois pas du tout
Aussi simple que d'afficher 120000 grammes sous la forme 120 kilogrammes ou 1,2 quintaux
Tu es à ce point fâché avec l'arithmétique, toi ?
Je sais bien que nous sommes un dimanche, mais quand-même ...
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
A Franck, s'il passe par là :
L'occasion t'est donnée d'utiliser (Pas nécessaire, mais juste pour le "fun") 10 à la puissance vba.len(le_nombre) -1
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Unparia, je ne comprends ce que vient faire ta démonstration dans le calcul de la taille d'un répertoire.... Je crois que tu as confondu ce sujet avec un autre des mes posts sur l'utilisation d'une API http://www.developpez.net/forums/d16...-renvoie-rien/
Bonjour chez toi
Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
Poésie 44, n° 17 - Albert Camus
Mes réponses vous ont aidés, un clic sur leur pouce vert
Bonjour chez vous
Les deux sont "liables" et paraissent liées, non ?
Résumons :
1) Tu cherches à calculer la taille d'un répertoire. Cela se fait de la manière que je t'ai exposée dans ma réponse 2
2) Quant aux deux fonctions objets de ton autre discussion : elles n'ont pour finalité, une fois cette taille calculée et connue, que celle d'une représentation différente de la taille (juste une question d'affichage plus convivial et rien d'autre).
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Salut, si tu y tiens vraiment voir ici, ce sera à adapter à ton contexte.
Bon unparia nous fait du crossover...
Quand au lien de kiki29, je ne l'avais pas vu dans ceux que j'ai donné justement suite a un de tes posts.
Il est logique de lancer un calcul récursif dans une première recherche récursive.
Par contre lancer un deuxieme traitement récursif, cela ne plombe t il pas les performances le rendant comparable in fine au size de FileSystemObject , sachant qu'avec cette option c'est juste 2 lignes de plus!
Merci à tous les deux
Bonjour chez vous
Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
Poésie 44, n° 17 - Albert Camus
Mes réponses vous ont aidés, un clic sur leur pouce vert
Bonjour chez vous
1) Ce ne sont pas ces seules deux lignes, qui sont à considérer, mais tout FSO, dans son ensemble (le "couteau suisse")Le size de FileSystemObject est il vraiment plus gourmand, sachant qu'avec cette option c'est 2 lignes de plus!
2) Que crois-tu que fait FSO (sans que tu le voies), sinon faire à ta place, en utilisant les mêmes fonctions, ce que tu ferais avec les fonctions de l'Api de Windows ?
Relire ce que je t'en ai déjà dit. Et à ne pas "vouloir voir le travail fait" et utilisant pour ne "pas le voir" FSO (et donc tout ce qu'il contient ... TOUT) , tu utilises beaucoup plus de ressources que nécessaire -->> lourdeurs et lenteurs inévitables (et plus que perceptibles) + dépendance à Scrrun.dll (et donc à VBS) !
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Donc dans Windows le poids d'un repertoire n'est pas en attribut et donc par exemple dans le browser Windows, cette donnée est recalculé à la volée ?
Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
Poésie 44, n° 17 - Albert Camus
Mes réponses vous ont aidés, un clic sur leur pouce vert
Bonjour chez vous
Non, ce n'est pas un "attribut" (de quel "objet", d'ailleurs ?)Donc dans Windows le poids d'un repertoire n'est pas en attribut et donc par exemple dans le browser Windows, cette donnée est recalculé à la volée ?
Oui, il est calculé : par addition du poids de chaque fichier du répertoire.
Et maintenant (et à l'avance) :
Non, le poids d'un fichier n'est pas non plus un "attribut" du fichier. Et oui, le fichier est ouvert pour en extraire le poids.
Te voilà totalement renseigné ?
Et non : ces tailles ne sont pas calculées "à la volée" lors de l'utilisation de Explorer.exe. Elles sont stockées et relues dans une base de données utilisée par IE.
N'as-tu pas remarqué que IE ne met pas systématiquement à jour son affichage lors d'une même session IE ?
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Ah oui :
Et si tu te contentes de savoir ce qu'il y a dans la base utilisée par IE à un instant t : c'est ce que te retourne la commande Tree de DOS.
EDIT : mais on s'écarte là de plus en plus de VBA et l'on aborde des sujets Windows !
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Merci unparia pour toutes ces infos et ta patience.
Bonjour chez toi
Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
Poésie 44, n° 17 - Albert Camus
Mes réponses vous ont aidés, un clic sur leur pouce vert
Bonjour chez vous
Bonjour,
Comme pour obtenir la taille de tes répertoires tu veux ni de len ni de FSO,
par analogie (Je suis sur OS X) le terminal sur Mac est, ce qui est pour windows à l'invite de commande
Avec le teminal (Os X) on peut très bien récupéré les informations de fichier ou dossiers, comme je suppose l'invite de commande
Donc en VBA il me semble que l'on utilise "Shell" pour ce qui est de windows, donc utilise la commande adequat pour récupéré l'information,
mais là je te laisse chercher (Pas le temps et je ne suis pas sur windows là)
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
Merci RyuAutodidacte pour cette piste qui a généré le post suivant wscript-shell-recuperer-date-modif-commande-dir/
Bonjour chez toi
Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
Poésie 44, n° 17 - Albert Camus
Mes réponses vous ont aidés, un clic sur leur pouce vert
Bonjour chez vous
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager