[VBA-Excel] Ma fonction rebelle (maj de cellules)

AGLAS

XLDnaute Nouveau
Bonjour à tous,

Je débute avec VBA mais c'est plutôt laborieux : Voilà quelques jours maintenant que je cherche le moyen de modifier le contenu d'une cellule via une fonction personnalisée (que j'ai nommé IFEXIST) exécutée à partir d'autre cellule.

C'est la dernière ligne de la fonction qui semble poser problème (sans elle, cela fonctionne plutôt bien, mais avec elle la fonction renvoie #VALEUR). Je n'emploie visiblement pas les bons arguments pour convaincre cette fonction de faire ce que j'attends d'elle, peut-être même que je poursuis là un voeu pieux ; pour une raison que j'ignore, il n'est peut être pas possible de modifier une autre cellule que celle qui exécute la fonction ou bien je n'ai pas la bonne syntaxe pour le faire... Qu'en pensez-vous ?



Code:
[size=3]Function IFEXIST(ParamArray Prédécesseur() As Variant) 
 
 
    Dim colSelection, colDatefin, colDatedeb, i As Integer 
    Dim debFlag As Boolean 
    Dim datedeb, datefinPrec As Date 
 
 
    colDatedeb = 5 
    colDatefin = 6 
    colSelection = 10 
    datedeb = Cells(ActiveCell.Row - 1, colDatedeb) 
    'MsgBox datedeb, vbQuestion + vbOKOnly 
 
    debFlag = True 
 
   For i = 0 To UBound(Prédécesseur()) 
         LigSelection = Prédécesseur(i) + 1 
         If Cells(LigSelection, colSelection) = 'Vrai' Then 
 
              datefinPrec = Cells(LigSelection, colDatefin).Value 
              If datefinPrec > datedeb Then 
                datedeb = datefinPrec 
              End If 
 
              If debFlag Then 
                IFEXIST= IFEXIST & Prédécesseur(i) 
                debFlag = False 
              Else 
                IFEXIST= IFEXIST & ';' & Prédécesseur(i) 
              End If 
           End If 
    Next i 
                '-----------------------------ci-après la ligne posant problème ----
                ActiveCell(ActiveCell.Row, colDatedeb).Value = datedeb 
End Function[/size]
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir AGLAS,

Le principe d'une fonction est de renvoyer un résultat à l'élément appelant.
Sauf erreur de ma part, on peut faire appel à une fonction personnalisée dans une formule d'une feuille de calcul à la seule condition que cette fonction soit 'passive', c'est à dire qu'elle retournera une valeur de résultat à la cellule appelante, mais ne peut en aucun cas manipuler les objets ou modifier d'autres cellules...

Cordialement,
 

Discussions similaires

Réponses
6
Affichages
281

Statistiques des forums

Discussions
312 445
Messages
2 088 486
Membres
103 867
dernier inscrit
nykostinson