Peut on changer la valeur d'une cellule à partir d'une function

Iguana9008 - 17 janv. 2013 à 09:48
 Iguana9008 - 17 janv. 2013 à 12:49
Bonjour à tous,

Je voulais savoir si il était possible d'affecter une valeur à une cellule en passant par une function.
Je m'explique :
Je viens de créer une fonction AddLink qui doit créer un lien hypertext et remplir un tableau dans la Feuil3.
La partie hyperlink marche a merveille, mais impossible de remplir mon tableau ( #Valeur).


Voici mes lignes de code :
Public Sub CreationTableau(a, b, c)

Worksheets("Feuil3").Cells(ActiveCell.Row, 1) = a
Worksheets("Feuil3").Cells(ActiveCell.Row, 2) = b
Worksheets("Feuil3").Cells(ActiveCell.Row, 3) = c


End Sub
___________________________________________________________________
Function AddLink(AddrInternet, AddrLocal, Name) As String
AddLink = Name
Call CreationHyperlink(AddrLocal)
Call CreationTableau

End Function
_________________________________________________________________

PS: En utilisant les mêmes lignes codé dans une feuil j'arrive à changer la valeur des cellules.
Est ce donc impossible en partant d'un module? Ou je ne suis juste pas doué ?

Merci d'avance pour vos réponses! Passez une bonne journée

12 réponses

Petit oubli dans le message :

Function AddLink(AddrInternet, AddrLocal, Name) As String

AddLink = Name
Call CreationHyperlink(AddrLocal)
Call CreationTableau[b](AddrInternet, AddrLocal, Name)/b

End Function
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
17 janv. 2013 à 09:52
Bonjour,

Tu crées une fonction avec des paramètres (a,b c non typés), et tu l'appelles sans paramètres...


L'expérience, c'est une connerie par jour, mais jamais la même..
0
Est es ce ainsi qu'il fallait déclarer la fonction?
Si oui cela ne régle toujours pas mon problème
Public Sub CreationTableau(a As String, b As String, c As String)

Worksheets("Feuil3").Cells(ActiveCell.Row, 1) = a
Worksheets("Feuil3").Cells(ActiveCell.Row, 2) = b
Worksheets("Feuil3").Cells(ActiveCell.Row, 3) = c


End Sub


Function AddLink(AddrInternet As String, AddrLocal As String, Name As String) As String

AddLink = Name
Call CreationHyperlink(AddrLocal)
Call CreationTableau(AddrInternet, AddrLocal, Name)


End Function
0
Je vais peut être poser une question plus générale :
Peut on accéder aux feuilles d'un classeur à partir d'un module?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 janv. 2013 à 10:38
Bonjour,
Peut on accéder aux feuilles d'un classeur à partir d'un module?

Oui.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
En effet je viens de me rendre compte que je pouvais remplir mon tableau en executant mon SUB manuellement. Par contre j'ai toujours l'erreur (#VALEUR) lorsque ce même SUB est appelé dans ma FUNCTION

En mettant un point d'arret dans ma FUNCTION et en executant le reste en pas à pas, je me rend compte que je ne sors jamais du SUB devant remplir le tableau

Il y a t il une commande pour revenir dans ma FUNCTION ?
0
En fait je me rend compte de deux choses :

Call CreationTableau(AddrInternet, AddrLocal, Name)

Public Sub CreationTableau(a As String, b As String, c As String)
Worksheets("Feuil3").Cells(1, 1).Value = a
Worksheets("Feuil3").Cells(1, 2).Value = b
Worksheets("Feuil3").Cells(1, 3).Value = c

End Sub

En mode pas à pas je rentre dans
Public Sub CreationTableau(a As String, b As String, c As String)
j'execute
Worksheets("Feuil3").Cells(1, 1).Value = a
puis plus rien ????

et quand je fais cette même manip sans les parametres

Call CreationTableau

Public Sub CreationTableau()
Worksheets("Feuil3").Cells(1, 1).Value = "a"
Worksheets("Feuil3").Cells(1, 2).Value = "b"
Worksheets("Feuil3").Cells(1, 3).Value = "c"

End Sub

En mode pas à pas

je rentre dans
Public Sub CreationTableau()

j execute
Worksheets("Feuil3").Cells(1, 1).Value = "a"

je re rentre dans
Public Sub CreationTableau()

et je tourne sans fin dans le sub


PS: Oui je sais que je suis chiant à envoyer mes messages en veux tu en voila...Mais je vous expose en direct mes découverte (ou pas)
Je suis novice en VB,j'arrive par chance à faire certaines choses mais je ne comprend pas encore bien toutes les subtilités de ce langage
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 janv. 2013 à 11:34
et je tourne sans fin dans le sub

le code montré ne risquant pas, à lui seul, de provoquer une boucle sans fin, ton erreur est ailleurs, dans un autre évènement de ton appli, qui se déclenche et déclenche à nouveau ta sub.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
J'ai effectivement une macro qui s'active lors d'un changement de valeur d'une cellule.
Je l'ai ecrite dans l'optique de changer la cible du lien hypertexte en fonction d'une donnée rentrée par l'utilisateur.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ColumnLienTroubleshoot = 3
TestConnectionInternet = "B1"
If Target.Address = Range(TestConnectionInternet).Address Then 'Si la cellule XX change alors
If Target.Value = "oui" Then 'Si le contenu de cette cellule est oui alors
Choixcolumn = 1 'On selectionne la colonne 1

Else 'sinon
Choixcolumn = 2 'on selectionne la colonne 2
End If

Else 'Si une autre cellule change il ne se passe rien
End If

For i = 1 To 100 Step 1
If (Worksheets("feuil1").Cells(i, ColumnLienTroubleshoot).Value = "") Then
Worksheets(1).Cells(i, 4).Value = "vide"
ElseIf (Choixcolumn = "") Then
Worksheets(1).Cells(i, 4).Value = "pas de choixcolumn"
Else
Worksheets(1).Cells(i, ColumnLienTroubleshoot).Hyperlinks(1).Address = Worksheets("feuil3").Cells(i, Choixcolumn).Value
Worksheets(1).Cells(i, ColumnLienTroubleshoot).Hyperlinks(1).TextToDisplay = Worksheets("feuil3").Cells(i, 3).Value
Worksheets(1).Cells(i, 4).Value = "ok"
End If
Next
End Sub
0
Cela dit même en retirant cette macro le problème reste le même...
Qulque chose m'échappe !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 janv. 2013 à 12:44
J'ai effectivement une macro qui s'active lors d'un changement de valeur d'une cellule

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
n'est PAS un "changement de valeur d'une cellule
Tu me donnes par ailleurs l'impression de ce que ton appli est probablement comme un chien qui se mord la queue, avec des itérations probables ici et là ...
Je ne crois pas que la vocation de ce forum aille jusqu'à (en plus sans tout connaître de ton appli) t'aider à concevoir (ce qu'on ignore dans les détails, d'ailleurs) !
Je ne peux dans ces conditions que te donner le conseil de réfléchir sur la chronologie de chaque instruction, chaque procédure, chaque évènement. Ce sera là moins un travail de développement qu'un travail de réflexion (qu'il s'agisse d'informatique ou de toute autre chose).
Bonne chance.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Non en effet c'est plutot lors de la selection d'une cellule en effet.
Mais bon je te remerci quand même d'avoir regardé un peu mon problème. Je vais tout reprendre depuis le début en effet.
Bonne journée
0
Rejoignez-nous