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

Dudu2

XLDnaute Barbatruc
Bonjour,
Je serais curieux de connaître "mon nombre MN". Personnellement on ne m'en a pas encore attribué.
Au lieu de mettre cette date en béton dans le code, pourquoi simplement ne pas la placer quelque part parmi les millions de cellules d'une feuille Excel ? Le code pourrait la modifier à loisir.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

dans un nom non visible ? :
VB:
Sub NomNonVisible()
    Dim dte As Date
    dte = DateSerial(2020, 6, 10)
    '
    ' Création d'un nom non visible
    Application.Names.Add "MonMN", dte, False
    '
    ' Affichage de la valeur actuelle du nom
    Debug.Print Format([MonMN], "dd mmmm yyyy")
    '
    ' Modification de la valeur du nom
    Application.Names("MonMN").RefersTo = DateSerial(Year(dte), Month(dte) + 6, Day(dte))
    '
    ' Réaffichage après modification
    Debug.Print Format([MonMN], "dd mmmm yyyy")

End Sub

Cordialement
 

Dudu2

XLDnaute Barbatruc
Que de propositions originales intéressantes ! D'autant que la date peut être mise sous forme numérique encodée avec quelques opérations arithmétiques simples et donc non interprétable directement... Sauf au vu du VBA dont l'accès peut-être protégé par un mot de passe (craquable certes, mais là faut vraiment en vouloir !).
 

lio63

XLDnaute Nouveau
Ouh la ca va trop vite pour moi...
une custom property ? un nom non visible ? quezako?
le bout de code fourni fonctionne comment ?

lors de l'ouverture du fichier si la date est depassée je veux ouvrir une boite de dialogue qui calcule a partir de la date de peremption du nombre perso un code qui permette le declenchement du changement de date ou la fermeture du fichier...
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
re,

le bout de code fourni fonctionne comment ?

L'avez-vous seulement testé.
Mettez le dans un module quelconque.
Appuyez sur CTRL+G pour ouvrir la fenêtre d'exécution dans laquelle vous verrez les affichages de dates (Debug.Print)
Cliquez dans la procédure et faites F8 pour l'exécuter en pas à pas (une ligne après l'autre) ou F5 pour la l'exécuter en entier.

Revenez éventuellement avec des questions plus précises.

Cordialement
 

lio63

XLDnaute Nouveau
re,



L'avez-vous seulement testé.
Mettez le dans un module quelconque.
Appuyez sur CTRL+G pour ouvrir la fenêtre d'exécution dans laquelle vous verrez les affichages de dates (Debug.Print)
Cliquez dans la procédure et faites F8 pour l'exécuter en pas à pas (une ligne après l'autre) ou F5 pour la l'exécuter en entier.

Revenez éventuellement avec des questions plus précises.

Cordialement
Je vois bien le fonctionnement mais je ne vois pas comment l'utiliser dans mon fichier... la date de reference reste toujours le 10/6/2020 dans le test workbook open....
 

lio63

XLDnaute Nouveau
Il me semblait que la demande etait claire quelque soit le classeur d'ailleurs !
un fichier qui a l'ouverture (workbook open) utilise le code que j'ai mis dans le premier post qui verifie que le date à l'ouverture est inferieure a la date limite (10/6/2020).
lorsque la date est ok le fichier termine de s'ouvrir sinon il faudrait :
une boite de dialogue qui demande un code (MN par exemple 23511) et si le code est juste que la date du 10/6/2020 dans le workbook open soit prolongé de 6mois sinon workbook close ...
Comment faire pour mieux expliquer ... quelque soit le fichier excel ce test a lieu avant son ouverture ...
Merci de votre aide et du temps passé
 

Discussions similaires

Réponses
3
Affichages
235

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG