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

Application.Dialogs(xlDialogOpen).Show

9 réponses
Avatar
j-pascal
Bonsoir,

Dans le code qui suit, je souhaite que le répertoire dans lequel est
enregistré le classeur ouvert s'ouvre afin que je puisse "manuellement"
supprimer certains classeurs. Si j'utilise
"Application.Dialogs(xlDialogOpen).Show", on me propose d'ouvrir les
classeurs ! Pb, même si je peux supprimer tel ou tel classeur, je suis
contraint de cliquer sur "Annuler" pour fermer la boite de dialogue et cela
me prive de la fin de ma procédure !

Questions :
1 - Comment ouvrir une boite de dialogue qui n'affiche que les classeurs
(sans proposer de les ouvrir) et qui me permettrait d'en supprimer certains
?
2 - Comment "paramètrer" (via le code) l'affichage du répertoire avec
l'affichage "Détails" (des classeurs) par défaut ?
3 - Est-il possible d'ajouter qqch dans le code pour que les classeurs
contenus dans ledit répertoire s'affichent par ordre chronologique ?

Le code (avec copyrights à JB et VbFrance ...), et les défauts (copyrights
JP ;-) ) :

'--------------------------------------
Private Sub Nettoyer_Click()

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n
Dim ChDir

Unload Menu

repertoire = ThisWorkbook.Path 'cible
masque = "*.xls" 'masque = "Form*"
nf = Dir(repertoire & "\" & masque) 'nf = Dir(masque)
taille = 0
n = 0

Do While nf <> ""
taille = taille + FileLen(repertoire & "\" & nf)
n = n + 1
nf = Dir()
Loop

MsgBox repertoire & Chr(10) & Chr(10) & "Contient : " & n & " fichiers "
_
& "(soit " & OctetsToKoMoGo(taille) & ")"

If taille > 50000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage autorisé" &
Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogOpen).Show repertoire 'Ce qui pose
problème !

Call Test_Mémoire
Else
MsgBox "Capacité de stockage autorisée non atteinte"
End If
End Sub
'------------------------------------------------

'------------------------------------------------
Public Function OctetsToKoMoGo(DATA) As String

Dim Décimales
Décimales = 2

Debug.Print DATA
If DATA < 1024 Then ' - d'1 Ko
OctetsToKoMoGo = DATA & " Octets"
ElseIf DATA >= 1024 And DATA < (1024 ^ 2) Then 'Entre 1 Ko et
1023Ko
OctetsToKoMoGo = (Round((DATA / 1024), Décimales)) & " Ko"
ElseIf DATA >= (1024 ^ 2) And DATA < (1024 ^ 3) Then 'Entre 1 Mo et
1023 Mo
OctetsToKoMoGo = (Round((DATA / (1024 ^ 2)), Décimales)) & " Mo"
ElseIf DATA >= (1024 ^ 3) And DATA < (1024 ^ 4) Then 'Entre 1 Go et
1023 Go')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 3)), Décimales)) & " Go"
ElseIf DATA >= (1024 ^ 4) And DATA < (1024 ^ 5) Then 'Entre 1 To et
1023 To')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 4)), Décimales)) & " To"
End If

End Function
'-----------------------------------------------

Un grand merci d'avance pour vos lumières !

PS : si qq'un a une suggestion concernant la définition des variables, je
suis preneur :o)

JP

9 réponses

Avatar
Philippe.R
Bonjour j-pascal,
Fais un tour chez Frédéric :
http://frederic.sigonneau.free.fr/Fichiers.htm
tu y trouveras au moins de quoi t'aider
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:
Bonsoir,

Dans le code qui suit, je souhaite que le répertoire dans lequel est
enregistré le classeur ouvert s'ouvre afin que je puisse "manuellement"
supprimer certains classeurs. Si j'utilise
"Application.Dialogs(xlDialogOpen).Show", on me propose d'ouvrir les
classeurs ! Pb, même si je peux supprimer tel ou tel classeur, je suis
contraint de cliquer sur "Annuler" pour fermer la boite de dialogue et
cela me prive de la fin de ma procédure !

Questions :
1 - Comment ouvrir une boite de dialogue qui n'affiche que les classeurs
(sans proposer de les ouvrir) et qui me permettrait d'en supprimer
certains ?
2 - Comment "paramètrer" (via le code) l'affichage du répertoire avec
l'affichage "Détails" (des classeurs) par défaut ?
3 - Est-il possible d'ajouter qqch dans le code pour que les classeurs
contenus dans ledit répertoire s'affichent par ordre chronologique ?

Le code (avec copyrights à JB et VbFrance ...), et les défauts (copyrights
JP ;-) ) :

'--------------------------------------
Private Sub Nettoyer_Click()

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n
Dim ChDir

Unload Menu

repertoire = ThisWorkbook.Path 'cible
masque = "*.xls" 'masque = "Form*"
nf = Dir(repertoire & "" & masque) 'nf = Dir(masque)
taille = 0
n = 0

Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop

MsgBox repertoire & Chr(10) & Chr(10) & "Contient : " & n & " fichiers
" _
& "(soit " & OctetsToKoMoGo(taille) & ")"

If taille > 50000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage autorisé"
& Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogOpen).Show repertoire 'Ce qui pose
problème !

Call Test_Mémoire
Else
MsgBox "Capacité de stockage autorisée non atteinte"
End If
End Sub
'------------------------------------------------

'------------------------------------------------
Public Function OctetsToKoMoGo(DATA) As String

Dim Décimales
Décimales = 2

Debug.Print DATA
If DATA < 1024 Then ' - d'1 Ko
OctetsToKoMoGo = DATA & " Octets"
ElseIf DATA >= 1024 And DATA < (1024 ^ 2) Then 'Entre 1 Ko et
1023Ko
OctetsToKoMoGo = (Round((DATA / 1024), Décimales)) & " Ko"
ElseIf DATA >= (1024 ^ 2) And DATA < (1024 ^ 3) Then 'Entre 1 Mo et
1023 Mo
OctetsToKoMoGo = (Round((DATA / (1024 ^ 2)), Décimales)) & " Mo"
ElseIf DATA >= (1024 ^ 3) And DATA < (1024 ^ 4) Then 'Entre 1 Go et
1023 Go')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 3)), Décimales)) & " Go"
ElseIf DATA >= (1024 ^ 4) And DATA < (1024 ^ 5) Then 'Entre 1 To et
1023 To')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 4)), Décimales)) & " To"
End If

End Function
'-----------------------------------------------

Un grand merci d'avance pour vos lumières !

PS : si qq'un a une suggestion concernant la définition des variables, je
suis preneur :o)

JP


Avatar
j-pascal
Bonjour Philippe,

Merci pour ta réponse.
Je viens de parcourir rapidement (je dois aller bosser ...) le contenu Txt
des ex. de fréd. s.
C'est très compliqué pour moi - Il y a dans le code, plein de termes que je
ne comprends absoument pas !
J'ai toujours à coeur d'essayer de comprendre ce que j'utilise dans mes
procédures, ne serait-ce que pour pouvoir expliquer ce que je fais à
l'utilisateur, si d'aventure il me posait la question !!
Je réétudie ça ce soir ...

PS : j'ai simplement besoin d'ouvrir un répertoire et de voir son contenu
;-)

@+

JP

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonjour j-pascal,
Fais un tour chez Frédéric :
http://frederic.sigonneau.free.fr/Fichiers.htm
tu y trouveras au moins de quoi t'aider
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:
Bonsoir,

Dans le code qui suit, je souhaite que le répertoire dans lequel est
enregistré le classeur ouvert s'ouvre afin que je puisse "manuellement"
supprimer certains classeurs. Si j'utilise
"Application.Dialogs(xlDialogOpen).Show", on me propose d'ouvrir les
classeurs ! Pb, même si je peux supprimer tel ou tel classeur, je suis
contraint de cliquer sur "Annuler" pour fermer la boite de dialogue et
cela me prive de la fin de ma procédure !

Questions :
1 - Comment ouvrir une boite de dialogue qui n'affiche que les classeurs
(sans proposer de les ouvrir) et qui me permettrait d'en supprimer
certains ?
2 - Comment "paramètrer" (via le code) l'affichage du répertoire avec
l'affichage "Détails" (des classeurs) par défaut ?
3 - Est-il possible d'ajouter qqch dans le code pour que les classeurs
contenus dans ledit répertoire s'affichent par ordre chronologique ?

Le code (avec copyrights à JB et VbFrance ...), et les défauts
(copyrights JP ;-) ) :

'--------------------------------------
Private Sub Nettoyer_Click()

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n
Dim ChDir

Unload Menu

repertoire = ThisWorkbook.Path 'cible
masque = "*.xls" 'masque = "Form*"
nf = Dir(repertoire & "" & masque) 'nf = Dir(masque)
taille = 0
n = 0

Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop

MsgBox repertoire & Chr(10) & Chr(10) & "Contient : " & n & " fichiers
" _
& "(soit " & OctetsToKoMoGo(taille) & ")"

If taille > 50000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage autorisé"
& Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogOpen).Show repertoire 'Ce qui pose
problème !

Call Test_Mémoire
Else
MsgBox "Capacité de stockage autorisée non atteinte"
End If
End Sub
'------------------------------------------------

'------------------------------------------------
Public Function OctetsToKoMoGo(DATA) As String

Dim Décimales
Décimales = 2

Debug.Print DATA
If DATA < 1024 Then ' - d'1 Ko
OctetsToKoMoGo = DATA & " Octets"
ElseIf DATA >= 1024 And DATA < (1024 ^ 2) Then 'Entre 1 Ko
et 1023Ko
OctetsToKoMoGo = (Round((DATA / 1024), Décimales)) & " Ko"
ElseIf DATA >= (1024 ^ 2) And DATA < (1024 ^ 3) Then 'Entre 1 Mo
et 1023 Mo
OctetsToKoMoGo = (Round((DATA / (1024 ^ 2)), Décimales)) & " Mo"
ElseIf DATA >= (1024 ^ 3) And DATA < (1024 ^ 4) Then 'Entre 1 Go
et 1023 Go')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 3)), Décimales)) & " Go"
ElseIf DATA >= (1024 ^ 4) And DATA < (1024 ^ 5) Then 'Entre 1 To
et 1023 To')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 4)), Décimales)) & " To"
End If

End Function
'-----------------------------------------------

Un grand merci d'avance pour vos lumières !

PS : si qq'un a une suggestion concernant la définition des variables, je
suis preneur :o)

JP





Avatar
Philippe.R
Re,
Dans cette solution :
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFile.txt
J. Walkenbach (l'auteur cité par Frédéric) utilise cette boîte de dialogue :
SHBrowseForFolder(bInfo)
issue des API de Windows et qui permet de récupérer le chemin du fichier que
tu veux traiter
Dans la procédure, tu peux adapter le répertoire de départ, comme le
traitement appliqué au résultat (ici un message).
Tu remarqueras qu'il y en a 3 autres au choix, sans appel aux API (ce qui
devrait donc améliorer la portabilité vers Mac par exemple), dont la 1ère
devrait être assez facile à adapter
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI.txt
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI2.txt
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI3.txt
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%
Bonjour Philippe,

Merci pour ta réponse.
Je viens de parcourir rapidement (je dois aller bosser ...) le contenu Txt
des ex. de fréd. s.
C'est très compliqué pour moi - Il y a dans le code, plein de termes que
je ne comprends absoument pas !
J'ai toujours à coeur d'essayer de comprendre ce que j'utilise dans mes
procédures, ne serait-ce que pour pouvoir expliquer ce que je fais à
l'utilisateur, si d'aventure il me posait la question !!
Je réétudie ça ce soir ...

PS : j'ai simplement besoin d'ouvrir un répertoire et de voir son contenu
;-)

@+

JP

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonjour j-pascal,
Fais un tour chez Frédéric :
http://frederic.sigonneau.free.fr/Fichiers.htm
tu y trouveras au moins de quoi t'aider
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:
Bonsoir,

Dans le code qui suit, je souhaite que le répertoire dans lequel est
enregistré le classeur ouvert s'ouvre afin que je puisse "manuellement"
supprimer certains classeurs. Si j'utilise
"Application.Dialogs(xlDialogOpen).Show", on me propose d'ouvrir les
classeurs ! Pb, même si je peux supprimer tel ou tel classeur, je suis
contraint de cliquer sur "Annuler" pour fermer la boite de dialogue et
cela me prive de la fin de ma procédure !

Questions :
1 - Comment ouvrir une boite de dialogue qui n'affiche que les classeurs
(sans proposer de les ouvrir) et qui me permettrait d'en supprimer
certains ?
2 - Comment "paramètrer" (via le code) l'affichage du répertoire avec
l'affichage "Détails" (des classeurs) par défaut ?
3 - Est-il possible d'ajouter qqch dans le code pour que les classeurs
contenus dans ledit répertoire s'affichent par ordre chronologique ?

Le code (avec copyrights à JB et VbFrance ...), et les défauts
(copyrights JP ;-) ) :

'--------------------------------------
Private Sub Nettoyer_Click()

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n
Dim ChDir

Unload Menu

repertoire = ThisWorkbook.Path 'cible
masque = "*.xls" 'masque = "Form*"
nf = Dir(repertoire & "" & masque) 'nf = Dir(masque)
taille = 0
n = 0

Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop

MsgBox repertoire & Chr(10) & Chr(10) & "Contient : " & n & "
fichiers " _
& "(soit " & OctetsToKoMoGo(taille) & ")"

If taille > 50000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage
autorisé" & Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogOpen).Show repertoire 'Ce qui
pose problème !

Call Test_Mémoire
Else
MsgBox "Capacité de stockage autorisée non atteinte"
End If
End Sub
'------------------------------------------------

'------------------------------------------------
Public Function OctetsToKoMoGo(DATA) As String

Dim Décimales
Décimales = 2

Debug.Print DATA
If DATA < 1024 Then ' - d'1 Ko
OctetsToKoMoGo = DATA & " Octets"
ElseIf DATA >= 1024 And DATA < (1024 ^ 2) Then 'Entre 1 Ko
et 1023Ko
OctetsToKoMoGo = (Round((DATA / 1024), Décimales)) & " Ko"
ElseIf DATA >= (1024 ^ 2) And DATA < (1024 ^ 3) Then 'Entre 1 Mo
et 1023 Mo
OctetsToKoMoGo = (Round((DATA / (1024 ^ 2)), Décimales)) & " Mo"
ElseIf DATA >= (1024 ^ 3) And DATA < (1024 ^ 4) Then 'Entre 1 Go
et 1023 Go')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 3)), Décimales)) & " Go"
ElseIf DATA >= (1024 ^ 4) And DATA < (1024 ^ 5) Then 'Entre 1 To
et 1023 To')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 4)), Décimales)) & " To"
End If

End Function
'-----------------------------------------------

Un grand merci d'avance pour vos lumières !

PS : si qq'un a une suggestion concernant la définition des variables,
je suis preneur :o)

JP








Avatar
MichDenis
Voici une approche un peu plus simple. Elle te permet
de choisir le répertoire à partir duquel tu désires
visionner son contenu (seulement les sous-répertoires
sans les fichiers) et de sélectionner le répertoire de ton
choix :

'--------------------------------------------
Sub test()

Dim Chemin As String
Dim Message As String
Dim RepAOuvrir As String

'Ce qui s'affichera dans la fenêtre
Message = "Sélectionner un des répertoires affichés"

'Répertoire à ouvrir : à définir
RepAOuvrir = "c:Atravail"

If Dir(RepAOuvrir, vbDirectory) <> "" Then
'ouverture du répertoire
FolderWindowBrowser RepAOuvrir, Message, Chemin
If Chemin = "" Then
MsgBox "Vous avez annulé votre choix."
Else
MsgBox Chemin
End If
Else
MsgBox "Chemin ou répertoire inexistant."
End If

End Sub

'--------------------------------------------
Sub FolderWindowBrowser(Rep As String, Message As String, _
Chemin As String)

Dim objShell As Object, ObjFolder As Object

Set objShell = CreateObject("Shell.Application")
Set ObjFolder = objShell.BrowseForFolder(0, Message, 0, "" & Rep & "")
If Not ObjFolder Is Nothing Then
Chemin = ObjFolder.parentfolder.ParseName(ObjFolder.Title).path
Else
Chemin = ""
End If

End Sub
'--------------------------------------------






"j-pascal" a écrit dans le message de news:

Bonsoir,

Dans le code qui suit, je souhaite que le répertoire dans lequel est
enregistré le classeur ouvert s'ouvre afin que je puisse "manuellement"
supprimer certains classeurs. Si j'utilise
"Application.Dialogs(xlDialogOpen).Show", on me propose d'ouvrir les
classeurs ! Pb, même si je peux supprimer tel ou tel classeur, je suis
contraint de cliquer sur "Annuler" pour fermer la boite de dialogue et cela
me prive de la fin de ma procédure !

Questions :
1 - Comment ouvrir une boite de dialogue qui n'affiche que les classeurs
(sans proposer de les ouvrir) et qui me permettrait d'en supprimer certains
?
2 - Comment "paramètrer" (via le code) l'affichage du répertoire avec
l'affichage "Détails" (des classeurs) par défaut ?
3 - Est-il possible d'ajouter qqch dans le code pour que les classeurs
contenus dans ledit répertoire s'affichent par ordre chronologique ?

Le code (avec copyrights à JB et VbFrance ...), et les défauts (copyrights
JP ;-) ) :

'--------------------------------------
Private Sub Nettoyer_Click()

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n
Dim ChDir

Unload Menu

repertoire = ThisWorkbook.Path 'cible
masque = "*.xls" 'masque = "Form*"
nf = Dir(repertoire & "" & masque) 'nf = Dir(masque)
taille = 0
n = 0

Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop

MsgBox repertoire & Chr(10) & Chr(10) & "Contient : " & n & " fichiers "
_
& "(soit " & OctetsToKoMoGo(taille) & ")"

If taille > 50000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage autorisé" &
Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogOpen).Show repertoire 'Ce qui pose
problème !

Call Test_Mémoire
Else
MsgBox "Capacité de stockage autorisée non atteinte"
End If
End Sub
'------------------------------------------------

'------------------------------------------------
Public Function OctetsToKoMoGo(DATA) As String

Dim Décimales
Décimales = 2

Debug.Print DATA
If DATA < 1024 Then ' - d'1 Ko
OctetsToKoMoGo = DATA & " Octets"
ElseIf DATA >= 1024 And DATA < (1024 ^ 2) Then 'Entre 1 Ko et
1023Ko
OctetsToKoMoGo = (Round((DATA / 1024), Décimales)) & " Ko"
ElseIf DATA >= (1024 ^ 2) And DATA < (1024 ^ 3) Then 'Entre 1 Mo et
1023 Mo
OctetsToKoMoGo = (Round((DATA / (1024 ^ 2)), Décimales)) & " Mo"
ElseIf DATA >= (1024 ^ 3) And DATA < (1024 ^ 4) Then 'Entre 1 Go et
1023 Go')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 3)), Décimales)) & " Go"
ElseIf DATA >= (1024 ^ 4) And DATA < (1024 ^ 5) Then 'Entre 1 To et
1023 To')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 4)), Décimales)) & " To"
End If

End Function
'-----------------------------------------------

Un grand merci d'avance pour vos lumières !

PS : si qq'un a une suggestion concernant la définition des variables, je
suis preneur :o)

JP
Avatar
j-pascal
Bonsoir,

J'ai dû mal m'exprimer :o)

Mon code m'ouvre déjà le répertoire voulu (celui dans lequel se trouve le
classeur en cours d'exécution) et m'affiche donc tous les classeurs que je
suis susceptible de supprimer ...

Ce que je voudrais, c'est que la fenêtre de dialogue ne m'affiche pas la
possibilité d'ouvrir les classeurs, car je ne veux pas les ouvrir, mais les
supprimer !! Certes, je peux quand même supprimer les classeurs, mais pour
fermer la boite en question, je n'ai que 2 choix : "ouvrir" (ce que je ne
veux pas) et "annuler" (ce qui n'est pas compatible avec le reste de mon
code !).

@+

JP


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

Voici une approche un peu plus simple. Elle te permet
de choisir le répertoire à partir duquel tu désires
visionner son contenu (seulement les sous-répertoires
sans les fichiers) et de sélectionner le répertoire de ton
choix :

'--------------------------------------------
Sub test()

Dim Chemin As String
Dim Message As String
Dim RepAOuvrir As String

'Ce qui s'affichera dans la fenêtre
Message = "Sélectionner un des répertoires affichés"

'Répertoire à ouvrir : à définir
RepAOuvrir = "c:Atravail"

If Dir(RepAOuvrir, vbDirectory) <> "" Then
'ouverture du répertoire
FolderWindowBrowser RepAOuvrir, Message, Chemin
If Chemin = "" Then
MsgBox "Vous avez annulé votre choix."
Else
MsgBox Chemin
End If
Else
MsgBox "Chemin ou répertoire inexistant."
End If

End Sub

'--------------------------------------------
Sub FolderWindowBrowser(Rep As String, Message As String, _
Chemin As String)

Dim objShell As Object, ObjFolder As Object

Set objShell = CreateObject("Shell.Application")
Set ObjFolder = objShell.BrowseForFolder(0, Message, 0, "" & Rep & "")
If Not ObjFolder Is Nothing Then
Chemin = ObjFolder.parentfolder.ParseName(ObjFolder.Title).path
Else
Chemin = ""
End If

End Sub
'--------------------------------------------






"j-pascal" a écrit dans le message de news:

Bonsoir,

Dans le code qui suit, je souhaite que le répertoire dans lequel est
enregistré le classeur ouvert s'ouvre afin que je puisse "manuellement"
supprimer certains classeurs. Si j'utilise
"Application.Dialogs(xlDialogOpen).Show", on me propose d'ouvrir les
classeurs ! Pb, même si je peux supprimer tel ou tel classeur, je suis
contraint de cliquer sur "Annuler" pour fermer la boite de dialogue et
cela
me prive de la fin de ma procédure !

Questions :
1 - Comment ouvrir une boite de dialogue qui n'affiche que les classeurs
(sans proposer de les ouvrir) et qui me permettrait d'en supprimer
certains
?
2 - Comment "paramètrer" (via le code) l'affichage du répertoire avec
l'affichage "Détails" (des classeurs) par défaut ?
3 - Est-il possible d'ajouter qqch dans le code pour que les classeurs
contenus dans ledit répertoire s'affichent par ordre chronologique ?

Le code (avec copyrights à JB et VbFrance ...), et les défauts (copyrights
JP ;-) ) :

'--------------------------------------
Private Sub Nettoyer_Click()

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n
Dim ChDir

Unload Menu

repertoire = ThisWorkbook.Path 'cible
masque = "*.xls" 'masque = "Form*"
nf = Dir(repertoire & "" & masque) 'nf = Dir(masque)
taille = 0
n = 0

Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop

MsgBox repertoire & Chr(10) & Chr(10) & "Contient : " & n & " fichiers
"
_
& "(soit " & OctetsToKoMoGo(taille) & ")"

If taille > 50000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage autorisé"
&
Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogOpen).Show repertoire 'Ce qui pose
problème !

Call Test_Mémoire
Else
MsgBox "Capacité de stockage autorisée non atteinte"
End If
End Sub
'------------------------------------------------

'------------------------------------------------
Public Function OctetsToKoMoGo(DATA) As String

Dim Décimales
Décimales = 2

Debug.Print DATA
If DATA < 1024 Then ' - d'1 Ko
OctetsToKoMoGo = DATA & " Octets"
ElseIf DATA >= 1024 And DATA < (1024 ^ 2) Then 'Entre 1 Ko et
1023Ko
OctetsToKoMoGo = (Round((DATA / 1024), Décimales)) & " Ko"
ElseIf DATA >= (1024 ^ 2) And DATA < (1024 ^ 3) Then 'Entre 1 Mo et
1023 Mo
OctetsToKoMoGo = (Round((DATA / (1024 ^ 2)), Décimales)) & " Mo"
ElseIf DATA >= (1024 ^ 3) And DATA < (1024 ^ 4) Then 'Entre 1 Go et
1023 Go')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 3)), Décimales)) & " Go"
ElseIf DATA >= (1024 ^ 4) And DATA < (1024 ^ 5) Then 'Entre 1 To et
1023 To')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 4)), Décimales)) & " To"
End If

End Function
'-----------------------------------------------

Un grand merci d'avance pour vos lumières !

PS : si qq'un a une suggestion concernant la définition des variables, je
suis preneur :o)

JP




Avatar
j-pascal
Bonsoir Philippe,

Dans cette solution :
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFile.txt
J. Walkenbach (l'auteur cité par Frédéric) utilise cette boîte de dialogue
:
SHBrowseForFolder(bInfo)
issue des API de Windows et qui permet de récupérer le chemin du fichier
que tu veux traiter


J'ai dû mal m'exprimer ;-( Je sais déjà accéder au répertoire voulu !
Je veux seulement avoir une boite de dialogue qui me montre les classeurs
(et non me propose de les ouvrir ...) afin que je puisse les supprimer. Et
que pour fermer la boite de dialogue j'ai le choix entre "Annuler" ou "Ok"
et non "Annuler" ou "Ouvrir" ...

Quand je lis le code de JW, je suis un peu désorienté avec les bouts de code
du genre "bInfo.ulFlags = &H4000" sans parler des autres ...
Si j'utilisais un tel code, je serais incapable d'expliquer ce que je fais à
un tiers ...

@+ ?

JP

PS : je continue de parcourir tes liens, mais je ne suis pas sûr que ma
question était (assez) claire.


Dans la procédure, tu peux adapter le répertoire de départ, comme le
traitement appliqué au résultat (ici un message).
Tu remarqueras qu'il y en a 3 autres au choix, sans appel aux API (ce qui
devrait donc améliorer la portabilité vers Mac par exemple), dont la 1ère
devrait être assez facile à adapter
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI.txt
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI2.txt
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI3.txt
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%
Bonjour Philippe,

Merci pour ta réponse.
Je viens de parcourir rapidement (je dois aller bosser ...) le contenu
Txt des ex. de fréd. s.
C'est très compliqué pour moi - Il y a dans le code, plein de termes que
je ne comprends absoument pas !
J'ai toujours à coeur d'essayer de comprendre ce que j'utilise dans mes
procédures, ne serait-ce que pour pouvoir expliquer ce que je fais à
l'utilisateur, si d'aventure il me posait la question !!
Je réétudie ça ce soir ...

PS : j'ai simplement besoin d'ouvrir un répertoire et de voir son contenu
;-)

@+

JP

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news:
Bonjour j-pascal,
Fais un tour chez Frédéric :
http://frederic.sigonneau.free.fr/Fichiers.htm
tu y trouveras au moins de quoi t'aider
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:
Bonsoir,

Dans le code qui suit, je souhaite que le répertoire dans lequel est
enregistré le classeur ouvert s'ouvre afin que je puisse "manuellement"
supprimer certains classeurs. Si j'utilise
"Application.Dialogs(xlDialogOpen).Show", on me propose d'ouvrir les
classeurs ! Pb, même si je peux supprimer tel ou tel classeur, je suis
contraint de cliquer sur "Annuler" pour fermer la boite de dialogue et
cela me prive de la fin de ma procédure !

Questions :
1 - Comment ouvrir une boite de dialogue qui n'affiche que les
classeurs (sans proposer de les ouvrir) et qui me permettrait d'en
supprimer certains ?
2 - Comment "paramètrer" (via le code) l'affichage du répertoire avec
l'affichage "Détails" (des classeurs) par défaut ?
3 - Est-il possible d'ajouter qqch dans le code pour que les classeurs
contenus dans ledit répertoire s'affichent par ordre chronologique ?

Le code (avec copyrights à JB et VbFrance ...), et les défauts
(copyrights JP ;-) ) :

'--------------------------------------
Private Sub Nettoyer_Click()

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n
Dim ChDir

Unload Menu

repertoire = ThisWorkbook.Path 'cible
masque = "*.xls" 'masque = "Form*"
nf = Dir(repertoire & "" & masque) 'nf = Dir(masque)
taille = 0
n = 0

Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop

MsgBox repertoire & Chr(10) & Chr(10) & "Contient : " & n & "
fichiers " _
& "(soit " & OctetsToKoMoGo(taille) & ")"

If taille > 50000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage
autorisé" & Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogOpen).Show repertoire 'Ce qui
pose problème !

Call Test_Mémoire
Else
MsgBox "Capacité de stockage autorisée non atteinte"
End If
End Sub
'------------------------------------------------

'------------------------------------------------
Public Function OctetsToKoMoGo(DATA) As String

Dim Décimales
Décimales = 2

Debug.Print DATA
If DATA < 1024 Then ' - d'1 Ko
OctetsToKoMoGo = DATA & " Octets"
ElseIf DATA >= 1024 And DATA < (1024 ^ 2) Then 'Entre 1 Ko
et 1023Ko
OctetsToKoMoGo = (Round((DATA / 1024), Décimales)) & " Ko"
ElseIf DATA >= (1024 ^ 2) And DATA < (1024 ^ 3) Then 'Entre 1 Mo
et 1023 Mo
OctetsToKoMoGo = (Round((DATA / (1024 ^ 2)), Décimales)) & " Mo"
ElseIf DATA >= (1024 ^ 3) And DATA < (1024 ^ 4) Then 'Entre 1 Go
et 1023 Go')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 3)), Décimales)) & " Go"
ElseIf DATA >= (1024 ^ 4) And DATA < (1024 ^ 5) Then 'Entre 1 To
et 1023 To')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 4)), Décimales)) & " To"
End If

End Function
'-----------------------------------------------

Un grand merci d'avance pour vos lumières !

PS : si qq'un a une suggestion concernant la définition des variables,
je suis preneur :o)

JP











Avatar
j-pascal
Bonsoir Philippe,

En fait, j'ai trouvé ça :
http://www.info-3000.com/vbvba/boitedialogueintegree.php
(dont le contenu est à peu près à ma portée ;-) )
... et j'ai chargé le classeur joint. Ouhahh que de boites !!
Ensuite, j'ai créé un bouton pour ouvrir une macro toute bête du genre :

Sub essai ()
Application.Dialogs(xlDialog[CTRL ESP]).show
End Sub

Et j'ai essayé tout un tas de truc proposé par VBA jusqu'à ce que je tombe
sur :
"Application.Dialogs(xlDialogFileDelete).Show"
... C'est à dire, ce que je cherchais !

En résumé :

'----------------------
If taille > 5000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage autorisé" &
Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogFileDelete).Show repertoire
'----------------------
Avec repertoire = ThisWorkbook.Path

Ce qui est (presque dommage, c'est que je ne puisse pas utiliser CTRL pour
sélectionner plusieurs classeurs en même temps, mais bon ...

Ma question était sans doute peu claire, mais la solution est a priori bcp
plus simple que le code de JW (auquel je ne comprends rien !).

Merci pour ton aide et peut-être à bientôt ...

JP

PS : la journée a été dure et cette petite ligne de code me donne un peu de
baume au coeur ;-)


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Re,
Dans cette solution :
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFile.txt
J. Walkenbach (l'auteur cité par Frédéric) utilise cette boîte de dialogue
:
SHBrowseForFolder(bInfo)
issue des API de Windows et qui permet de récupérer le chemin du fichier
que tu veux traiter
Dans la procédure, tu peux adapter le répertoire de départ, comme le
traitement appliqué au résultat (ici un message).
Tu remarqueras qu'il y en a 3 autres au choix, sans appel aux API (ce qui
devrait donc améliorer la portabilité vers Mac par exemple), dont la 1ère
devrait être assez facile à adapter
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI.txt
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI2.txt
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI3.txt
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%
Bonjour Philippe,

Merci pour ta réponse.
Je viens de parcourir rapidement (je dois aller bosser ...) le contenu
Txt des ex. de fréd. s.
C'est très compliqué pour moi - Il y a dans le code, plein de termes que
je ne comprends absoument pas !
J'ai toujours à coeur d'essayer de comprendre ce que j'utilise dans mes
procédures, ne serait-ce que pour pouvoir expliquer ce que je fais à
l'utilisateur, si d'aventure il me posait la question !!
Je réétudie ça ce soir ...

PS : j'ai simplement besoin d'ouvrir un répertoire et de voir son contenu
;-)

@+

JP

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news:
Bonjour j-pascal,
Fais un tour chez Frédéric :
http://frederic.sigonneau.free.fr/Fichiers.htm
tu y trouveras au moins de quoi t'aider
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:
Bonsoir,

Dans le code qui suit, je souhaite que le répertoire dans lequel est
enregistré le classeur ouvert s'ouvre afin que je puisse "manuellement"
supprimer certains classeurs. Si j'utilise
"Application.Dialogs(xlDialogOpen).Show", on me propose d'ouvrir les
classeurs ! Pb, même si je peux supprimer tel ou tel classeur, je suis
contraint de cliquer sur "Annuler" pour fermer la boite de dialogue et
cela me prive de la fin de ma procédure !

Questions :
1 - Comment ouvrir une boite de dialogue qui n'affiche que les
classeurs (sans proposer de les ouvrir) et qui me permettrait d'en
supprimer certains ?
2 - Comment "paramètrer" (via le code) l'affichage du répertoire avec
l'affichage "Détails" (des classeurs) par défaut ?
3 - Est-il possible d'ajouter qqch dans le code pour que les classeurs
contenus dans ledit répertoire s'affichent par ordre chronologique ?

Le code (avec copyrights à JB et VbFrance ...), et les défauts
(copyrights JP ;-) ) :

'--------------------------------------
Private Sub Nettoyer_Click()

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n
Dim ChDir

Unload Menu

repertoire = ThisWorkbook.Path 'cible
masque = "*.xls" 'masque = "Form*"
nf = Dir(repertoire & "" & masque) 'nf = Dir(masque)
taille = 0
n = 0

Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop

MsgBox repertoire & Chr(10) & Chr(10) & "Contient : " & n & "
fichiers " _
& "(soit " & OctetsToKoMoGo(taille) & ")"

If taille > 50000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage
autorisé" & Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogOpen).Show repertoire 'Ce qui
pose problème !

Call Test_Mémoire
Else
MsgBox "Capacité de stockage autorisée non atteinte"
End If
End Sub
'------------------------------------------------

'------------------------------------------------
Public Function OctetsToKoMoGo(DATA) As String

Dim Décimales
Décimales = 2

Debug.Print DATA
If DATA < 1024 Then ' - d'1 Ko
OctetsToKoMoGo = DATA & " Octets"
ElseIf DATA >= 1024 And DATA < (1024 ^ 2) Then 'Entre 1 Ko
et 1023Ko
OctetsToKoMoGo = (Round((DATA / 1024), Décimales)) & " Ko"
ElseIf DATA >= (1024 ^ 2) And DATA < (1024 ^ 3) Then 'Entre 1 Mo
et 1023 Mo
OctetsToKoMoGo = (Round((DATA / (1024 ^ 2)), Décimales)) & " Mo"
ElseIf DATA >= (1024 ^ 3) And DATA < (1024 ^ 4) Then 'Entre 1 Go
et 1023 Go')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 3)), Décimales)) & " Go"
ElseIf DATA >= (1024 ^ 4) And DATA < (1024 ^ 5) Then 'Entre 1 To
et 1023 To')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 4)), Décimales)) & " To"
End If

End Function
'-----------------------------------------------

Un grand merci d'avance pour vos lumières !

PS : si qq'un a une suggestion concernant la définition des variables,
je suis preneur :o)

JP











Avatar
Philippe.R
Bonsoir,
Merci du retour d'information.
Je retiens l'existence de cette boîte de dialogue.
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%
Bonsoir Philippe,

En fait, j'ai trouvé ça :
http://www.info-3000.com/vbvba/boitedialogueintegree.php
(dont le contenu est à peu près à ma portée ;-) )
... et j'ai chargé le classeur joint. Ouhahh que de boites !!
Ensuite, j'ai créé un bouton pour ouvrir une macro toute bête du genre :

Sub essai ()
Application.Dialogs(xlDialog[CTRL ESP]).show
End Sub

Et j'ai essayé tout un tas de truc proposé par VBA jusqu'à ce que je tombe
sur :
"Application.Dialogs(xlDialogFileDelete).Show"
... C'est à dire, ce que je cherchais !

En résumé :

'----------------------
If taille > 5000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage autorisé"
& Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogFileDelete).Show repertoire
'----------------------
Avec repertoire = ThisWorkbook.Path

Ce qui est (presque dommage, c'est que je ne puisse pas utiliser CTRL pour
sélectionner plusieurs classeurs en même temps, mais bon ...

Ma question était sans doute peu claire, mais la solution est a priori bcp
plus simple que le code de JW (auquel je ne comprends rien !).

Merci pour ton aide et peut-être à bientôt ...

JP

PS : la journée a été dure et cette petite ligne de code me donne un peu
de baume au coeur ;-)


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Re,
Dans cette solution :
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFile.txt
J. Walkenbach (l'auteur cité par Frédéric) utilise cette boîte de
dialogue :
SHBrowseForFolder(bInfo)
issue des API de Windows et qui permet de récupérer le chemin du fichier
que tu veux traiter
Dans la procédure, tu peux adapter le répertoire de départ, comme le
traitement appliqué au résultat (ici un message).
Tu remarqueras qu'il y en a 3 autres au choix, sans appel aux API (ce qui
devrait donc améliorer la portabilité vers Mac par exemple), dont la 1ère
devrait être assez facile à adapter
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI.txt
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI2.txt
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI3.txt
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%
Bonjour Philippe,

Merci pour ta réponse.
Je viens de parcourir rapidement (je dois aller bosser ...) le contenu
Txt des ex. de fréd. s.
C'est très compliqué pour moi - Il y a dans le code, plein de termes que
je ne comprends absoument pas !
J'ai toujours à coeur d'essayer de comprendre ce que j'utilise dans mes
procédures, ne serait-ce que pour pouvoir expliquer ce que je fais à
l'utilisateur, si d'aventure il me posait la question !!
Je réétudie ça ce soir ...

PS : j'ai simplement besoin d'ouvrir un répertoire et de voir son
contenu ;-)

@+

JP

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news:
Bonjour j-pascal,
Fais un tour chez Frédéric :
http://frederic.sigonneau.free.fr/Fichiers.htm
tu y trouveras au moins de quoi t'aider
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:
Bonsoir,

Dans le code qui suit, je souhaite que le répertoire dans lequel est
enregistré le classeur ouvert s'ouvre afin que je puisse
"manuellement" supprimer certains classeurs. Si j'utilise
"Application.Dialogs(xlDialogOpen).Show", on me propose d'ouvrir les
classeurs ! Pb, même si je peux supprimer tel ou tel classeur, je suis
contraint de cliquer sur "Annuler" pour fermer la boite de dialogue et
cela me prive de la fin de ma procédure !

Questions :
1 - Comment ouvrir une boite de dialogue qui n'affiche que les
classeurs (sans proposer de les ouvrir) et qui me permettrait d'en
supprimer certains ?
2 - Comment "paramètrer" (via le code) l'affichage du répertoire avec
l'affichage "Détails" (des classeurs) par défaut ?
3 - Est-il possible d'ajouter qqch dans le code pour que les classeurs
contenus dans ledit répertoire s'affichent par ordre chronologique ?

Le code (avec copyrights à JB et VbFrance ...), et les défauts
(copyrights JP ;-) ) :

'--------------------------------------
Private Sub Nettoyer_Click()

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n
Dim ChDir

Unload Menu

repertoire = ThisWorkbook.Path 'cible
masque = "*.xls" 'masque = "Form*"
nf = Dir(repertoire & "" & masque) 'nf = Dir(masque)
taille = 0
n = 0

Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop

MsgBox repertoire & Chr(10) & Chr(10) & "Contient : " & n & "
fichiers " _
& "(soit " & OctetsToKoMoGo(taille) & ")"

If taille > 50000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage
autorisé" & Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogOpen).Show repertoire 'Ce qui
pose problème !

Call Test_Mémoire
Else
MsgBox "Capacité de stockage autorisée non atteinte"
End If
End Sub
'------------------------------------------------

'------------------------------------------------
Public Function OctetsToKoMoGo(DATA) As String

Dim Décimales
Décimales = 2

Debug.Print DATA
If DATA < 1024 Then ' - d'1 Ko
OctetsToKoMoGo = DATA & " Octets"
ElseIf DATA >= 1024 And DATA < (1024 ^ 2) Then 'Entre 1
Ko et 1023Ko
OctetsToKoMoGo = (Round((DATA / 1024), Décimales)) & " Ko"
ElseIf DATA >= (1024 ^ 2) And DATA < (1024 ^ 3) Then 'Entre 1
Mo et 1023 Mo
OctetsToKoMoGo = (Round((DATA / (1024 ^ 2)), Décimales)) & "
Mo"
ElseIf DATA >= (1024 ^ 3) And DATA < (1024 ^ 4) Then 'Entre 1
Go et 1023 Go')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 3)), Décimales)) & "
Go"
ElseIf DATA >= (1024 ^ 4) And DATA < (1024 ^ 5) Then 'Entre 1
To et 1023 To')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 4)), Décimales)) & "
To"
End If

End Function
'-----------------------------------------------

Un grand merci d'avance pour vos lumières !

PS : si qq'un a une suggestion concernant la définition des variables,
je suis preneur :o)

JP














Avatar
j-pascal
Avec plaisir ;-)

JP

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonsoir,
Merci du retour d'information.
Je retiens l'existence de cette boîte de dialogue.
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%
Bonsoir Philippe,

En fait, j'ai trouvé ça :
http://www.info-3000.com/vbvba/boitedialogueintegree.php
(dont le contenu est à peu près à ma portée ;-) )
... et j'ai chargé le classeur joint. Ouhahh que de boites !!
Ensuite, j'ai créé un bouton pour ouvrir une macro toute bête du genre :

Sub essai ()
Application.Dialogs(xlDialog[CTRL ESP]).show
End Sub

Et j'ai essayé tout un tas de truc proposé par VBA jusqu'à ce que je
tombe sur :
"Application.Dialogs(xlDialogFileDelete).Show"
... C'est à dire, ce que je cherchais !

En résumé :

'----------------------
If taille > 5000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage autorisé"
& Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogFileDelete).Show repertoire
'----------------------
Avec repertoire = ThisWorkbook.Path

Ce qui est (presque dommage, c'est que je ne puisse pas utiliser CTRL
pour sélectionner plusieurs classeurs en même temps, mais bon ...

Ma question était sans doute peu claire, mais la solution est a priori
bcp plus simple que le code de JW (auquel je ne comprends rien !).

Merci pour ton aide et peut-être à bientôt ...

JP

PS : la journée a été dure et cette petite ligne de code me donne un peu
de baume au coeur ;-)


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news:
Re,
Dans cette solution :
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFile.txt
J. Walkenbach (l'auteur cité par Frédéric) utilise cette boîte de
dialogue :
SHBrowseForFolder(bInfo)
issue des API de Windows et qui permet de récupérer le chemin du fichier
que tu veux traiter
Dans la procédure, tu peux adapter le répertoire de départ, comme le
traitement appliqué au résultat (ici un message).
Tu remarqueras qu'il y en a 3 autres au choix, sans appel aux API (ce
qui devrait donc améliorer la portabilité vers Mac par exemple), dont la
1ère devrait être assez facile à adapter
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI.txt
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI2.txt
http://frederic.sigonneau.free.fr/code/Fichiers/BrowseForFolderOrFileSansAPI3.txt
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%
Bonjour Philippe,

Merci pour ta réponse.
Je viens de parcourir rapidement (je dois aller bosser ...) le contenu
Txt des ex. de fréd. s.
C'est très compliqué pour moi - Il y a dans le code, plein de termes
que je ne comprends absoument pas !
J'ai toujours à coeur d'essayer de comprendre ce que j'utilise dans mes
procédures, ne serait-ce que pour pouvoir expliquer ce que je fais à
l'utilisateur, si d'aventure il me posait la question !!
Je réétudie ça ce soir ...

PS : j'ai simplement besoin d'ouvrir un répertoire et de voir son
contenu ;-)

@+

JP

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news:
Bonjour j-pascal,
Fais un tour chez Frédéric :
http://frederic.sigonneau.free.fr/Fichiers.htm
tu y trouveras au moins de quoi t'aider
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:
Bonsoir,

Dans le code qui suit, je souhaite que le répertoire dans lequel est
enregistré le classeur ouvert s'ouvre afin que je puisse
"manuellement" supprimer certains classeurs. Si j'utilise
"Application.Dialogs(xlDialogOpen).Show", on me propose d'ouvrir les
classeurs ! Pb, même si je peux supprimer tel ou tel classeur, je
suis contraint de cliquer sur "Annuler" pour fermer la boite de
dialogue et cela me prive de la fin de ma procédure !

Questions :
1 - Comment ouvrir une boite de dialogue qui n'affiche que les
classeurs (sans proposer de les ouvrir) et qui me permettrait d'en
supprimer certains ?
2 - Comment "paramètrer" (via le code) l'affichage du répertoire avec
l'affichage "Détails" (des classeurs) par défaut ?
3 - Est-il possible d'ajouter qqch dans le code pour que les
classeurs contenus dans ledit répertoire s'affichent par ordre
chronologique ?

Le code (avec copyrights à JB et VbFrance ...), et les défauts
(copyrights JP ;-) ) :

'--------------------------------------
Private Sub Nettoyer_Click()

Dim repertoire
Dim masque
Dim nf
Dim taille
Dim n
Dim ChDir

Unload Menu

repertoire = ThisWorkbook.Path 'cible
masque = "*.xls" 'masque = "Form*"
nf = Dir(repertoire & "" & masque) 'nf = Dir(masque)
taille = 0
n = 0

Do While nf <> ""
taille = taille + FileLen(repertoire & "" & nf)
n = n + 1
nf = Dir()
Loop

MsgBox repertoire & Chr(10) & Chr(10) & "Contient : " & n & "
fichiers " _
& "(soit " & OctetsToKoMoGo(taille) & ")"

If taille > 50000000 Then 'à ajuster !
MsgBox "Vous avez atteint votre capacité de stockage
autorisé" & Chr(10) & Chr(10) & _
"Vous devez nettoyer votre répertoire !", vbCritical +
vbOKOnly, "Attention !"

Application.Dialogs(xlDialogOpen).Show repertoire 'Ce qui
pose problème !

Call Test_Mémoire
Else
MsgBox "Capacité de stockage autorisée non atteinte"
End If
End Sub
'------------------------------------------------

'------------------------------------------------
Public Function OctetsToKoMoGo(DATA) As String

Dim Décimales
Décimales = 2

Debug.Print DATA
If DATA < 1024 Then ' - d'1 Ko
OctetsToKoMoGo = DATA & " Octets"
ElseIf DATA >= 1024 And DATA < (1024 ^ 2) Then 'Entre 1
Ko et 1023Ko
OctetsToKoMoGo = (Round((DATA / 1024), Décimales)) & " Ko"
ElseIf DATA >= (1024 ^ 2) And DATA < (1024 ^ 3) Then 'Entre 1
Mo et 1023 Mo
OctetsToKoMoGo = (Round((DATA / (1024 ^ 2)), Décimales)) & "
Mo"
ElseIf DATA >= (1024 ^ 3) And DATA < (1024 ^ 4) Then 'Entre 1
Go et 1023 Go')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 3)), Décimales)) & "
Go"
ElseIf DATA >= (1024 ^ 4) And DATA < (1024 ^ 5) Then 'Entre 1
To et 1023 To')
OctetsToKoMoGo = (Round((DATA / (1024 ^ 4)), Décimales)) & "
To"
End If

End Function
'-----------------------------------------------

Un grand merci d'avance pour vos lumières !

PS : si qq'un a une suggestion concernant la définition des
variables, je suis preneur :o)

JP