IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Transformer une partie d'une macro en fonction [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 2
    Par défaut Transformer une partie d'une macro en fonction
    Bonjour à vous tous,
    Voilà mon problème puisque je me doute que l'intitulé reste très vague .

    J'ai crée une macro me permettant de déterminer le nombre de caractères dans une cellule pour ensuite extraire les chiffres présent dans cette cellule.

    Je m'explique par exemple pour une cellule avec comme texte "K100" je détermine le nombre de caractères pour ensuite pouvoir retirer le "100" à l'aide de la fonction =RIGHT puisque le texte commence obligatoirement par une seul lettre.
    Cependant cette macro ne me permet de retirer les données que pour une seule cellule , je souhaite donc crée une fonction afin de pouvoir effectuer la même action simplement en tapant par exemple =Nombre(La cellule que je veux analyser).

    Je débute en VBA (3 jours) et ne trouve pas de solution malgré de nombreux essais .

    Est-ce tout simplement possible ?

    Merci d'avance.

    Voilà ma macro:
    La partie que je souhaite insérer dans la fonction démarre à """""Extraction des informations pour une cellule à 2 caractère exemple: K1""""""
    22.txt
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    Pas besoin de vba pour ça:
    =DROITE(B1;NBCAR(B1)-1)

    mais si vraiment tu veux le faire en vba:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Nombre(cel As Range)
    Nombre= Right(cel.Text, Len(cel.Text) - 1)
    End Function

  3. #3
    Candidat au Club
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 2
    Par défaut
    Bonjour halaster08,

    C'est exactement ce que je chercher merci beaucoup!

    J'ai voulu chercher compliqué sans même chercher une solution bien plus simple et efficace!

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Juste 2 remarques si je peux me permettre.
    Il est utile de définir le type de variable que renvoie la fonction.
    Si l'on veut que cette fonction soit intégrée à celles proposées par Excel, alors il faut la déclarer en "Public".

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Salut,

    Juste 2 remarques si je peux me permettre.
    Il est utile de définir le type de variable que renvoie la fonction.
    Si l'on veut que cette fonction soit intégrée à celles proposées par Excel, alors il faut la déclarer en "Public".
    Tu peux te le permettre
    Tout a fait d'accord avec la première remarque, c'est un oubli de ma part.
    Par contre pour la seconde, je l'ai déjà lu ailleurs et pourtant je n'ai jamais eu a mettre une fonction en "Public" pour qu'elle soit visible, est-ce lié aux différentes versions d'Excel (2010 pour moi)

    Le code avec les modifs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function Nombre(cel As Range) As String
    Nombre = Right(cel.Text, Len(cel.Text) - 1)
    End Function

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Halaster,

    Au temps pour moi.
    Ce n'est pas obligatoire de déclarer une fonction en Public. Elle l'est par défaut.

    Les fonctions personnelles

    Mais pour ma part, je préfère. (Tout comme les .Value et autres propriétés...)

    Pour ta fonction, personnellement, je le retournerais en variable numérique (Byte...) en y ajoutant 0 ou en multipliant par 1.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  2. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo