Autres modifier du vba par macro

lio63

XLDnaute Nouveau
Bonjour,

J'ai un fichier qui a l'ouverture (workbook open) verifie que la date du jour est inferieure a la date de verification inscrite dans VBA
ex :
Dim D As Date
D = "10/6/2020"
If D < Date Then Workbooks.Close Else...

si la date est depassée je voudrai qu'au lieu de fermer de suite une boite de dialogue s'ouvre et verifie un calcul qui serait mon nombre MN puis un calcul avec la date de "fin" de fonctionnement et la date pour verifier que le fonctionnement est "assuré" et que de ce on puisse ajouter 6 mois a la date de fin qui passerait dans l'exempe de 10/6/2020 a 10/12/2020.... Cela est il possible ou juste trop idealisé pour excel ? (je suis sous la version excel 2007)

Merci de votre aide
Lionel
 
Solution
Bonjour,

Un nom caché ou masqué est un nom comme les autres mis à part que sa propriété .Visible a été mise à False par macro. Ce nom n'apparaîtra pas dans la boîte de dialogue du gestionnaire de noms.

Quant à CustomProperty, une simple recherche (excel vba customproperty) sur google donne déjà pas mal de chose notamment la définition de la maison mère : https://docs.microsoft.com/fr-fr/office/vba/api/excel.customproperties

Bonne recherches

dysorthographie

XLDnaute Accro
Une très grande entreprise pour laquelle j'ai travaillé à poursuivit un chef de service pour beaucoup moins que ça !

La raison peut ne pas avoir d'importance , le message en revanche !

Ça ressemble à un départ en bon terme ! J'arrête de diserter sur le sujet et me tiens à disposition sur le lien fourni.
 

Staple1600

XLDnaute Barbatruc
Re

Heureusement, je nomme personne et j'ai ajouté un emoticone
(qui signale l'ironie)
J'aurai pu aussi écrire
"D'un autre côté, une entreprise qui serait en danger par le biais d'un simple fichier Excel, ça ne devrait pas courir les rues.
Une parc informatique sous Windows* suffit pour cela ;)
(*: non MAJ)"

NB: En relisant le fil, je ne sais pas à qui s'adressait le dernier message de dysorthographie.
 

Staple1600

XLDnaute Barbatruc
Re

Voila, j'ai tout lu.
Il y avait de la passion, des coups, des invectives.
Et au final, Excel n'est pas secure mais on l'aime bien parce qu'avec son VBA, on s'imagine programmeur.

Pour revenir, à la question:
1) Combien de personnes utilisent le classeur?
2) Pourquoi limiter son temps d'utilisation ?
3) Pourquoi ne pas simplement créer différents profils d'accès à ce classeur?

NB: En gardant à l'esprit, que tous ces efforts seront caduques, si un des utilisateurs n'est plus un "beotien" d'Excel.
 

Staple1600

XLDnaute Barbatruc
Re

Un exemple (à ne pas utiliser ou alors si on a un penchant pour les guichets de Pole Emploi)
VB:
'------------------ A copier à l'endroit idoine------------------
Private Sub Workbook_Open()
    Dim intOpentimes As Integer
    Call AddCustomDocumentProperties
    With Me
        intOpentimes = .CustomDocumentProperties _
            ("Opentimes").Value + 1
        If intOpentimes > 3 Then    'Limit 3 times
            .Saved = True
            .ChangeFileAccess xlReadOnly
            Kill .FullName
            .Close False
        Else
            .CustomDocumentProperties("Opentimes"). _
                Value = intOpentimes
            .Save
        End If
    End With
End Sub

'------------------ A copier à l'endroit idoine ------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ActiveWorkbook.RemovePersonalInformation = False
End Sub

'---> A copier à l'endroit adéquat=> mdlAddCustomDocumentProperties
Sub AddCustomDocumentProperties()
    On Error Resume Next
    ThisWorkbook.CustomDocumentProperties.Add _
        Name:="OpenTimes", _
        LinkToContent:=False, _
        Type:=msoPropertyTypeNumber, _
        Value:=0
End Sub
NB: Pour que cela fonctionne, il faudra mettre les choses au bon endroit.
Je n'en dis pas plus, c'est mon auto-dédouanement ;)

PS: Ce code est issu de mes archives d'Outre-Manche.
Je n'en suis pas point l'auteur (Je tiens à mon CDI ;))

NB: Si j'étais moi, la première chose que je ferai c'est d'ouvrir un tel classeur sans activer les macros, du coup adieu la radicalité ;)
 
Dernière édition:

lio63

XLDnaute Nouveau
Re

Un exemple (à ne pas utiliser ou alors si on a un penchant pour les guichets de Pole Emploi)
VB:
'------------------ A copier à l'endroit idoine------------------
Private Sub Workbook_Open()
    Dim intOpentimes As Integer
    Call AddCustomDocumentProperties
    With Me
        intOpentimes = .CustomDocumentProperties _
            ("Opentimes").Value + 1
        If intOpentimes > 3 Then    'Limit 3 times
            .Saved = True
            .ChangeFileAccess xlReadOnly
            Kill .FullName
            .Close False
        Else
            .CustomDocumentProperties("Opentimes"). _
                Value = intOpentimes
            .Save
        End If
    End With
End Sub

'------------------ A copier à l'endroit idoine ------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ActiveWorkbook.RemovePersonalInformation = False
End Sub

'---> A copier à l'endroit adéquat=> mdlAddCustomDocumentProperties
Sub AddCustomDocumentProperties()
    On Error Resume Next
    ThisWorkbook.CustomDocumentProperties.Add _
        Name:="OpenTimes", _
        LinkToContent:=False, _
        Type:=msoPropertyTypeNumber, _
        Value:=0
End Sub
NB: Pour que cela fonctionne, il faudra mettre les choses au bon endroit.
Je n'en dis pas plus, c'est mon auto-dédouanement ;)

PS: Ce code est issu de mes archives d'Outre-Manche.
Je n'en suis pas point l'auteur (Je tiens à mon CDI ;))

NB: Si j'étais moi, la première chose que je ferai c'est d'ouvrir un tel classeur sans activer les macros, du coup adieu la radicalité ;)
ok pour ce code mais c'est la que le bas blesse... vous apportez une solution sans expliquer ni ou ni quoi en faire ...mettre a l'"endroit adequat" ?
 

Staple1600

XLDnaute Barbatruc
Re

=>lio63
Oui, c'est volontaire (dans le cadre de ce fil)
Je suis assez enclin à ce que le demandeur mette la main dans le cambouis. ;)
Ton premier message laisse augurer que tu sais quels sont les endroits possibles où coller du code VBA.
A toi d'être curieux, de progresser par tests (erreur/échec etc...)

Cela me permets de poster un code "fonctionnel" mais qui nécessite un investissement du demandeur.
Si j'avais posté un code prêt à l'emploi, un lecteur peu aguerri aurait pu faire des boulettes.
Là, si elles sont faites, ce sera sciemment et je n'en serai point responsable. ;)

PS: Je n'ai jamais écris que c'était une solution mais un exemple.
Et de solution, il n'y en a pas de secure, nous avons été plusieurs à te le dire (entre autres choses)
 

lio63

XLDnaute Nouveau
Re

=>lio63
Oui, c'est volontaire (dans le cadre de ce fil)
Je suis assez enclin à ce que le demandeur mette la main dans le cambouis. ;)
Ton premier message laisse augurer que tu sais quels sont les endroits possibles où coller du code VBA.
A toi d'être curieux, de progresser par tests (erreur/échec etc...)

Cela me permets de poster un code "fonctionnel" mais qui nécessite un investissement du demandeur.
Si j'avais posté un code prêt à l'emploi, un lecteur peu aguerri aurait pu faire des boulettes.
Là, si elles sont faites, ce sera sciemment et je n'en serai point responsable. ;)

PS: Je n'ai jamais écris que c'était une solution mais un exemple.
Et de solution, il n'y en a pas de secure, nous avons été plusieurs à te le dire (entre autres choses)

Je suis tout a fait d'accord avec le principe pour evoluer... mais custom property ? un nom non visible ? je ne savais meme pas que ca existait... qu'est ce donc et ou trouver des infos sur ca ?
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Un nom caché ou masqué est un nom comme les autres mis à part que sa propriété .Visible a été mise à False par macro. Ce nom n'apparaîtra pas dans la boîte de dialogue du gestionnaire de noms.

Quant à CustomProperty, une simple recherche (excel vba customproperty) sur google donne déjà pas mal de chose notamment la définition de la maison mère : https://docs.microsoft.com/fr-fr/office/vba/api/excel.customproperties

Bonne recherches
 

Discussions similaires

Réponses
5
Affichages
422
Réponses
20
Affichages
521

Membres actuellement en ligne

Statistiques des forums

Discussions
314 655
Messages
2 111 604
Membres
111 217
dernier inscrit
aladinkabeya2