Mise à jour macro complémentaire

Bonjour à tous,

C'est mon 1er post sur ce forum 8)

J'ai appris VBA tout seul donc j'espère que vous serez indulgent si je fait de grosses boulettes

Voilà mon problème :

J'ai une feuille de calcul Excel qui contient des données auxquelles je souhaite accéder depuis n'importe quel classeur.

J'ai donc créé une fonction dans cette feuille de calcul et sauvegardé cette feuille en tant que macro complémentaire.

Pour faire simple, je cherche un paramètre en colonne A et la fonction me renvoie la valeur en colonne B, rien de compliquer et cela fonctionne à merveille.

J'aimerais maintenant aller plus loin : j'aimerais pouvoir ajouter une donnée à cette feuille si elle n'existe pas.

Mettre à jour la feuille xlam est 'pénible' (il faut passer le paramètre "isAddin" en False, etc...).

Je me suis alors dit que je pouvais essayer de le faire là aussi avec une fonction, que voici :

Function DonneeAdd(Param1 As String, NewValeur As Double)
 Dim DerLig As Double

 Param1 = UCase(Param1)
 NewValeur = Round(NewValeur, 0)

 DerLig = ThisWorkbook.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1

 With ThisWorkbook.Sheets("1")
  .Cells(DerLig, 1).Value = Param1
  .Cells(DerLig, 2).Value = NewValeur
 End With

 ThisWorkbook.Save

 DonneAdd = "Valeur ajoutée"

End Function

Je n'ai aucun message d'erreur mais aucune ligne n'est ajoutée dans mon fichier xlam.

Je m'y prends mal ?

Merci d'avance pour votre aide

Bonjour,

As-tu essayé de transformer ta fonction ... en macro standard ... ?

Bonjour,

Oui, j'ai transformé cette fonction en macro standard pour voir si elle marchait, et c'est le cas.

Mais je veux pouvoir l'appeler comme une fonction depuis n'importe quelle feuille Excel.

Je ne peux pas appeler un 'sub' depuis une feuille Excel, me trompe-je ?

Re,

Si ... tu peux appeler une sub ... depuis n'importe quelle feuille ...

1. Manuellement Alt + F8

2. Automatiquement par un bouton ou par une évènementielle ...

En espèrant que cela t 'aide ...

Merci mais du coup c'est moins simple pour passer des paramètres.

Je vais être obligé de créer des input box par exemple.

J'ai l'impression qu'on ne peut pas modifier la valeur d'une cellule avec une fonction.

Re,

J'ai l'impression qu'on ne peut pas modifier la valeur d'une cellule avec une fonction.

Effectivement ... une UDF ne permet que d'afficher son propre résultat ...

C'est pourquoi tu as besoin d'une macro ...

Pour info, ta macro, comme ta fonction, peut accepter tes deux arguments en variables ...

Certes une macro peut recevoir des arguments mais tu les passes comment depuis une feuille Excel ou un bouton ?

Re,

Ils peuvent être disponibles dans deux cellules de ton fichier ...

Je vais voir quel est le plus simple, merci pour ton aide.

Au passage, autre question : c'est possible d'avoir des infobulles comme pour les fonctions par défaut d'Excel ?

(les petites bulles qui apparaissent quand on tape une fonction et qui indiquent les paramètres à entrer)

Takama a écrit :

Je vais voir quel est le plus simple, merci pour ton aide.

Au passage, autre question : c'est possible d'avoir des infobulles comme pour les fonctions par défaut d'Excel ?

(les petites bulles qui apparaissent quand on tape une fonction et qui indiquent les paramètres à entrer)

Ta question me rappelle un vieux souvenir ... casse-tête ...

Je vais fouiller dans mes archives ...

Bonjour,

Habituellement (sauf très rares exceptions que je ne crois pas utiles de développer...) dans un classeur de macro complémentaires on n'écrit rien dans la feuille. Seul VBA contient des Functions ou les Sub nécessaires.

Les Functions enregistrées dans un classeur de macros Complémentaires apparaissent dans la barre de formules dans la catégorie "Functions personnalisées"

Quand on utilise un fonction personnalisé dans la barre de formules, la boite de dialogue indique clairement les paramètres attendus.

Evidemment c'est à toi de gérer astucieusement ces paramètres : Si tu les nommes x, y ou z... il y a de fortes chances que ça n'aide pas vraiment l'utilisateur !

Par contre si tu écris une fonction volume de la manière suivante :

Sub volume(Longueur, largeur, hauteur)
... 

l'utilisateur conprendra très facilement quels paramètres il doit entrer.

J'ai écrit une fonction personnalisée qui me renvoie la date de Pâques pour une année donnée :

Sub PAQ(année)

C'est explicite non ?

Si tu écris des Sub personnalisées dans ton classeur de macro complémentaire, elles n'apparaissent nulle part c'est au programmeur de savoir qu'elle existe et d'en tirer parti à sa convenance.

Exceptions : Toutes les Sub personnalisées apparaissent dans la boite de dialogue "Personnaliser le ruban" dans la catégorie "Macro."

C'est normal puisqu'il faut alors les affecter à un onglet et/ou un bouton...

OK ?

Rechercher des sujets similaires à "mise jour macro complementaire"