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 :

Fonction INDEX et variable tableau pour condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chercheur en informatique, qui a pas encore trouvé
    Inscrit en
    Novembre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique, qui a pas encore trouvé

    Informations forums :
    Inscription : Novembre 2017
    Messages : 10
    Par défaut Fonction INDEX et variable tableau pour condition
    Bonjour,

    Je me tourne vers vous car je suis dans une impasse.
    J'ai une macro pour un fichier excel à 2 feuilles 1 (base) : les références que l'on veut acheter 2 : les retours de cotations
    avec la macro je crée une 3éme feuille qui doit indiquer quelles sont les meilleurs retours.

    Ma macro est focntionnelle, mais aujoud'hui je souhaite optimiser le code et surtout la rendre flexible au nombre de quantité à acheter par référence (le produit n'étant pas un yaourt, la ref et sa qualité sont uniques).
    Pour ce faire, je crée un tableau qui va intégrer le nombre de piece de la même reference que nous voulons. Mais lors de la comparaison finale, j'ai une incompatibilité de type et je n'arrive pas à déterminer sa provenance.
    Je tiens à préciser que les valeurs a,b,c,refdonnée produisent la même erreur en variant ou autre.
    Personnellement je pense que cela viens de la fonction INDEX qui doit être repris dans une autre fonction mais je ne vois pas laquelle.
    J'ai cherché sur divers cas, mais je ne suis pas sur de comprendre toutes les réponses.
    En vous remerciant par avance.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Dim i As Integer
    Dim refdonnée() As String
    Dim a As Integer
    Dim b As String
    Dim c As Integer
    Dim match As Integer
    
    'Nombre est une variable défini plus haut en entier
    i = nombre - 1
    ReDim refdonnée(0 To i, 0 To 0, 0 To 0)
    lignecompteur = 3
    a = 0
    
    For Each vale In base.Rows
        If vale.Cells(1, 1) <> "Référence recherchée" Then
            If vale.Cells(1, 1) <> vale.Cells(1 - 1, 1) Then
                For a = a To UBound(refdonnée, 1) 'boucle sur la 1ere dimension
                    For Each NBR In base.Rows
                        If NBR.Cells(1, 1) = vale.Cells(1, 1).Value Then
                        match = match + 1
                        End If
                    Next
                a = a
                c = match
                b = vale.Cells(1, 1)
                refdonnée(a, 0, 0) = a & b & c
                a = a + 1
                Exit For
                Next a
            End If
        End If
    match = 0
    Next
    
    
    H = refdonnée()
    For Each vale In base.Rows
        If vale.Cells(1, 1) <> "Référence recherchée" Then
            For a = 0 To i
                If vale.Cells(1, 1) = Application.WorksheetFunction.Index(refdonnée, 0, 2) Then            
    
    MsgBox (blabla)
    End If Next End If Next

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    la fonction INDEX (cf l'aide d'Excel) ne gérant déjà que deux dimensions, la variable elle en a trois, non ?!
    Et en plus tu essayes de coller l'intégralité d'une dimension dans une cellule !    Double erreur …
    Donc là il faudrait préciser clairement et techniquement ce qu'est censé réaliser cette ligne.

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Membre averti
    Femme Profil pro
    Chercheur en informatique, qui a pas encore trouvé
    Inscrit en
    Novembre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique, qui a pas encore trouvé

    Informations forums :
    Inscription : Novembre 2017
    Messages : 10
    Par défaut
    Ok, j'explique ça :

    If vale.Cells(1, 1) = Application.WorksheetFunction.Index(refdonnée, 0, 2) Then

    Cette ligne compare ma référence recherché par la boucle "vale" dans le tableau refdonnée en colonne 2. Cette colonne correspond au référence précédement inscrite dans ce même tableau refdonnée.

    en gros ça donnerais vale.cells(1,1) = refdonnée.cells(1,2) si refdonnée était une plage de cellule.

    Pour le problème de dimension, je cherchais à avoir un tableau à ligne multiple (i) et 3 colonnes.
    La colonne qui déroule (i) = 0 puis 1,2,3,etc.
    La colonne qui inscrit la référenre "1234";
    et enfin la valeur qui correpond au nombre de fois que l'on compte la valeur "1234" dans la liste.

    Je dois m'être planté dans les dimensions, mais je ne vois pas comment faire apparaître cette 3éme colonne sans ce fameux refdonnée (a,b,c).

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Toute plage de cellules est en deux dimensions !     Voir l'aide VBA de Range et de Cells

  5. #5
    Membre averti
    Femme Profil pro
    Chercheur en informatique, qui a pas encore trouvé
    Inscrit en
    Novembre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique, qui a pas encore trouvé

    Informations forums :
    Inscription : Novembre 2017
    Messages : 10
    Par défaut
    J'ai trouvé la solution, ce n'était pas en lien avec ce que tu disais.
    Juste la fonction INDEX qui semblait ne pas être approprié pour ce cas et qui me faisait une erreur (peut être que cette fonction ne doit pas s'utiliser seule, je ne sais pas).

    Je passe en résolu, bonne journée.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/11/2014, 00h40
  2. [XL-2010] Variable Tableau pour Expert
    Par moi244 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/01/2013, 17h39
  3. [Tableau][matrices]changement d'index et variables variables
    Par The Wretched dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 18/04/2005, 10h01
  4. [VB.NET] Quel objet tableau pour une recherche indexée ???
    Par Kitano dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/09/2004, 09h38
  5. Fonction max d'un tableau de variables...
    Par Romalafrite dans le forum ASP
    Réponses: 7
    Dernier message: 20/07/2004, 10h38

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