Impossible d'écrire dans une cellule depuis une fonction
6 réponses
TTT
Bonjour;
J'ai un pb. Quand je fais ça, ça explose :
Function X()
Range("A1").value = 18
End Function
Alors que qd je fais ça, ça marche :
Sub X()
Range("A1").value = 18
End Sub
On trouve bien la valeur 18 en cellule A1.
Pourquoi? y a-t-il moyen de contourner?
Voilà en fait ce que je veux :
Function TableMultiplicationNxN(ByVal rg as Range, ByVal N as Integer) as
string
for i = 1 to N
for j = 1 to N
rg(i, j) = i * j
Next
Next
TableMultiplicationNxN = "Table " & N & "x" & N & " créée avec succès".
End Function
En gros, je passe un range en paramètre à une fonction, la fonction fait des
calculs très compliqués et écrit les résultats dans le range. Puis en valeur
unique de retour, un code ou un message signalant que tout s'est bien passé.
Pourquoi je peux pas faire ça?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacky
Bonsoir, '--------- Function x() x = 18 End Function '----------- Dans une cellule =X()
-- Salutations JJ
"TTT" a écrit dans le message de news: 47000137$0$8023$
Bonjour;
J'ai un pb. Quand je fais ça, ça explose : Function X() Range("A1").value = 18 End Function
Alors que qd je fais ça, ça marche : Sub X() Range("A1").value = 18 End Sub On trouve bien la valeur 18 en cellule A1.
Pourquoi? y a-t-il moyen de contourner? Voilà en fait ce que je veux : Function TableMultiplicationNxN(ByVal rg as Range, ByVal N as Integer) as string for i = 1 to N for j = 1 to N rg(i, j) = i * j Next Next TableMultiplicationNxN = "Table " & N & "x" & N & " créée avec succès". End Function En gros, je passe un range en paramètre à une fonction, la fonction fait des calculs très compliqués et écrit les résultats dans le range. Puis en valeur unique de retour, un code ou un message signalant que tout s'est bien passé. Pourquoi je peux pas faire ça?
Merci d'avance.
Bonsoir,
'---------
Function x()
x = 18
End Function
'-----------
Dans une cellule
=X()
--
Salutations
JJ
"TTT" <hieu.protectspam@laposte.net> a écrit dans le message de news:
47000137$0$8023$426a74cc@news.free.fr...
Bonjour;
J'ai un pb. Quand je fais ça, ça explose :
Function X()
Range("A1").value = 18
End Function
Alors que qd je fais ça, ça marche :
Sub X()
Range("A1").value = 18
End Sub
On trouve bien la valeur 18 en cellule A1.
Pourquoi? y a-t-il moyen de contourner?
Voilà en fait ce que je veux :
Function TableMultiplicationNxN(ByVal rg as Range, ByVal N as Integer) as
string
for i = 1 to N
for j = 1 to N
rg(i, j) = i * j
Next
Next
TableMultiplicationNxN = "Table " & N & "x" & N & " créée avec succès".
End Function
En gros, je passe un range en paramètre à une fonction, la fonction fait
des calculs très compliqués et écrit les résultats dans le range. Puis en
valeur unique de retour, un code ou un message signalant que tout s'est
bien passé.
Pourquoi je peux pas faire ça?
Bonsoir, '--------- Function x() x = 18 End Function '----------- Dans une cellule =X()
-- Salutations JJ
"TTT" a écrit dans le message de news: 47000137$0$8023$
Bonjour;
J'ai un pb. Quand je fais ça, ça explose : Function X() Range("A1").value = 18 End Function
Alors que qd je fais ça, ça marche : Sub X() Range("A1").value = 18 End Sub On trouve bien la valeur 18 en cellule A1.
Pourquoi? y a-t-il moyen de contourner? Voilà en fait ce que je veux : Function TableMultiplicationNxN(ByVal rg as Range, ByVal N as Integer) as string for i = 1 to N for j = 1 to N rg(i, j) = i * j Next Next TableMultiplicationNxN = "Table " & N & "x" & N & " créée avec succès". End Function En gros, je passe un range en paramètre à une fonction, la fonction fait des calculs très compliqués et écrit les résultats dans le range. Puis en valeur unique de retour, un code ou un message signalant que tout s'est bien passé. Pourquoi je peux pas faire ça?
Merci d'avance.
JB
Bonsoir,
Une fonction contrairement à une procédure (Sub) retourne un résultat mais ne peut pas agir sur une cellule. Le résultat peut être une valeur, un tableau.
J'ai un pb. Quand je fais ça, ça explose : Function X() Range("A1").value = 18 End Function
Alors que qd je fais ça, ça marche : Sub X() Range("A1").value = 18 End Sub On trouve bien la valeur 18 en cellule A1.
Pourquoi? y a-t-il moyen de contourner? Voilà en fait ce que je veux : Function TableMultiplicationNxN(ByVal rg as Range, ByVal N as Integer) as string for i = 1 to N for j = 1 to N rg(i, j) = i * j Next Next TableMultiplicationNxN = "Table " & N & "x" & N & " créée avec succès". End Function En gros, je passe un range en paramètre à une fonction, la fonction f ait des calculs très compliqués et écrit les résultats dans le range. Pui s en valeur unique de retour, un code ou un message signalant que tout s'est bien pas sé. Pourquoi je peux pas faire ça?
Merci d'avance.
Bonsoir,
Une fonction contrairement à une procédure (Sub) retourne un résultat
mais ne peut pas agir sur une cellule.
Le résultat peut être une valeur, un tableau.
Function TableMult(n)
Dim temp(1 To 10)
For i = 1 To 10
temp(i) = i & "x" & n & "=" & i * n
Next
tableMult = Application.Transpose(temp)
End Function
Dans le tableur:
-sélectionner A1:A9
=Tablemult(5)
-valider avec Maj+ctrl+entrée
JB
http://boisgontierjacques.free.fr
On 30 sep, 21:59, "TTT" <hieu.protects...@laposte.net> wrote:
Bonjour;
J'ai un pb. Quand je fais ça, ça explose :
Function X()
Range("A1").value = 18
End Function
Alors que qd je fais ça, ça marche :
Sub X()
Range("A1").value = 18
End Sub
On trouve bien la valeur 18 en cellule A1.
Pourquoi? y a-t-il moyen de contourner?
Voilà en fait ce que je veux :
Function TableMultiplicationNxN(ByVal rg as Range, ByVal N as Integer) as
string
for i = 1 to N
for j = 1 to N
rg(i, j) = i * j
Next
Next
TableMultiplicationNxN = "Table " & N & "x" & N & " créée avec succès".
End Function
En gros, je passe un range en paramètre à une fonction, la fonction f ait des
calculs très compliqués et écrit les résultats dans le range. Pui s en valeur
unique de retour, un code ou un message signalant que tout s'est bien pas sé.
Pourquoi je peux pas faire ça?
Une fonction contrairement à une procédure (Sub) retourne un résultat mais ne peut pas agir sur une cellule. Le résultat peut être une valeur, un tableau.
J'ai un pb. Quand je fais ça, ça explose : Function X() Range("A1").value = 18 End Function
Alors que qd je fais ça, ça marche : Sub X() Range("A1").value = 18 End Sub On trouve bien la valeur 18 en cellule A1.
Pourquoi? y a-t-il moyen de contourner? Voilà en fait ce que je veux : Function TableMultiplicationNxN(ByVal rg as Range, ByVal N as Integer) as string for i = 1 to N for j = 1 to N rg(i, j) = i * j Next Next TableMultiplicationNxN = "Table " & N & "x" & N & " créée avec succès". End Function En gros, je passe un range en paramètre à une fonction, la fonction f ait des calculs très compliqués et écrit les résultats dans le range. Pui s en valeur unique de retour, un code ou un message signalant que tout s'est bien pas sé. Pourquoi je peux pas faire ça?
Merci d'avance.
TTT
Bonsoir et merci de votre aide. En fait je connaissais déjà votre truc. Mais ce n'est pas ce que je voudrais. Je répète : je voudrais par exemple en A1 écrire = TableMult(C8). La fonction me remplit la table de multiplication dans la plage C8:L17. Et m'écrit par exemple : "Ok 10x10 valeurs calculées avec succès". C'est un besoin très spécifique. => Et surtout j'ai déjà vu faire ça ! mais le code de la fameuse fonction est caché dans une dll, je n'ai jamais su comment c'est fait. Par contre, je suis SUR que c'est faisable pour l'avoir vu.
"JB" a écrit dans le message de news:
Bonsoir,
Une fonction contrairement à une procédure (Sub) retourne un résultat mais ne peut pas agir sur une cellule. Le résultat peut être une valeur, un tableau.
J'ai un pb. Quand je fais ça, ça explose : Function X() Range("A1").value = 18 End Function
Alors que qd je fais ça, ça marche : Sub X() Range("A1").value = 18 End Sub On trouve bien la valeur 18 en cellule A1.
Pourquoi? y a-t-il moyen de contourner? Voilà en fait ce que je veux : Function TableMultiplicationNxN(ByVal rg as Range, ByVal N as Integer) as string for i = 1 to N for j = 1 to N rg(i, j) = i * j Next Next TableMultiplicationNxN = "Table " & N & "x" & N & " créée avec succès". End Function En gros, je passe un range en paramètre à une fonction, la fonction fait des calculs très compliqués et écrit les résultats dans le range. Puis en valeur unique de retour, un code ou un message signalant que tout s'est bien passé. Pourquoi je peux pas faire ça?
Merci d'avance.
Bonsoir et merci de votre aide.
En fait je connaissais déjà votre truc.
Mais ce n'est pas ce que je voudrais.
Je répète : je voudrais par exemple en A1 écrire = TableMult(C8).
La fonction me remplit la table de multiplication dans la plage C8:L17. Et
m'écrit par exemple : "Ok 10x10 valeurs calculées avec succès".
C'est un besoin très spécifique.
=> Et surtout j'ai déjà vu faire ça ! mais le code de la fameuse fonction
est caché dans une dll, je n'ai jamais su comment c'est fait. Par contre, je
suis SUR que c'est faisable pour l'avoir vu.
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
1191184882.448112.17290@k79g2000hse.googlegroups.com...
Bonsoir,
Une fonction contrairement à une procédure (Sub) retourne un résultat
mais ne peut pas agir sur une cellule.
Le résultat peut être une valeur, un tableau.
Function TableMult(n)
Dim temp(1 To 10)
For i = 1 To 10
temp(i) = i & "x" & n & "=" & i * n
Next
tableMult = Application.Transpose(temp)
End Function
Dans le tableur:
-sélectionner A1:A9
=Tablemult(5)
-valider avec Maj+ctrl+entrée
JB
http://boisgontierjacques.free.fr
On 30 sep, 21:59, "TTT" <hieu.protects...@laposte.net> wrote:
Bonjour;
J'ai un pb. Quand je fais ça, ça explose :
Function X()
Range("A1").value = 18
End Function
Alors que qd je fais ça, ça marche :
Sub X()
Range("A1").value = 18
End Sub
On trouve bien la valeur 18 en cellule A1.
Pourquoi? y a-t-il moyen de contourner?
Voilà en fait ce que je veux :
Function TableMultiplicationNxN(ByVal rg as Range, ByVal N as Integer) as
string
for i = 1 to N
for j = 1 to N
rg(i, j) = i * j
Next
Next
TableMultiplicationNxN = "Table " & N & "x" & N & " créée avec
succès".
End Function
En gros, je passe un range en paramètre à une fonction, la fonction fait
des
calculs très compliqués et écrit les résultats dans le range. Puis en
valeur
unique de retour, un code ou un message signalant que tout s'est bien
passé.
Pourquoi je peux pas faire ça?
Bonsoir et merci de votre aide. En fait je connaissais déjà votre truc. Mais ce n'est pas ce que je voudrais. Je répète : je voudrais par exemple en A1 écrire = TableMult(C8). La fonction me remplit la table de multiplication dans la plage C8:L17. Et m'écrit par exemple : "Ok 10x10 valeurs calculées avec succès". C'est un besoin très spécifique. => Et surtout j'ai déjà vu faire ça ! mais le code de la fameuse fonction est caché dans une dll, je n'ai jamais su comment c'est fait. Par contre, je suis SUR que c'est faisable pour l'avoir vu.
"JB" a écrit dans le message de news:
Bonsoir,
Une fonction contrairement à une procédure (Sub) retourne un résultat mais ne peut pas agir sur une cellule. Le résultat peut être une valeur, un tableau.
J'ai un pb. Quand je fais ça, ça explose : Function X() Range("A1").value = 18 End Function
Alors que qd je fais ça, ça marche : Sub X() Range("A1").value = 18 End Sub On trouve bien la valeur 18 en cellule A1.
Pourquoi? y a-t-il moyen de contourner? Voilà en fait ce que je veux : Function TableMultiplicationNxN(ByVal rg as Range, ByVal N as Integer) as string for i = 1 to N for j = 1 to N rg(i, j) = i * j Next Next TableMultiplicationNxN = "Table " & N & "x" & N & " créée avec succès". End Function En gros, je passe un range en paramètre à une fonction, la fonction fait des calculs très compliqués et écrit les résultats dans le range. Puis en valeur unique de retour, un code ou un message signalant que tout s'est bien passé. Pourquoi je peux pas faire ça?
Merci d'avance.
Modeste
Bonsour® TTT avec ferveur ;o))) vous nous disiez :
=> Et surtout j'ai déjà vu faire ça ! mais le code de la fameuse fonction est caché dans une dll, je n'ai jamais su comment c'est fait. Par contre, je suis SUR que c'est faisable pour l'avoir vu.
T'es TéTu !!!! si les explications et la solution de JB ne te satisfont pas alors retrouve la Dll et fait nous voir !!! moi je suis comme St Thomas... ;o)))
@+ ;o)))
Bonsour® TTT avec ferveur ;o))) vous nous disiez :
=> Et surtout j'ai déjà vu faire ça ! mais le code de la fameuse
fonction est caché dans une dll, je n'ai jamais su comment c'est
fait. Par contre, je suis SUR que c'est faisable pour l'avoir vu.
T'es TéTu !!!!
si les explications et la solution de JB ne te satisfont pas
alors retrouve la Dll et fait nous voir !!!
moi je suis comme St Thomas...
;o)))
Bonsour® TTT avec ferveur ;o))) vous nous disiez :
=> Et surtout j'ai déjà vu faire ça ! mais le code de la fameuse fonction est caché dans une dll, je n'ai jamais su comment c'est fait. Par contre, je suis SUR que c'est faisable pour l'avoir vu.
T'es TéTu !!!! si les explications et la solution de JB ne te satisfont pas alors retrouve la Dll et fait nous voir !!! moi je suis comme St Thomas... ;o)))
@+ ;o)))
TTT
Bonsour® TTT avec ferveur ;o))) vous nous disiez :
=> Et surtout j'ai déjà vu faire ça ! mais le code de la fameuse fonction est caché dans une dll, je n'ai jamais su comment c'est fait. Par contre, je suis SUR que c'est faisable pour l'avoir vu.
T'es TéTu !!!! si les explications et la solution de JB ne te satisfont pas alors retrouve la Dll et fait nous voir !!! moi je suis comme St Thomas...
Désolé de vous froisser mais la solution qui consiste à retourner un array à la sortie d'une fonction ne me satisfait pas dans la mesure où je ne connais pas à l'avance les dimensions du tableau de résultats. Quant à la dll je ne peux vous la fournir car il possède un copyright dessus (d'ailleurs pour le lancer il faut un serveur de licence, sinon il ne fonctionnera pas).
En tous les cas merci bcp pour votre aide.
Bonsour® TTT avec ferveur ;o))) vous nous disiez :
=> Et surtout j'ai déjà vu faire ça ! mais le code de la fameuse
fonction est caché dans une dll, je n'ai jamais su comment c'est
fait. Par contre, je suis SUR que c'est faisable pour l'avoir vu.
T'es TéTu !!!!
si les explications et la solution de JB ne te satisfont pas
alors retrouve la Dll et fait nous voir !!!
moi je suis comme St Thomas...
Désolé de vous froisser mais la solution qui consiste à retourner un array à
la sortie d'une fonction ne me satisfait pas dans la mesure où je ne connais
pas à l'avance les dimensions du tableau de résultats.
Quant à la dll je ne peux vous la fournir car il possède un copyright dessus
(d'ailleurs pour le lancer il faut un serveur de licence, sinon il ne
fonctionnera pas).
Bonsour® TTT avec ferveur ;o))) vous nous disiez :
=> Et surtout j'ai déjà vu faire ça ! mais le code de la fameuse fonction est caché dans une dll, je n'ai jamais su comment c'est fait. Par contre, je suis SUR que c'est faisable pour l'avoir vu.
T'es TéTu !!!! si les explications et la solution de JB ne te satisfont pas alors retrouve la Dll et fait nous voir !!! moi je suis comme St Thomas...
Désolé de vous froisser mais la solution qui consiste à retourner un array à la sortie d'une fonction ne me satisfait pas dans la mesure où je ne connais pas à l'avance les dimensions du tableau de résultats. Quant à la dll je ne peux vous la fournir car il possède un copyright dessus (d'ailleurs pour le lancer il faut un serveur de licence, sinon il ne fonctionnera pas).
En tous les cas merci bcp pour votre aide.
TTT
Je pense que si je vous disais ce que je voudrais faire ce sera plus simple : Je cherche à écrire un DataGrid pour Excel (DataSet provenant d'un webservice). Ca existe? Sinon, ben je veux bien l'écrire mais pour ça il faut que la fonction appelante (depuis les feuilles) puis écrire dans des cellules ! Merci
Je pense que si je vous disais ce que je voudrais faire ce sera plus simple
:
Je cherche à écrire un DataGrid pour Excel (DataSet provenant d'un
webservice).
Ca existe?
Sinon, ben je veux bien l'écrire mais pour ça il faut que la fonction
appelante (depuis les feuilles) puis écrire dans des cellules !
Merci
Je pense que si je vous disais ce que je voudrais faire ce sera plus simple : Je cherche à écrire un DataGrid pour Excel (DataSet provenant d'un webservice). Ca existe? Sinon, ben je veux bien l'écrire mais pour ça il faut que la fonction appelante (depuis les feuilles) puis écrire dans des cellules ! Merci