Excel/VBA : transformer sub en fonction

Bonsoir,

Je vous sollicite car je bloque sur un code et ne sais pas si ma demande est envisageable.

J'ai une sub 'chrono' qui me permet de réaliser un compteur à partir de la cellule active. Le plus simple est de tester avec les valeurs 3 et 4 la sub ci dessous pour comprendre à quoi elle sert.

exemple :

13exemple.zip (14.38 Ko)
Sub chrono()

a = ActiveCell.Row
b = ActiveCell.Column
c = InputBox("nombre de bloc")
d = InputBox("hauteur bloc")

For i = 1 To c
Cells(a, b).Value = i
a = a + d
Next i

End Sub

Ma demande est la suivante, je souhaite transformer cette sub en fonction, pour permettre à un utilisateur de rentrer une fonction dans une cellule d'une feuille excel, et ensuite en rentrant les paramètres voulus, le compteur se lance. Cependant, le code ci-dessous me donne des références circulaires. Après lorsque je reclique sur la cellule active, le compteur marche. Quelqu'un a une idée pour que la fonction ci-dessous n'affiche pas de références circulaires ?

Function chro(c, d)

a = ActiveCell.Row
b = ActiveCell.Column

For i = 1 To c
Cells(a, b).Value = i
a = a + d
Next i

End Function

Merci pour votre aide.

Bonjour

Sauf erreur de ma part

Une fonction ne peut pas modifier une autre cellule, alors je suis étonné quand tu dis que la fonction fonctionne

Bonne nuit

Merci d'avoir répondu Banzai.

En effet, avec la fonction chro, en testant dans une cellule =chro(3;4) :

J'ai d'abord un message m'indiquant qu'il y a une référence circulaire. Ensuite, je re-clique sur cette référence et le compteur marche. En voyant ça, je me suis dit qu'il y avait peut être moyen d'utiliser une fonction pour faire un compteur sur plusieurs cellules. Je voulais passer par une fonction pour tester mais apparemment on ne peux pas.

merci à toi. bonne nuit également

Rechercher des sujets similaires à "vba transformer sub fonction"