Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, faq, codes sources, astuces pour VBA
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Discussion fermée Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/06/2006, 19h31   #1
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
Par défaut Lire et modifier les propriétés des fichiers Office

bonjour


quelques exemples pour lire et modifier les propriétés des fichiers Office



Lire les propriétés d'un classeur par builtinDocumentProperties

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Sub infosClasseurBuiltinDocumentProperties()
Dim Valeur As DocumentProperty
Dim R As Byte
 
On Error Resume Next
R = 1
For Each Valeur In ActiveWorkbook.BuiltinDocumentProperties
    Cells(R, 1) = Valeur.Name
    Cells(R, 2) = Valeur.Value
    R = R + 1
Next
End Sub



Modifier le nom de l'auteur dans les propriétés du classeur , en utilisant BuiltinDocumentProperties

Code :
ThisWorkbook.BuiltinDocumentProperties("Author").Value = "xld"



Ajouter une propriété personnalisée dans le classeur actif

Code :
1
2
3
4
5
6
7
8
9
10
11
Sub ajouterProprietePersonnalisee()
ActiveWorkbook.CustomDocumentProperties.Add Name:="infoX", _
Type:=msoPropertyTypeNumber, LinkToContent:=False, Value:=1965
'Les types de données possibles :
'msoPropertyTypeNumber:Valeurs entieres
   '(si vous insérez 196.4 , c'est 196 qui sera enregistré )
'msoPropertyTypeFloat:Valeurs numériques
'msoPropertyTypeBoolean: Vrai ou Faux
'msoPropertyTypeDate: Dates et heures
'msoPropertyTypeString :Texte
End Sub



Boucler sur toutes les propriétés personnalisées du classeur actif

Code :
1
2
3
4
5
6
7
8
9
Sub bouclerSurToutesLesProprietesPersonnalisees()
Dim Cp As DocumentProperty
 
If ActiveWorkbook.CustomDocumentProperties.Count = 0 Then Exit Sub
 
For Each Cp In ActiveWorkbook.CustomDocumentProperties
    MsgBox Cp.Name & vbLf & Cp.Value
Next Cp
End Sub



Lire une propriété personnalisée spécifique

Code :
MsgBox ActiveWorkbook.CustomDocumentProperties("infoX").Value



Modfifier une propriété personnalisee

Code :
ActiveWorkbook.CustomDocumentProperties("infoX").Value = 1997



Supprimer une propriété personnalisée

Code :
ActiveWorkbook.CustomDocumentProperties("infoX").Delete





Afficher les propriétés de tous les fichiers d'un répertoire, sans les ouvrir

Code :
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
Sub proprietesFichiers()
'source:
' http://www.microsoft.com/resources/documentation/windows/2000/server/
'scriptguide/en-us/sas_fil_lunl.mspx
'
'Necessite d'activer la reference Microsoft Shell Controls and Automation
'
Dim objShell As Object, strFileName As Object
Dim objFolder As Folder
Dim Resultat As String
Dim i As Byte
 
Set objShell = CreateObject("Shell.Application")
'repertoire cible
Set objFolder = objShell.nameSpace("C:\Documents and Settings\michel\dossier")
 
'boucle sur tous les elements du repertoire
For Each strFileName In objFolder.Items
    'pour que les sous dosssiers ne soient pas pris en comptes
    If strFileName.isFolder = False Then
    Resultat = ""
        For i = 0 To 34
        Resultat = Resultat & objFolder.getDetailsOf(strFileName, i) & vbLf
        Next
    MsgBox Resultat
    End If
Next
End Sub




Lire quelques propriétés d'un classeur sans l'ouvrir : utilisation de GetFile

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub proprietesClasseur()
Dim Cible As Object, Valeur As Object
Dim Resultat As String, Fichier As String
 
Fichier = "C:\Classeur2.xls" 'adpater le chemin
Set Cible = createObject("Scripting.fileSystemObject")
Set Valeur = Cible.getFile(Fichier)
 
Resultat = "Chemin : " & Valeur.parentFolder & Chr(10) & Chr(10) & _
"Nom et chemin fichier : " & Fichier & Chr(10) & Chr(10) & _
"Date creation : " & Valeur.dateCreated & Chr(10) & Chr(10) & _
"Derniere modification : " & Valeur.dateLastModified & Chr(10) & Chr(10) & _
"Taille classeur : " & Valeur.Size & " octets"
 
Msgbox Resultat
End Sub




Afficher toutes les propriétés d'un classeur sans l'ouvrir

La procédure utilise la librairie DSO oleDocument Properties Reader 2.0
Si elle n'est pas installée sur ton poste , vous pouvez la télécharger sur le site Microsoft :

http://support.microsoft.com/default...;EN-US;Q224351

Remarque :
Cette librairie fonctionne pour tous les documents Office ( Excel, Word , Powerpoint …)


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub lireProprietesClasseur()
'necessite d'activer la reference DSO OleDocument Properties Reader 2.0
'http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q224351
Dim DSO As DSOFile.OleDocumentProperties
 
Set DSO = New DSOFile.OleDocumentProperties
 
'le fichier doit etre fermé !
DSO.Open sfilename:="C:\Documents and Settings\michel\dossier\leClasseur.xls"
MsgBox DSO.SummaryProperties.Author & vbLf & DSO.SummaryProperties.Comments
'
'Les autres propriétés:
'
'ApplicationName 'Author 'ByteCount 'Category 'CharacterCount 
'CharacterCountWithSpaces'Comments 'Company 'DateCreated 
'DateLastPrinted 'DateLastSaved 'HiddenSlideCount
'Keywords 'LastSavedBy 'LineCount 'Manager 'MultimediaClipCount 
'NoteCount 'PageCount 'ParagraphCount 'PresentationFormat 
'RevisionNumber 'SharedDocument 'SlideCount
'Subject 'Template 'Title 'TotalEditTime 'Version 'WordCount
'
DSO.Close
End Sub



Modifier les propriétés d'un classeur sans l'ouvrir

Exemple pour modifier le champ "commentaire" d'un fichier

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub modifierProprietesClasseur()
'necessite d'activer la reference DSO OleDocument Properties Reader 2.0
'http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q224351
Dim DSO As DSOFile.OleDocumentProperties
 
Set DSO = New DSOFile.OleDocumentProperties
 
'le fichier doit etre fermé !
DSO.Open sfilename:="C:\Documents and Settings\michel\monFichier.xls"
DSO.SummaryProperties.Comments = "mon nouveau commentaire"
DSO.Save
DSO.Close
End Sub



Ajouter une propriété personnalisée au classeur sans ouvrir le fichier

La procédure utilise aussi la librairie DSO oleDocument Properties Reader 2.0 et fonctionne pour les autres types de documents Office

Code :
1
2
3
4
5
6
7
8
9
10
11
Sub AjouterProprietesPersonnalisees()
Dim DSO As DSOFile.OleDocumentProperties
 
Set DSO = New DSOFile.OleDocumentProperties
 
'le fichier doit etre fermé !
DSO.Open sfilename:="C:\Documents and Settings\michel\monfichier.xls"
DSO.CustomProperties.Add "maPropriete", "Bonjour"
DSO.Save
DSO.Close
End Sub



Lire une propriété personnalisée sans ouvrir le fichier

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub LireProprietesPersonnalisees()
'necessite d'activer la reference DSO OleDocument Properties Reader 2.0
'http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q224351
Dim DSO As DSOFile.OleDocumentProperties
 
Set DSO = New DSOFile.OleDocumentProperties
 
'le fichier doit etre fermé !
DSO.Open sfilename:="C:\Documents and Settings\michel\dossier\monClasseur.xls"
MsgBox DSO.CustomProperties.Item("LeNomDeMaProprietePersonnalisee").Value
'ou ( l'index de la 1ere propriete personnalisée est 0 )
'MsgBox DSO.CustomProperties.Item(0).Value
DSO.Close
End Sub





Passer un classeur en lecture seule , sans l'ouvrir

Code :
1
2
3
4
5
6
7
8
9
Sub passerClasseur_lectureSeule()
'necessite d'activer la reference Microsoft Scriping Runtime
Dim Fs As FileSystemObject
Dim F As File
 
Set Fs = CreateObject("Scripting.FileSystemObject")
Set F = Fs.GetFile("C:\classeur1.xls")
F.Attributes = F.Attributes + ReadOnly
End Sub


La fonction FileDateTime

Renvoie la date et l'heure de création ou de dernière modification d'un fichier

Code :
MsgBox FileDateTime("C:\monClasseur.xls")



bonne soiree
michel
SilkyRoad est déconnecté   Envoyer un message privé 00
Vieux 17/08/2006, 20h33   #2
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonsoir

pour info, j'ai complèté les exemples sur cette page

http://silkyroad.developpez.com/VBA/...etesClasseurs/


bonne soirée
michel
SilkyRoad est déconnecté   Envoyer un message privé 00
Vieux 18/09/2006, 21h32   #3
Responsable Visual Basic
 
Avatar de ThierryAIM
 
Homme Thierry
Inscription : septembre 2002
Messages : 3 670
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 49
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2002
Messages : 3 670
Points : 5 672
Points : 5 672
On publie comme tuto ou comme Q/R FAQ ?
__________________
Vous vous posez une question, la réponse est peut-être ici :
Toutes les FAQs VB
Les Cours et Tutoriels VB6/VBScript
Les Sources VB6


Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

MioSkins.org : le site de référence pour GPS et PDA Mitac MIO
iPHONIX.fr : le must francophone des infos pour iPhone, iPad, ...
ThierryAIM est déconnecté   Envoyer un message privé 00
Vieux 18/09/2006, 22h16   #4
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
Q/R FAQ ...;o)
SilkyRoad est déconnecté   Envoyer un message privé 00
Vieux 18/09/2006, 22h25   #5
Responsable Visual Basic
 
Avatar de ThierryAIM
 
Homme Thierry
Inscription : septembre 2002
Messages : 3 670
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 49
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2002
Messages : 3 670
Points : 5 672
Points : 5 672
Une entrée FAQ pour la prochaine MAJ et annonce du tutoriel

sujet clos, Merci
__________________
Vous vous posez une question, la réponse est peut-être ici :
Toutes les FAQs VB
Les Cours et Tutoriels VB6/VBScript
Les Sources VB6


Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

MioSkins.org : le site de référence pour GPS et PDA Mitac MIO
iPHONIX.fr : le must francophone des infos pour iPhone, iPad, ...
ThierryAIM est déconnecté   Envoyer un message privé 00
Discussion fermée Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h38.


 
 
 
 
Partenaires

Hébergement Web