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 :

Index Match avec des variables issues d'un RefEdit [XL-2013]


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
    Autre
    Inscrit en
    Août 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2018
    Messages : 17
    Par défaut Index Match avec des variables issues d'un RefEdit
    Bonjour à tous,

    Je viens vers vous après de multiples tentatives infructueuses pour tenter de résoudre mon problème.
    Je m'explique:
    Dans un classeur "MyWB", une macro me permet d'ouvrir un classeur "EstimateFile". A l'aide d'un UserForm ("Dataselection"), j'invite l'utilisateur à sélectionner une colonne, puis une deuxième.

    Ces paramètres vont me servir à faire un Index + Match pour renvoyer des valeurs dans l'onglet "DataExport" de mon classeur MyWB.
    Or, lorsque j'exécute ma macro, aucune valeur n'est retournée.
    Au fur et à mesure du code, j'ai mis des MsgBox pour tester les variables. Surprise, ils me renvoient les valeurs, mais mon Index Match ne marche pas.
    J'ai fait de multiples tentatives (que j'ai mises en commentaires au fur et à mesure), mais je vous fais grâce de cela dans le code (ça allonge beaucoup trop).

    J'ai isolé l'Index +Macth dans un autre module, en remplaçant les variables issues de l'UserForm, par leur valeur grâce à des "" . Et l'index marche.
    J'ai donc un problème concernant le stockage et l'utilisation des variables issues de l'UserForm.

    Voici le code de la macro en question :
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub OpenFile2_Work()
    Sheets("DataExport").Activate
     
    Dim EstimateFile As String
    Dim MyWB As String
    Dim DerliData As Integer
    MyWB = ThisWorkbook.Name
     
         With Application.FileDialog(3)
            .Title = "Please select your estimate file"
            .Show
     
            On Error Resume Next 'si annuler
            Fichier = .SelectedItems(1)
     
            If Err.Number <> 0 Then Exit Sub
            Workbooks.Open Fichier, UpdateLinks:=0 'désactive la MAJ des liaisons
     
     
        Dataselection.Show
        Dataselection.StartUpPosition = 3 'UserForm centré par rapport à l'écran
     
    'Declaration des données du Userform
    PartsSheet = Range(Dataselection.RefEditParts).Parent.Name
    PartsCol = Dataselection.RefEditParts.Value
    PriceSheet = Range(Dataselection.RefEditPrice).Parent.Name
    PriceCol = Dataselection.RefEditPrice.Value
    Application.ScreenUpdating = False
     
    If Workbooks.Count = 2 Then
    For i = 1 To 2
    If Not Workbooks(i).Name = ThisWorkbook.Name Then EstimateFile = Workbooks(i).Name
    Next i
    End If
     
    'Workbooks(MyWB).Sheets("DataExport").Activate
    'MsgBox PriceSheet
    'MsgBox PartsSheet
    'MsgBox PartsCol
    'MsgBox PriceCol
    'MsgBox MyWB
    'MsgBox EstimateFile
     
    On Error Resume Next
    'Index
    DerliData = Workbooks(MyWB).Sheets("DataExport").Range("C" & Rows.Count).End(xlUp).Row
     
     
    For Ligne = 2 To DerliData
    Workbooks(MyWB).Sheets("DataExport").Cells(Ligne, 7) = WorksheetFunction.Index(Workbooks(EstimateFile).Sheets(PriceSheet).Rance(PriceCol).Columns, WorksheetFunction.Match(Workbooks(MyWB).Sheets("DataExport").Range(Cells(Ligne, 5), Cells(Ligne, 5)), Workbooks(EstimateFile).Sheets(PartsSheet).Range(PartsCol).Columns, 0))
    Next
            On Error GoTo 0
    End With
       Workbooks(MyWB).Sheets("DataExport").Activate
    Application.ScreenUpdating = True
     
    End Sub
    Voici le code de l'index match qui fonctionne :
    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
    Sub IndexTest()
    Sheets("DataExport").Activate
     
    Dim EstimateFile As String
    Dim MyWB As String
    Dim DerliData As Integer
     
     
    Windows("RT_Work_File_BOM Extract-v1.1.xlsm").Activate
    Sheets("DataExport").Select
    MyWB = ThisWorkbook.Name
    'Récupère le nom du fichier ouvert
    If Workbooks.Count = 2 Then
    For i = 1 To 2
    If Not Workbooks(i).Name = ThisWorkbook.Name Then EstimateFile = Workbooks(i).Name
    Next i
    End If
     
    'Index
    DerliData = Workbooks(MyWB).Sheets("DataExport").Range("C" & Rows.Count).End(xlUp).Row
     
    Sheets("DataExport").Activate
      On Error Resume Next
     
        For Ligne = 2 To DerliData
    Cells(Ligne, 7) = WorksheetFunction.Index(Workbooks(EstimateFile).Sheets("Chiffrage").Range("AC:ac"), WorksheetFunction.Match(Workbooks(MyWB).Sheets("DataExport").Range(Cells(Ligne, 5), Cells(Ligne, 5)), Workbooks(EstimateFile).Sheets("Chiffrage").Range("B:B"), 0))
    Next
    On Error GoTo 0
     
    End Sub
    Auriez-vous une idée pour résoudre mon problème svp ?

    En vous remerciant par avance pour votre aide précieuse,

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    Bonjour,

    Dans un premier temps :
    1- Rajoute un On Error Goto 0 juste avant la ligne 17 de ton code
    2- A quoi sert le On Error Resume Next en ligne 44 ? car sans au minimum un test sur la valeur Err.Number pour gérer une erreur que tu sais pouvoir arriver, ça revient juste à ignorer les éventuelles erreurs, ce qui n'est jamais bon ==> donc mets le en commentaire ou supprime le
    3- Essaie de remplacer (au cas où la feuille active ne serait pas celle que tu crois, car ce qui peut faire fonctionner le deuxième code, c'est l'instruction Sheets("DataExport").Activate ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WorksheetFunction.Match(Workbooks(MyWB).Sheets("DataExport").Range(Cells(Ligne, 5), Cells(Ligne, 5)) ...
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WorksheetFunction.Match(Workbooks(MyWB).Sheets("DataExport").Cells(Ligne, 5) ...

  3. #3
    Membre averti
    Femme Profil pro
    Autre
    Inscrit en
    Août 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2018
    Messages : 17
    Par défaut
    Bonjour Zenpbb,

    Tout d'abord merci de te pencher sur mon problème.
    J'ai inséré un On Error GoTo 0 avant mon Workbook Open (ligne 17 du code), j'ai également mis le On Error Resume Next en commentaire et remplacé le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorksheetFunction.Match(Workbooks(MyWB).Sheets("DataExport").Range(Cells(Ligne, 5), Cells(Ligne, 5))
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorksheetFunction.Match(Workbooks(MyWB).Sheets("DataExport").Cells(Ligne, 5)

    cela m'affiche une Erreur d'exécution "438" : Propriété ou méthode non gérée par cet objet.

    Je suppose que c'est parce qu'avec un Match, en indiquant un range, il faut lui renvoyer un méthode range. Je ne suis pas certaine que le problème vienne de là?
    Cela marche dans mon code Index lorsque je substitue les valeurs aux réfEdit.
    Mais pas lorsque j'utilise mes variables du refEdit.


    Avec mon code initial, si je met en commentaire le On Error Resume Next, j'ai le même message d'erreur qui apparaît.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    re,
    tu as une faute de frappe : Rance au lieu de Range, ce qui peut expliquer l'erreur...

  5. #5
    Membre averti
    Femme Profil pro
    Autre
    Inscrit en
    Août 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2018
    Messages : 17
    Par défaut
    re,

    Bien vu. Je l'ai corrigé (et tant qu'à y être j'ai re balayé le code pour être certaine qu'il n'y en ait pas d'autres).
    Pleine d'espoir, j'ai relancé, mais non, cela ne fonctionne toujours pas :'(

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    Bonjour,
    Quel est ton code modifié qui pose problème, quelle erreur sur quelle ligne ?

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/11/2005, 12h03
  2. Remplir les cellules Excel avec des variables VB
    Par rupeni dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/11/2005, 09h31
  3. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  4. paramétrer ADOConnection avec des variables
    Par ouckileou dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/04/2004, 08h11
  5. UPDATE avec des variables Delphi ...
    Par Kokito dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/03/2004, 22h35

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