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 fonction personnalisée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut Création d'une fonction personnalisée
    Bonjour,

    J'ai un gros problème, car je ne comprends pas la manière de faire une fonction personnalisée.

    Deux feuilles.

    Feuille 1
    Nom Prénom adresse
    X Y =adresse()

    Feuille 2 (matrice)
    Nom Prénom Age Adresse



    Je veux que la fonctiuon adresse prennent l'adresse de la cellule pour rechercher dans la matrice grace au prenom et le nom , l'adresse de la personne.

    Je pense qu'il n'y a rien de bien compliquer.

    Mais il me faut un exemple car je ne comprends pas.

    Merci d'avance.

    Cordialement

    Vincent

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour guismoman60,

    Voici un bout de code qui devrait répondre à ton besoin.
    Il n'est pas tout à fait optimisé mais fonctionne, il me semble !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Option Explicit
     
    Public Function address(nom As String, prenom As String)
    Dim rng As Range
    Dim last As Range
    Dim rech As Range
     
    With Worksheets("Feuil10")
    Set rng = .Range("A1")
    Set last = .Columns(1).Find("*", , , , , xlPrevious)
    Do While True
        Set rech = .Range(rng, last).Find(nom, LookIn:=xlValues, LookAt:=xlWhole)
        If Not rech Is Nothing Then
            If rech.Offset(0, 1) = prenom Then
                address = rech.Offset(0, 3)
                Exit Function
            Else
                Set rng = rng.Offset(1, 0)
            End If
        Else
            address = "#N/A"
            Exit Function
        End If
    Loop
    End With
     
    End Function
    Cela te permet de voir la structure d'une fonction personnalisée que tu peux utiliser comme n'importe quelle autre fonction Excel de la manière suivante : =address(A2;B2).
    N'hésite pas à revenir vers moi pour tout complément !

    Cordialement,
    Kimy

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Je ne suis pas certain de tout comprendre, mais des fonctions classiques type VLOOKUP / MATCH devrait également le faire ....
    Un bout d'exemple aiderait.

    Bonne journée

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Merci beaucoup. Votre temps + votre savoir est une vrai mine d'or . ;-)

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Au passage : je t'ai fais la fonction parce que tu demandais la structure d'une fonction personnalisée.

    Par contre, si ton besoin final est le problème exposé, vinc_bilb a raison ! Pas besoin de fonction personnalisée pour une rechercheV à deux critères.
    Passe par un {=INDEX(plage3;MAX(SI((crit1=plage1)*(crit2=plage2);LIGNE(plage3);0)))} (matricielle) qui répond tout aussi bien au besoin !

    Cordialement,
    Kimy

Discussions similaires

  1. Réponses: 16
    Dernier message: 24/10/2006, 21h37
  2. Réponses: 4
    Dernier message: 03/10/2006, 16h04
  3. #Erreur dans une requête avec une fonction personnalisée
    Par pguiheu dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 04/07/2006, 15h45
  4. Création d'une fonction sans paramètre?
    Par falcon dans le forum Oracle
    Réponses: 3
    Dernier message: 13/12/2004, 11h32
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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