[VBA\Excel] ecrire dans des cellules
Fermé
Bonjour,
J'ai un problème avec les fonctions Excel. J'ai écrit une fonction en VBA et je voudrais que cette fonction modifie d'autres cellules. Le problème qui se pose est que apparament, si on fait l'appel de cette fonction à partir de la feuille excel, elle ne peut modifier que la valeur de cette cellule. Par contre, si on fait l'appel depuis une macro, et bah les cellules sont modifiés.
Quelqu'un pourrait m'aider svp à trouver une solution pour pouvoir modifier des cellules à partir de l'appel d'une fonction dans la feuille Excel?
Merci,
J'ai un problème avec les fonctions Excel. J'ai écrit une fonction en VBA et je voudrais que cette fonction modifie d'autres cellules. Le problème qui se pose est que apparament, si on fait l'appel de cette fonction à partir de la feuille excel, elle ne peut modifier que la valeur de cette cellule. Par contre, si on fait l'appel depuis une macro, et bah les cellules sont modifiés.
Quelqu'un pourrait m'aider svp à trouver une solution pour pouvoir modifier des cellules à partir de l'appel d'une fonction dans la feuille Excel?
Merci,
A voir également:
- Vba ecrire dans une cellule
- Aller à la ligne dans une cellule excel - Guide
- Excel compter cellule couleur sans vba - Guide
- Excel cellule couleur si condition texte - Guide
- Ecrire en gras sur whatsapp - Guide
- Ecrire en miroir - Guide
7 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
10 mars 2009 à 15:19
10 mars 2009 à 15:19
Je pense que j'ai compris, tu en fais une fonction excel... =toto()
Si OUI, la réponse est NON impossible de modifier une autre cellule que celle dans lequel est la fonction.
De plus, dans ce genre de fonction, les commandes que tu applique ne sont pas valable, il faut employer
Application.Caller
Si OUI, la réponse est NON impossible de modifier une autre cellule que celle dans lequel est la fonction.
De plus, dans ce genre de fonction, les commandes que tu applique ne sont pas valable, il faut employer
Application.Caller
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
295
10 mars 2009 à 13:36
10 mars 2009 à 13:36
Et si vous montrez la fonction (le code) on vous dira pourquoi !!!!
A+
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
10 mars 2009 à 14:23
10 mars 2009 à 14:23
Bonjour,
Essaye avec...
A+
Essaye avec...
Public Function toto() As Integer Dim Lig As Long, Col As Integer Lig = ActiveCell.Row Col = ActiveCell.Column For i = 1 To 10 Cells(Lig + i, Col) = i Next toto = 1 End Function
A+
Ce n'est pas cela qui pose problème, c'est juste une modification d'écriture qui ne donne aucune résultat. Le problème qui se pose est que cette fonction tente de modifier d'autre cellules à part celle d'ou elle est lancée, et apparament ceci n'est pas permis en Excel, existe t-il un moyen de détourner ceci?
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
>
TheAhmed
10 mars 2009 à 15:03
10 mars 2009 à 15:03
Ah, merci de répondre, pourrais-tu m'aider UN GRAND MERCI D'AVANCE.
TheAhmed
>
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
10 mars 2009 à 15:14
10 mars 2009 à 15:14
euuh, un \huge{GRAND} MERCI d'AVANCE pour l'aide
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
295
10 mars 2009 à 15:16
10 mars 2009 à 15:16
le problème vient du fait fait de la ligne
Set Cellule = Application.ActiveCell
Public Function toto() As Integer
Dim i As Integer
Dim Cellule As Cell
Set Cellule = Application.ActiveCell 'cette ligne sera actualisée dès l'entrée dans la boucle For
For i = 1 To 10
Cellule.Offset(i,0).Value = i
Next
toto = 1
End Function
pour le mettre en évidence : place un point d'arrêt et utilise le pas à pas tu verras que cellule.address n'est plus définie
il faut donc lui passer l'adresse de départ
essaye toto (adresse as range) as integer
définit ensuite
set cellulle as range(adresse)
et teste ....
je ne peux pas faire le test mais c'est une piste.
A+
Set Cellule = Application.ActiveCell
Public Function toto() As Integer
Dim i As Integer
Dim Cellule As Cell
Set Cellule = Application.ActiveCell 'cette ligne sera actualisée dès l'entrée dans la boucle For
For i = 1 To 10
Cellule.Offset(i,0).Value = i
Next
toto = 1
End Function
pour le mettre en évidence : place un point d'arrêt et utilise le pas à pas tu verras que cellule.address n'est plus définie
il faut donc lui passer l'adresse de départ
essaye toto (adresse as range) as integer
définit ensuite
set cellulle as range(adresse)
et teste ....
je ne peux pas faire le test mais c'est une piste.
A+
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
295
10 mars 2009 à 15:30
10 mars 2009 à 15:30
Exact je viens de faire un test de plus.
pour le moment ce n'est pas possible pour moi je pensais que l'on pouvais contourner le problème.
mais l'adresse de départ est perdue quand on rentre dans la boucle.
Bon courage.
pour le moment ce n'est pas possible pour moi je pensais que l'on pouvais contourner le problème.
mais l'adresse de départ est perdue quand on rentre dans la boucle.
Bon courage.
10 mars 2009 à 15:23
c'est impossible??
aucune solution??