[VBA\Excel] ecrire dans des cellules

TheAhmed -  
 TheAhmed -
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

7 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1
    1. TheAhmed
       
      Oui voilaaaaa,

      c'est impossible??

      aucune solution??
      0
  2. TheAhmed
     
    Help please, j'en ai besoin pour mon stage
    0
  3. TheAhmed
     
    Aucune solution ou bien la problématique n'est pas claire????
    0
  4. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    Et si vous montrez la fonction (le code) on vous dira pourquoi !!!!
    A+
    0
    1. TheAhmed
       
      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
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
    1. TheAhmed
       
      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?
      0
      1. lermite222 Messages postés 9042 Statut Contributeur 1 199 > TheAhmed
         
        Ah, merci de répondre, pourrais-tu m'aider UN GRAND MERCI D'AVANCE.
        0
      2. TheAhmed > lermite222 Messages postés 9042 Statut Contributeur
         
        euuh, un \huge{GRAND} MERCI d'AVANCE pour l'aide
        0
  7. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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+
    0
  8. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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.
    0
    1. TheAhmed
       
      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....
      0