Macro calcul automatique + gestion date

Bonjour tout le monde,

J'aimerai pouvoir créer une macro qui me permettra de faire un calcul automatique. Ce calcul sera effectué après avoir sélectionné manuellement la cellule dans laquelle je veux que le résultat apparaisse.

Avec comme exemple le fichier joint:

Je sélectionne manuellement la cellule I15/16 (cellule fusionnée).

Je lance ensuite la macro qui fait le calcul suivant:

I13/14- (G15/16-G13/14) "en minutes" * 60 * H13/14

Le calcul de date doit me donner des minutes dans tous les cas. Le résultat sera affiché dans la cellule sélectionnée au départ.

Lorsque j'ai essayé de faire ma macro je me suis perdu dans les cellules fusionnées (malheureusement je suis obligé de les laisser fusionnées) et surtout pour faire un calcul de date et transformer en minutes.

Merci de votre aide.

29exemplemacro.xlsx (9.56 Ko)

Bonsoir,

=I13-(G15-G13)*1440*H13

Lorsque des cellules sont fusionnées, une seul a une existence et peut contenir une valeur !

Les valeur date-heures ont pour unité le jour (soit 24 h, ou 1440 min, ou 86400 s).

Inutile de mobiliser VBA pour ce petit calcul !

Cordialement.

Bonjour,

je sais que c'est un simple calcul. Je dois le faire de facon régulière. Je demande une macro pour accélérer ce processus (le refaire 4-5 fois par jour c'est une perte de temps) et de plus c'est pour essayer de comprendre un peu plus les macros. En effet, ce genre de calculs se retrouve dans d'autres tableurs et donc je pourrais appliquer cette macro (avec des modifications).

Merci

Quand tu mets une formule, elle demeure, et continue de calculer. Et est plus rapide à mettre en oeuvre qu'une macro...

Une macro VBA ne fonctionnera pas sur un autre tableur qu'Excel.

Je suis d'accord mais pour mes besoins, de temps en temps, je dois faire le calcule et d'autre fois je dois juste inscrire une valeur.

En ce moment je le fais à la calculette...

Concernant le fait de pouvoir l'utiliser dans d'autres tableurs, je pensais à une macro qui utilise comme point de départ la cellule active (sélectionnée par l'utilisateur), ensuite la disposition est toujours la même. Donc pour "récolter" les différentes valeurs requises pour le calcul, ce sera toujours les cellules adjacentes.

Si cela peut t'amuser...

Sub Calculer()
    With ActiveCell
        .Value = .Cells(-1, 1) - (.Cells(1, -1) - .Cells(-1, -1)) * 1440 * .Cells(-1, 0)
    End With
End Sub

Ha oui, je ne voyais pas ca aussi simple....

J'étais parti dans dans des déclarations de variables pour chaque cellule. Avec différents types de cellules (date, nombre...).

Merci de ton aide !

On fait simplement le calcul (le même que la formule) en utilisant un adressage relatif par rapport à la cellule résultat sélectionnée.

J'ai une dernière question, l'adressage relatif n'est pas explicite pour moi je m'explique:

Si je prends comme exemple la première commande cells(-1,1). En regardant le fonctionnement de cette commande, je devrais me retrouver à une ligne au-dessus et une colonne à droite. mais je sais que ce n'est pas le cas. Elle fait référence à la ligne juste au-desssus. Donc pourquoi avoir besoin de mettre +1 pour la colonne par rapport à la cellule active ?

Avec ...Offset(-1, 1) tu devrais effectivement te retrouver une ligne au-dessus et sur la colonne de droite, car tu paramètres un décalage par rapport à une cellule (dont le décalage par définition est nul : ....Offset(0, 0).

Mais avec ...Cells tu paramètres des numéros de ligne par rapport à une cellule qui est elle-même : Cells(1, 1). Donc avec Cells(-1, 1) tu as reculé de 2 rangs en ligne, et te trouves donc 2 lignes au-dessus, mais dans la même colonne (l'index n'a pas bougé).

Il te faut aussi tenir compte de tes fusions qui affectent les lignes. En cas de fusion, on ne peut cibler que la cellule supérieure gauche de la fusion, seule à contenir éventuellement quelque chose. Mais les lignes (ou colonnes) des fusions comptent toujours dans les écarts.

2017 09 26 180540

La cellule jaune est la cellule active de référence...

Ok je comprends mieux maintenant. J'utilisais offset justement dans mon début de macro (en regardant des exemples sur internet).

Merci beaucoup de ton aide !

Bonne continuation.

Rechercher des sujets similaires à "macro calcul automatique gestion date"