Rechercher : dans
Par :

[VBA\Excel] ecrire dans des cellules

Dernière réponse le 10 mar 2009 à 15:33:24 TheAhmed, le 10 mar 2009 à 09:45:18 
 Signaler ce message aux modérateurs

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,

Configuration: Windows XP
Firefox 3.0.7

1

TheAhmed, le 10 mar 2009 à 10:33:39

Help please, j'en ai besoin pour mon stage

Répondre à TheAhmed

2

TheAhmed, le 10 mar 2009 à 11:57:13

Aucune solution ou bien la problématique n'est pas claire????

Répondre à TheAhmed

3

Bidouilleu_R, le 10 mar 2009 à 13:36:03

Et si vous montrez la fonction (le code) on vous dira pourquoi !!!!
A+

Répondre à Bidouilleu_R

4

TheAhmed, le 10 mar 2009 à 13:52:52

Je te montre le code d'une fonction simle pour ne pas compliquer les choses.

Public Function toto() As Integer
Dim i As Integer
Dim Cellule As Cell

Set Cellule = Application.ActiveCell
For i = 1 To 10
Cellule.Offset(i,0).Value = i
Next

toto = 1

End Function

Répondre à TheAhmed

5

lermite222, le 10 mar 2009 à 14:23:09

Bonjour,
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+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

6

TheAhmed, le 10 mar 2009 à 14:27:02

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?

Répondre à TheAhmed

7

lermite222, le 10 mar 2009 à 15:03:35

Ah, merci de répondre, pourrais-tu m'aider UN GRAND MERCI D'AVANCE. L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

8

TheAhmed, le 10 mar 2009 à 15:14:11

Euuh, un \huge{GRAND} MERCI d'AVANCE pour l'aide

Répondre à TheAhmed

9

Bidouilleu_R, le 10 mar 2009 à 15:16:17

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+

Répondre à Bidouilleu_R

10

lermite222, le 10 mar 2009 à 15:19:00
  • +1

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 L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

11

TheAhmed, le 10 mar 2009 à 15:23:14

Oui voilaaaaa,

c'est impossible??

aucune solution??

Répondre à TheAhmed

12

Bidouilleu_R, le 10 mar 2009 à 15:30:46

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.

Répondre à Bidouilleu_R

13

 TheAhmed, le 10 mar 2009 à 15:33:24

Oui voila, et Merci bcp, il existe un esolution qu iest de mettre un bouton qui lui fait appel à la fonction et la ca marche, mais je voulais faire cela sur la feuille en appelant la fonction....

Répondre à TheAhmed