Macro mise à jour auto valeur par cellule? [Résolu/Fermé]

Signaler
Messages postés
11
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
9 juin 2009
-
Messages postés
11
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
9 juin 2009
-
Bonjour,
j'ai une fonction qui fonctionne très bien :
"""
Function ValColonneCm()
ValColonneCm = Format(Selection.ColumnWidth / 4.663, "0.000")
End Function
"""
Elle affiche la taille, en cm, de la colonne de la cellule où elle est exécutée. (la cellule contient donc sa largeur)

Le problème c'est que cette fonction ne se met pas à jour automatiquement quand je change la taille de la colonne, je suis obligé de rentré dans la cellule, faire F2 puis ENTER. Ce qui, vu le nombre d'ajustements que je dois faire, me faire perdre beaucoup de temps.

J'ai tenté un :
"""
Application.Volatile
"""
En début de fonction, ca fonctionne déjà mieux (toutes les fonctions se mettent à jour au lieu d'une seule quand je fais la même manipulation) Sauf que la valeur n'est calculée qu'une seule fois et qu'elle est donc affichée partout pareil.
Exemple une colonne de 4cm, une de 2 et une de 6, je fais F2 puis ENTER sur celle de 6cm et, dans toutes les colonnes, serra affiché 6cm.

Cette fréquence de rafraîchissement des informations me suffirait si c'était calculé correctement donc si quelqu'un a une idée pour que j'ai les bonnes informations qui s'affichent au lieu de tout le temps la même, je suis preneur.
Cependant l'idéal serrait que cette information soit mise à jour automatiquement à chaque modification de taille de colonne.

Merci d'avance pour votre aide. :-)

Jema

3 réponses

Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 104
Bonjour,
Normale que tu ai toujours la même largeur vu que tu travaille sur la sélection, faut faire..
Public Function LgColonne()
    Application.Volatile
    LgColonne = Format(Application.Caller.ColumnWidth / 4.663, "0.000")
End Function

Et après avoir changer une ou plusieurs largeurs tu tape F9 pour forcer un recalcul.
A+
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60979 internautes nous ont dit merci ce mois-ci

Messages postés
11
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
9 juin 2009
1
Merci à Pierrot93 sur un autre forum pour sa réponse. (question de rapidité! ;-) )

Je poste pour ceux que ca intéresse.

La fonction devient :
"""
Function ValColonneCm(maplage As Range)
Application.Volatile
ValColonneCm = Format(maplage.ColumnWidth / 4.663, "0.000")
End Function
"""
et pour l'appel, ce n'est plus simplement "=ValColonneCm()" mais "=ValColonneCm(A1)" (A1 représente les coordonnées de la cellule où se trouve la fonction)

Jema
Messages postés
11
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
9 juin 2009
1
Yeahhhhhh, ta solution est plus élégante et plus facile à utiliser.

Tu es le vainqueur, question d'efficacité! ^^

Merci beaucoup! :-)

Jema