Je veux insérer du temps dans une plage qui ne devrait pas être mise à jour automatiquement. Par exemple, s'il existe une valeur dans la cellule n ° k5, l'heure actuelle doit automatiquement être insérée dans la cellule n5. De même, s’il existe une valeur dans k6, l’heure actuelle doit être automatiquement insérée dans N6, etc. Un dernier point que je voudrais apporter à votre aimable remarque qu’il existe également une formule dans la colonne K entière, donc Si je tape toute valeur dans une cellule de la colonne K indique le résultat calculé dans la cellule correspondante (colonne K). De plus, l'heure ne devrait pas être mise à jour automatiquement. J'ai essayé d'utiliser cette formule
= IF (K5 <0, "", IF (K5 = 0, "", NOW ()))
Cette formule fonctionne mais met à jour automatiquement l'heure avec l'horloge du système. Je veux qu'il ne faut pas mettre à jour l'heure. Vous pouvez aussi voir l'instantané:
De l'aide?
la source
Réponses:
Vous pouvez utiliser un objet com dans AutoHotkey mais je ne recommanderais pas de le faire de cette façon.
Si vous placez une
Worksheet_Change()
macro dans votre feuille de calcul, Excel l’évalue chaque fois que vous saisissez manuellement un élément (c’est-à-dire lorsque vous mettez à jour une cellule ou que vous le modifiez). La macro recevra l'objet Range de la ou des cellules modifiées, de sorte que vous pouvez obtenir la ligne et la colonne à partir de l'objet Range. Si la colonne est une colonne qui vous tient à cœur (dans votre cas, colonneK
), vous utilisez la même ligne et une colonne différente (dans votre cas, colonneN
) pour insérer l'heure. LaWorksheet_Change()
macro sera appelée pour toutes les mises à jour de la feuille de calcul chaque fois qu'une cellule est modifiée. Il est donc important de distinguer les colonnes qui vous intéressent, car la routine sera également exécutée pour toutes les mises à jour des colonnes qui ne vous intéressent pas.L'exemple de code ci-dessous devrait être facile à adapter. Il est conçu avec quelques variantes que vous pouvez supprimer et adapter à votre situation.
K
niN
.Description de l'article 3 en détail:
MyRange = Range("1:1")
est une ligne d'en-tête (ce qui est généralement joli aussi)1
), il trouve ensuite les en-têtes de colonne qui sont importants pour déclencher une mise à jour.Cette configuration vous permet d’utiliser une ligne d’en-tête étiquetée dans la première ligne et de déplacer les colonnes plus tard librement (insérer ou supprimer des colonnes où que vous soyez), tout en maintenant le bon fonctionnement de l’insertion automatique même si les cellules qui vous intéressent ne se trouvent plus au bon endroit. emplacement identique
K
ouN
colonne plus longtemps. Si vous ne vous en souciez pas, vous pouvez bien sûr laisser votre feuille de calcul sans en-têtes, effacer leWorksheetFunction.Match
code et utiliser des adresses de colonne codées en dur.Pour utiliser ce code, ouvrez l’éditeur VBA - il y aura généralement une arborescence à gauche affichant VBAProject (Nom du fichier) avec un sous-dossier pour les objets Microsoft Excel, puis des sous-éléments pour chacune des trois feuilles ( nouveau classeur) ainsi que ThisWorkbook. Double-cliquez sur la feuille sur laquelle vous souhaitez travailler, puis insérez la
Worksheet_Change()
fonction ci-dessous pour pouvoir l'utiliser et la modifier pour cette feuille.la source