utilisation des propriétés fichier

Y

yoyo

Guest
Bonjour,

Je désire mettre à jour automatiquement des cellules d'un fichier excel à partir de ses propriétés personnalisées. J'ai essayé par cette méthode (hypothèse : j'ai nommé les cellules à mettre à jour par le nom de la propriété) :
Private Sub Workbook_Open()
For Each Propriete In ThisWorkbook.BuiltinDocumentProperties
Range("Propriete.Name").ClearContents
Range("Propriete.Name").Value = ThisWorkbook.CustomDocumentProperties("Propriete.Name").Value
Next
End Sub

L'intérêt de cet algorithme est de n'effacer que les cellules qui seront ensuite remplacées par la valeur de la propriété (et donc pas les cellules remplies manuellement car la propriété personnalisée n'a pas été créé...).

Mais cela ne fonctionne pas (mauvaise utilisation de la méthode "Range", apparemment). Quelqu'un pourrait-il me donner un coup de pouce ?

Merci d'avance.
 
Z

Zon

Guest
Salut,

Je pense qu'il y a 2 erreurs dans ton code:

Si tu as une cellule nommée Title on peut l'appeler Range("Title") en VBA, par contre quand on passe par une variable ou un résultat (pas besoin de guillemets) on utilise Range(propriete.name). La 2 ème comme on ne peut pas nommé de cellule avec une nom contenant des espaces, tu ne peux pas nommer une cellule 'Creation date". Pour cela je te mets en colonne A
les propriétés.
Donc voivi un bout de code en admettant que tu es nommé les cellules correctement:
Sub Propert()
Dim P As DocumentProperty
Dim C As String
Dim T, I As Byte 'a supprimer
ReDim T(I)'a supprimer
For Each P In ActiveWorkbook.BuiltinDocumentProperties
C = SupprEspace(P.Name)
'"""'a supprimer
T(I) = C
I = I + 1
ReDim Preserve T(I)
'""""""""""""
On Error Resume Next
Range(C) = P.Value
If Err <> 0 Then Range(C).ClearContents
Err.Clear
Next P
[A1].Resize(UBound(T)) = Application.Transpose(T)
End Sub
Private Function SupprEspace(Chaine As String) As String
While InStr(Chaine, " ") > 0
Chaine = Replace(Chaine, " ", "")
Wend
SupprEspace = Chaine
End Function

A+++
 
Y

yoyo

Guest
Merci pour ces infos. Effectivement, la macro fonctionne maintenant à merveille. Il me reste un dernier point : je suohaiterait qu'elle s'ouvre automatiquement dès l'ouverture d'excel. Je flaire qu'il faille enregistrer cette macro dans le répertoire "Xlouvrir" de MSOffice, mais je ne vois pas comment enregistrer seule la macro sans fichier (et je ne sais pas si c'est la bonne méthode...).

Quel serait la démarche à effectuer ?

Merci d'avance.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 017
Messages
2 104 583
Membres
109 084
dernier inscrit
mizab