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

  • Initiateur de la discussion Initiateur de la discussion AGLAS
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

AGLAS

Guest
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]
 
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,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
899
Retour