Problème de RechercheV à partir de VB6

avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 8 janv. 2010 à 18:58
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 9 janv. 2010 à 23:23
Bonjour,

Je rencontre un problème avec un code qui est lancé à partir d'un application VB6.

Losque je clique sur le Bouton VB6, qui contient ce code:
Private Sub cmdTranfertDe_Click()
Dim i As Integer, J As Integer
For i = 1 To Workbooks("test macro milages.xls").Sheets("Page1-1").UsedRange.Rows.Count
   If IsNumeric(Workbooks("test macro milages.xls").Sheets("Page1-1").Cells(i, "E").Value) Then
       For J = 1 To Workbooks("Classeur.xlsx").Sheets("Feuil1").UsedRange.Rows.Count
           If Workbooks("Classeur.xlsx").Sheets("Feuil1").Cells(J, "A").Value = Workbooks("test macro milages.xls").Sheets("Page1-1").Cells(i, "E").Value Then
               Workbooks("test macro milages.xls").Sheets("Page1-1").Cells(i, "U") = Workbooks("Classeur.xlsx").Sheets("Feuil1").Cells(J, "B").Value
               Exit For
           End If
       Next J
   End If
Next i
End Sub


Il me donne comme erreur: Erreur d'exécution 9: Indice en dehors de la plage.


Je m'explique.

Le code doit exporter des valeurs d'un des fichiers excel vers l'autres fichier si chaqunes des cellules de la colonne E correspond au cellule de la cellule du 2e fichier.

Bien entendu, les 2 fichier excel seront ouvert. De plus, j'ai aussi comme référence: Microsoft Excel 12.0 Object Library.


Merci encore por votre aide.

6 réponses

avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
8 janv. 2010 à 19:50
Je vais donner plus d'info

Dans mon premier fichier, test macro milages.xls, ps: sans macro", dans la colonne E, il y a des numéros ex: 01001, 01002, 01003 .......

Dans mon 2e fichier excel, colonne A, ce trouve aussi les numéros:
01001,01002,01003.........

Par contre, à coté de chaques numéro, dans la colonne B, il y a un autre numéro, ex: 1,2,3,4,5..........

Ce que je veux faire maintenant, c'est que tous les numéro de la colonne E du premier fichier excel, un après l'autre, regarde dans le 2e fichier excel colunne A afin de trouver la même valeur, s'il si trouve, la valeur de la colonne B, ira s'inscrire dans le 1er fichier excel, dans la colonne U.


Est-ce possible?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
9 janv. 2010 à 09:13
salut,

Workbooks("test macro milages.xls")

en principe ce n'est pas lié à un fichier mais à un objet excel quel est ton code d'ouverture du fichier? où est déclaré Workbooks?

[hr]
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
9 janv. 2010 à 14:04
Nul part
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
9 janv. 2010 à 19:54
c'est réglé alors


regarde dans les sources existantes pour communiquer ("piloter") avec excel, CE SI TU ES VRAIMENT SOUS VB6 ET NON VBA, bien entendu

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
9 janv. 2010 à 22:08
OK, je viens de travailler dessus ce code, qui, je crois est mieux.

Par contre, j'ai toujours un error 9: Indice en dehors de la plage, sur cette partie du code:
Set ws1 = excel.Workbooks("test macro milages.xls").Sheets("Page1-1")


Code complet:
Private Sub cmdTranfertDe_Click()
    Dim ws1     As Excel.Worksheet
    Dim ws2     As Excel.Worksheet
    Dim Range1  As Excel.Range
    Dim Range2  As Excel.Range
    Dim Cell1   As Excel.Range
    
    Set ws1 = Excel.Workbooks("test macro milages.xls").Sheets("Page1-1")
    Set ws2 = Excel.Workbooks("Classeur.xlsx").Sheets("Feuil1")
    
    Set Range1 = Excel.Intersect(ws1.Columns("E:E"), ws1.UsedRange)
    Set Range2 = Excel.Intersect(ws2.Columns("A:B"), ws2.UsedRange)
    
    On Error Resume Next '-- a good use of this in cases VLookup fails
    For Each Cell1 In Range1.Cells
        Cell1.Offset(0, 16).Value = Excel.Application.WorksheetFunction.VLookup(Cell1, Range2, 2, 0)
        '-- if VLookup fails, Cell1.Offset(0, 16) in column "U" is unchanged
        '-- if required the next line below can be used:
        'If Err Then Cell1.Offset(0, 16).Value = "": Err.Clear
    Next
    On Error GoTo 0
    
End Sub
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
9 janv. 2010 à 23:23
ws déclaré ok, mais ni instancié (new), ni attaché à un objet excel (référence ou createobject)
0
Rejoignez-nous