Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Bonsoir à tous,

Je me heurte à une difficulté. En effet, j'ai écrit du code dans un module mais je me demande comment créer l'évènement notamment un bouton de controle pour exécuter ce code.

J' ai réécrit ce code sur une feuille excel et dessiné un bouton et celà fonctionne. Mais le but d'un module est la réétulisabilité du code.

Or, celui ci ne peut s'exécuter que par un évènement si je ne me trompe; mais alors comment créer l'évènement ???

 

Merci pour votre aide précieuse

Posté(e)

Bonjour

 

Vous pouvez utiliser votre Fonction sans être obligé de passer par un bouton, il suffit d’écrire dans la cellule concernée :

MaFonction(A1)

 

Comme exemple j’ai pris :

Public Function MaFonction (myVal As Long) As Long

MaFonction = myVal + 5

End Function

Posté(e)

Bonjour guyguy 59, bonjour à tous,

Là vous me parlez d'une fonction qui s'exéxute dans une cellule. Mais je voudrais savoir si celà est la même chose pour une procédure écrite dans un module ?

Posté(e) (modifié)

Bonjour

Là il faudrait savoir ce que fait votre procédure, est-ce une Sub ?, renvoi-t-elle une valeur ?

Si elle renvoie une valeur, vaudrait mieux passer par une Function quitte à faire appel à votre procédure dans celle-ci.

Modifié par guyguy59
Posté(e)

Bonjour guyguy 59, bonjour à tous,

Là vous me parlez d'une fonction qui s'exéxute dans une cellule. Mais je voudrais savoir si celà est la même chose pour une procédure écrite dans un module ?

Posté(e)

Bonjour

En gros que voulez-vous faire?

 

Dans un module on peut écrire soit:

Une Fonction peut renvoyer une valeur dans la cellule appelante.

Une Procédure ne peut pas renvoyer de valeur, mais par code on peut affecter une valeur dans une cellule donnée ou effectuer d'autres opérations (par ex: ouvrir une boite de dialogue en fonction des valeurs, ......).

 

Dans une fonction on peut exécuter une procédure.

Posté(e)

Bonsoir guyguy59, bonsoir à tous,

OK j'ai bien compris. Cependant j'ai écrit la fonction suivante dans un module :

 

Option Explicit

 

Function AleatoireStatique()

' retourne un nombre aléatoire

' qui ne change pas quand la feuille

' est recalculée

AleatoireStatique = Rnd()

End Function

 

Cependant quand je vais dans une cellule et que je tape =AleatoireStatique() rien ne se produit et je ne sais pas pourquoi !

Posté(e)

Bonsoir

as-tu bien écrit ta fonction dans Module1 comme dans l'image qui suit:

excelhv7.jpg

et ne pas oublier de l'enregistrer dans Visual Basic Editor car à la fermeture il ne s'enregistre pas automatiquement.

Pour moi cela fonctionne très bien dans les cellules j'ai bien un nombre aléatoire.

A part cela je ne vois pas ce qui cloche.

Pour:

' retourne un nombre aléatoire

' qui ne change pas quand la feuille

' est recalculée

il ne faudra pas mettre AleatoireStatique() dans une cellule. Il faudra scruter les cellules, à l'ouverture de la feuille, et si elle sont vides exécuter AleatoireStatique() car si on laisse =AleatoireStatique() dans une cellule je pense qu'il sera recalculé. A vérifier, car j'ai fermé et ouvert le fichier plusieurs fois et j'ai eu toujours les même nombres.

Posté(e)

Bonjour à tous,

 

Pour en revenir à ta question initiale rimbaut, si tu écris une procédure ou une fonction dans un module, et que tu veux associer ce code à un contrôle comme un bouton par exemple, ce n'est pas compliqué.

 

Tu te places sur l'onglet (donc sous Excel et non Visual Basic Editor) où tu veux insérer ton bouton. Dans la barre d'outils tu peux ajouter ceux concernant VBA, ensuite tu pourras ajouter un bouton (en passant le curseur de la souris sur les différents contrôles l'un t'indiqueras le bouton).

 

Le bouton une fois placé, tu double-cliques dessus, et une procédure évènementielle s'ouvrira dans la page de code associé à cet onglet et non dans un module. Cette procédure aura pour nom CommandClick_Button1 (ou un truc dans le genre). Dans cette procédure tu pourras appeler ta fonction ou la procédure de ton module.

 

En espérant ne pas arriver trop tard dans les débats :P,

 

Ayoros.

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...