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 :

Problème de sélection d'un tableau dans une fonction


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 4
    Par défaut Problème de sélection d'un tableau dans une fonction
    Bonjour,

    J'ai réalisé une fonction de recherche d'une valeur dans un tableau à partir de 2 critères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function RECHERCHE_REF(ByRef matrice(), type_tc As String, puissance As Single) As Integer
    Celle-ci fonctionnne lorsque je l'appelle d'un module mais j'ai l'erreur #valeur! si je la lance d'une cellule....

    Je pense que le problème vient de la sélection de la plage de cellule pour l'argument matrice....

    Quelqu'un a-t-il déjà eu ce souci?

    Merci pour votre retour.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tu peux nous montrer la fonction complète ?

    EDIT : tu parles d'une matrice et d'une sélection de cellule, en fait tu veux utiliser les valeurs présentes dans les cellules de ta sélection ?

    si tel est le cas, tu dois travailler en deux temps :

    1) utiliser un argument Range représentant la plage de cellules
    2) insérer les valeurs dans un tableau

    ce qui nécessite de savoir comment la plage de cellule est dimensionnée : 1 cellule / plusieurs cellules / sur une seule colonne / multicolonnes etc...


    un exemple totalement farfelu pour comprendre : on veut que la fonction vérifie sur une plage (1 seule cellule ou une seule colonne) l'existence de la valeur type_tc dans une ou plusieurs cellules
    pour chaque cellule contenant cette valeur, on incrémente un compteur avec la valeur puissance.



    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
    Function RECHERCHE_REF(Plage As Range, type_tc As String, puissance As Single) As Integer
    Dim Tabl()
    Dim i As Long
     
    ' si 1 seule cellule alors on met la valeur dans le tableau de recherche
    If Plage.Cells.Count = 1 Then
        ReDim Tabl(1 To 1): Tabl(1) = Plage.Cells(1, 1).Value
     
    ' si plusieurs cellules sur une seule colonne alors on met toutes les valeurs dans le tableau
    ElseIf Plage.Columns.Count = 1 Then
        Tabl = Application.Transpose(Plage.Value)
    ' si multicolonne : on affiche 0 et on quitte la fonction
    Else
        RECHERCHE_REF = 0
        Exit Function
    End If
     
    ' pour chaque valeur de cellule
    For i = LBound(Tabl) To UBound(Tabl)
        ' si la cellule contient la chaine de caractère de type_tc alors on ajoute la valeur de puissance au résultat
        If Tabl(i) = type_tc Then RECHERCHE_REF = RECHERCHE_REF + puissance
    Next i
     
    End Function

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 4
    Par défaut
    Merci pour ta réponse joe, j'ai modifié ma fonction et ça marche.

    Comme tu l'as expliqué, étant donné que je sélectionne mes cellules dans le tableau excel, il faut que j'utilise des arguments de type Range.
    Je copie ensuite les valeurs dans les variables de ma fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function RECHERCHE_REF(matrice As Range, type_tc As Range, puissance As Range) As Integer
     
    Dim cmpt1 As Integer, cmpt2 As Integer, index As Integer
    Dim nbLigne As Integer, nbColonne As Integer, puis As Integer
    Dim typetc As String
    Dim tab_principal() As Variant, tab_secondaire() As Variant
     
    tab_principal = matrice.Value
    typetc = type_tc.Value
    puis = puissance.Value
    Je te remercie encore, j'aurais pu chercher longtemps...

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

Discussions similaires

  1. Problème d'affichage d'un tableau dans une fenêtre
    Par barney_vegeta dans le forum NetBeans
    Réponses: 4
    Dernier message: 03/05/2012, 18h56
  2. Réponses: 1
    Dernier message: 04/05/2010, 11h47
  3. Problème de sélection d'un item dans une CListCtrl
    Par PetitPapaNoël dans le forum MFC
    Réponses: 9
    Dernier message: 01/08/2007, 14h51
  4. Réponses: 3
    Dernier message: 14/04/2007, 16h06
  5. Sélection d'un tableau dans une page
    Par jmde dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/01/2007, 21h21

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