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 :

Création d'une nouvelle fonction Excel (VBA)


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Création d'une nouvelle fonction Excel (VBA)
    Bonjour,

    Je débute en VB souhaite créer une nouvelle fonction Excel (qui utilise des fonctions Excel existantes)

    Voilà ce que je souhaite faire :
    J'ai une fonction Excel (qui marche bien)
    Cette fonction permet de traiter une chaine de caractères et retourne la chaine de caratères qui se trouve entre le 1er et le 2eme "/"
    Par exemple , pour la chaine "/aaaa/bbbb/cccc" , la fonction retourne "aaaa".

    Voilà la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(A1;(CHERCHE("/";A1))+1;(CHERCHE("/";A1;(CHERCHE("/";A1))+1))-(CHERCHE("/";A1))-1)
    La fonction que je souhaite créer prend en argument un nom de cellule et retourne la chaine de caratères qui se trouve entre le 1er et le 2eme "/".

    Je pense que le code doit s'approcher de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.FormulaR1C1 = _
            "=MID(RC[-2],(SEARCH(""/"",RC[-2]))+1,(SEARCH(""/"",RC[-2],(SEARCH(""/"",RC[-2]))+1))-(SEARCH(""/"",RC[-2]))-1)"
    Je ne sais pas quel type d'argument saisir pour la fonction ?
    Ca peut marcher ça ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function Rang_1(cellule as string) as string
    ?
    Aussi , comment utiliser l'argument "cellule" dans mon code ?

    Merci de m'aiguiller ... je tourne en rond ...

  2. #2
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour,

    Peux tu tester ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function ExtraireSlash(R As Range)
    Dim CarDep As Long, CarFin As Long
        CarDep = InStr(1, R.Value, "/") + 1
        CarFin = InStr(CarDep, R.Value, "/") - CarDep
        ExtraireSlash = Mid(R.Value, CarDep, CarFin)
    End Function
    Tu appelles dans ta feuille en B1 par exemple =ExtraireSlash(A1)

    Tiens nous au courant

  3. #3
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    bonjour


    voici un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function mafnc(cellule as range) as string
    en voici un autre qui te mermet des passer en argument soit une chaine de caractere, soit une cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function mafnc(cellule as variant) as string
         select case typename(cellule)
             case "Range"
             case "String"
         end select
    end function
    tu peux l'utiliser comme suit :
    ou encore
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =mafnc(concatener(A1;"-";A2;"-->";A3))
    bonne journee


    Edit : Bonjour fred
    Wilfried

  4. #4
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    En VBA c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    st = "/aaaa/bbbb/cccc"
    tabs = Split(st, "/")
    MsgBox tabs(1)

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut delphiDelphi,

    toujours aussi direct et efficace.

    As-tu résolu ton problème de transfert de tableau de la manière "courte" comme tu aimes ?
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci
    C'est vraiment parfait (surtout avec le "Split")

    Merci à tout le monde !
    Cela m'a permis de mieux comprendre l'appel de fonction , les types d'arguments , ...

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

Discussions similaires

  1. [XL-2003] VBA - Problème lors de la création d'une nouvelle fonction
    Par Simon_cenb dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/05/2013, 16h41
  2. [VBA Excel] Ouverture d'une nouvelle session Excel
    Par fmartin dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/06/2007, 15h35
  3. Création d'une nouvelle DB
    Par ghyosmik dans le forum Outils
    Réponses: 2
    Dernier message: 25/11/2005, 17h08
  4. Positionnement dans une arborescence en Excel VBA
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2005, 19h10

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