Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

(vba) compter des classeurs ...

7 réponses
Avatar
j-pascal
Bonsoir,

Mon classeur s'enregistre comme ceci :

'------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
(...)
With ThisWorkbook
ChDrive "C"
ChDir .Path
If réponse = vbYes Then '6
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
'------------------------------------------

... c'est à dire dans le répertoire où il se situe lui-même.

Est-il possible de lancer une macro depuis le classeur ouvert pour connaître
le nombre de classeurs contenus dans ledit répertoire et la taille totale de
ces derniers ?

Merci d'avance pour vos lumières,

Cordialement,

JP

7 réponses

Avatar
JB
Bonsoir,

repertoire = ThisWorkbook.Path
masque = "Form*"
nf = Dir(masque)
taille = 0
n = 0
Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop
MsgBox taille
MsgBox n

JB
http://boisgontierjacques.free.fr

On 19 oct, 18:51, "j-pascal" wrote:
Bonsoir,

Mon classeur s'enregistre comme ceci :

'------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
(...)
With ThisWorkbook
ChDrive "C"
ChDir .Path
If réponse = vbYes Then '6
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
'------------------------------------------

... c'est à dire dans le répertoire où il se situe lui-même.

Est-il possible de lancer une macro depuis le classeur ouvert pour conna ître
le nombre de classeurs contenus dans ledit répertoire et la taille tota le de
ces derniers ?

Merci d'avance pour vos lumières,

Cordialement,

JP


Avatar
j-pascal
Bonsoir Jacques,

Merci.
J'ai mis le code dans le module d'un classeur situé dans le répertoire que
je dois "évaluer" ...
(Si je fais "Msgbox repertoire", j'ai bien ledit répertoire ...)
Pour chaque Msgbox, j'obtiens "zéro" ! J'en déduis, qu'il y a qqch qui
m'échappe !
Je ne comprends pas le "Form*" ! Dois-je le remplacer par le début des noms
de classeurs à "évaluer" ?? Quoiqu'il en soit, dans le répertoire, je n'ai
que des classeurs *.xls et je veux tous les compter !

@+ ?

JP


repertoire = ThisWorkbook.Path
masque = "Form*"
nf = Dir(masque)
taille = 0
n = 0
Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop
MsgBox taille
MsgBox n

JB
http://boisgontierjacques.free.fr

On 19 oct, 18:51, "j-pascal" wrote:
Bonsoir,

Mon classeur s'enregistre comme ceci :

'------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
(...)
With ThisWorkbook
ChDrive "C"
ChDir .Path
If réponse = vbYes Then '6
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
'------------------------------------------

... c'est à dire dans le répertoire où il se situe lui-même.

Est-il possible de lancer une macro depuis le classeur ouvert pour
connaître
le nombre de classeurs contenus dans ledit répertoire et la taille totale
de
ces derniers ?

Merci d'avance pour vos lumières,

Cordialement,

JP


Avatar
dunkelzahn
Bonjour,

M'est avis qu'il y a peut être une erreur et qu'il faut remplacer nf =
Dir(masque) par nf = Dir(repertoire & "" & masque)

le premier élément de dir indique le type de fichier que tu veux voir.
C'est soit un nom de fichier complet soit un masque comportant et/ou
une étoile (ou plusieurs) ou un point d'interrogation (ou même
plusieurs). Dans son exemple c'était des fichiers commençant par form.
Mais il semble qu'il faille que le dossier soit inclus dans le chemin.


On 20 oct, 18:50, "j-pascal" wrote:
Bonsoir Jacques,

Merci.
J'ai mis le code dans le module d'un classeur situé dans le répertoir e que
je dois "évaluer" ...
(Si je fais "Msgbox repertoire", j'ai bien ledit répertoire ...)
Pour chaque Msgbox, j'obtiens "zéro" ! J'en déduis, qu'il y a qqch qui
m'échappe !
Je ne comprends pas le "Form*" ! Dois-je le remplacer par le début des noms
de classeurs à "évaluer" ?? Quoiqu'il en soit, dans le répertoire, je n'ai
que des classeurs *.xls et je veux tous les compter !

@+ ?

JP

repertoire = ThisWorkbook.Path
masque = "Form*"
nf = Dir(masque)
taille = 0
n = 0
Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop
MsgBox taille
MsgBox n

JBhttp://boisgontierjacques.free.fr

On 19 oct, 18:51, "j-pascal" wrote:

Bonsoir,

Mon classeur s'enregistre comme ceci :

'------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
(...)
With ThisWorkbook
ChDrive "C"
ChDir .Path
If réponse = vbYes Then '6
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
'------------------------------------------

... c'est à dire dans le répertoire où il se situe lui-même.

Est-il possible de lancer une macro depuis le classeur ouvert pour
connaître
le nombre de classeurs contenus dans ledit répertoire et la taille to tale
de
ces derniers ?

Merci d'avance pour vos lumières,

Cordialement,

JP




Avatar
JB
Bonjour,

Sub essai()
repertoire = ThisWorkbook.Path
masque = "*.xls"
nf = Dir(masque)
taille = 0
n = 0
Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop
MsgBox n
MsgBox taille
End Sub

JB
On 20 oct, 18:50, "j-pascal" wrote:
Bonsoir Jacques,

Merci.
J'ai mis le code dans le module d'un classeur situé dans le répertoir e que
je dois "évaluer" ...
(Si je fais "Msgbox repertoire", j'ai bien ledit répertoire ...)
Pour chaque Msgbox, j'obtiens "zéro" ! J'en déduis, qu'il y a qqch qui
m'échappe !
Je ne comprends pas le "Form*" ! Dois-je le remplacer par le début des noms
de classeurs à "évaluer" ?? Quoiqu'il en soit, dans le répertoire, je n'ai
que des classeurs *.xls et je veux tous les compter !

@+ ?

JP

repertoire = ThisWorkbook.Path
masque = "Form*"
nf = Dir(masque)
taille = 0
n = 0
Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop
MsgBox taille
MsgBox n

JBhttp://boisgontierjacques.free.fr

On 19 oct, 18:51, "j-pascal" wrote:



Bonsoir,

Mon classeur s'enregistre comme ceci :

'------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
(...)
With ThisWorkbook
ChDrive "C"
ChDir .Path
If réponse = vbYes Then '6
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
'------------------------------------------

... c'est à dire dans le répertoire où il se situe lui-même.

Est-il possible de lancer une macro depuis le classeur ouvert pour
connaître
le nombre de classeurs contenus dans ledit répertoire et la taille to tale
de
ces derniers ?

Merci d'avance pour vos lumières,

Cordialement,

JP- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
j-pascal
Bonsoir Jacques,

Merci, c'est génial !
Par contre, la première fois ça n'a pas marché car j'avais appelé mon
classeur "CompteClasseurs.xls" et ton "fc" doit être "classeur1" (par défaut
sans doute ?). J'ai failli reposter ... trop tôt ;-)

Je n'aime pas trop le format 98545115 ... Comment pourrais-je afficher le
résulat en MB ? J'imagine qu'il faut en plus convertir les octets ... (?)

@+ ?

Merci encore,

JP

"JB" a écrit dans le message de news:

Bonjour,

Sub essai()
repertoire = ThisWorkbook.Path
masque = "*.xls"
nf = Dir(masque)
taille = 0
n = 0
Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop
MsgBox n
MsgBox taille
End Sub

JB
On 20 oct, 18:50, "j-pascal" wrote:
Bonsoir Jacques,

Merci.
J'ai mis le code dans le module d'un classeur situé dans le répertoire que
je dois "évaluer" ...
(Si je fais "Msgbox repertoire", j'ai bien ledit répertoire ...)
Pour chaque Msgbox, j'obtiens "zéro" ! J'en déduis, qu'il y a qqch qui
m'échappe !
Je ne comprends pas le "Form*" ! Dois-je le remplacer par le début des
noms
de classeurs à "évaluer" ?? Quoiqu'il en soit, dans le répertoire, je n'ai
que des classeurs *.xls et je veux tous les compter !

@+ ?

JP

repertoire = ThisWorkbook.Path
masque = "Form*"
nf = Dir(masque)
taille = 0
n = 0
Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop
MsgBox taille
MsgBox n

JBhttp://boisgontierjacques.free.fr

On 19 oct, 18:51, "j-pascal" wrote:



Bonsoir,

Mon classeur s'enregistre comme ceci :

'------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
(...)
With ThisWorkbook
ChDrive "C"
ChDir .Path
If réponse = vbYes Then '6
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " "
&
.Name
Else
Cancel = True
End If
End With
'------------------------------------------

... c'est à dire dans le répertoire où il se situe lui-même.

Est-il possible de lancer une macro depuis le classeur ouvert pour
connaître
le nombre de classeurs contenus dans ledit répertoire et la taille
totale
de
ces derniers ?

Merci d'avance pour vos lumières,

Cordialement,

JP- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
j-pascal
Re,

PS : pourrais-tu me dire comment je dois déclarer les variables suivantes :

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n

?

Merci !

JP

"JB" a écrit dans le message de news:

Bonjour,

Sub essai()
repertoire = ThisWorkbook.Path
masque = "*.xls"
nf = Dir(masque)
taille = 0
n = 0
Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop
MsgBox n
MsgBox taille
End Sub

JB
On 20 oct, 18:50, "j-pascal" wrote:
Bonsoir Jacques,

Merci.
J'ai mis le code dans le module d'un classeur situé dans le répertoire que
je dois "évaluer" ...
(Si je fais "Msgbox repertoire", j'ai bien ledit répertoire ...)
Pour chaque Msgbox, j'obtiens "zéro" ! J'en déduis, qu'il y a qqch qui
m'échappe !
Je ne comprends pas le "Form*" ! Dois-je le remplacer par le début des
noms
de classeurs à "évaluer" ?? Quoiqu'il en soit, dans le répertoire, je n'ai
que des classeurs *.xls et je veux tous les compter !

@+ ?

JP

repertoire = ThisWorkbook.Path
masque = "Form*"
nf = Dir(masque)
taille = 0
n = 0
Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop
MsgBox taille
MsgBox n

JBhttp://boisgontierjacques.free.fr

On 19 oct, 18:51, "j-pascal" wrote:



Bonsoir,

Mon classeur s'enregistre comme ceci :

'------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
(...)
With ThisWorkbook
ChDrive "C"
ChDir .Path
If réponse = vbYes Then '6
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " "
&
.Name
Else
Cancel = True
End If
End With
'------------------------------------------

... c'est à dire dans le répertoire où il se situe lui-même.

Est-il possible de lancer une macro depuis le classeur ouvert pour
connaître
le nombre de classeurs contenus dans ledit répertoire et la taille
totale
de
ces derniers ?

Merci d'avance pour vos lumières,

Cordialement,

JP- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
j-pascal
Bonsoir,

J'ai essayé ta proposition ; ça marche aussi !

(J'avais fait un essai avec *.xls, mais je crois qu'hier je me suis laissé
"abusé" par le bogue sur le "fc" dû au renommage de mon classeur ... !!)

Merci

JP

"dunkelzahn" a écrit dans le message de
news:
Bonjour,

M'est avis qu'il y a peut être une erreur et qu'il faut remplacer nf Dir(masque) par nf = Dir(repertoire & "" & masque)

le premier élément de dir indique le type de fichier que tu veux voir.
C'est soit un nom de fichier complet soit un masque comportant et/ou
une étoile (ou plusieurs) ou un point d'interrogation (ou même
plusieurs). Dans son exemple c'était des fichiers commençant par form.
Mais il semble qu'il faille que le dossier soit inclus dans le chemin.


On 20 oct, 18:50, "j-pascal" wrote:
Bonsoir Jacques,

Merci.
J'ai mis le code dans le module d'un classeur situé dans le répertoire que
je dois "évaluer" ...
(Si je fais "Msgbox repertoire", j'ai bien ledit répertoire ...)
Pour chaque Msgbox, j'obtiens "zéro" ! J'en déduis, qu'il y a qqch qui
m'échappe !
Je ne comprends pas le "Form*" ! Dois-je le remplacer par le début des
noms
de classeurs à "évaluer" ?? Quoiqu'il en soit, dans le répertoire, je n'ai
que des classeurs *.xls et je veux tous les compter !

@+ ?

JP

repertoire = ThisWorkbook.Path
masque = "Form*"
nf = Dir(masque)
taille = 0
n = 0
Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop
MsgBox taille
MsgBox n

JBhttp://boisgontierjacques.free.fr

On 19 oct, 18:51, "j-pascal" wrote:

Bonsoir,

Mon classeur s'enregistre comme ceci :

'------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
(...)
With ThisWorkbook
ChDrive "C"
ChDir .Path
If réponse = vbYes Then '6
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " "
&
.Name
Else
Cancel = True
End If
End With
'------------------------------------------

... c'est à dire dans le répertoire où il se situe lui-même.

Est-il possible de lancer une macro depuis le classeur ouvert pour
connaître
le nombre de classeurs contenus dans ledit répertoire et la taille
totale
de
ces derniers ?

Merci d'avance pour vos lumières,

Cordialement,

JP