Erreur de compilation vba sur excel 2016

poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai aucune connaissance en vba, mais j'ai besoin d'aide pour pouvoir exploiter cette fonction, cependant j'ai des erreur de compilation

Ce que je veux, c'est pouvoir lire les valeurs d'une matrice sur un autre fichier excel '~150 000, ma fonction doit lire la valeur de la cellule A3 du fichier cible. Dans mon fichier source (la ou est la macro, j'ai une feuille excel qui recupere les données des cellule cible, le probleme que j'ai eu est que j'utilisai des SI donc 150 000 x 56 colonne de SI, et bien excel n'a pas trop apprécié ^^. J'en ai marre de refaire les liens, j'ai besoin d"une methode pertinente. Merci

La formule que j'utilise dans excel [=LectureFichier(B1;B2;B3;B4)]
Avec B1=\\192.168.2.1\t-informatique\0-Travail_du_vendredi_soir\Archive
B2=testFonction.xlsx Note: C'est le nom exacte de mon fichier
B3=FeuilTest1 Note: C'est le nom exacte de ma feuille
B3=A3 Note: A3 c'est le n° de cellule du document cible


:::source

Code:
Sub LectureFichier()
Function LinkFichierFFFC( _
        Chemin As String, _
        Fichier As String, _
        Feuille As String, _
        Cellule As Variant) As Variant
 
    Application.Volatile
 
    Dim Source As Object, Rst As Object, ADOCommand As Object
    Dim Cible As String
 
    Feuille = Feuille & "$"
    Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
        Cellule.Address(0, 0, xlA1, 0)
 
    Set Source = CreateObject("ADODB.Connection")
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Chemin & "\" & Fichier & _
        ";Extended Properties=""Excel 8.0;HDR=No;"";"
 
    Set ADOCommand = CreateObject("ADODB.Command")
    With ADOCommand
        .ActiveConnection = Source
        .CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
    End With
 
    Set Rst = CreateObject("ADODB.Recordset")
    '1 = adOpenKeyset, 3 = adLockOptimistic
    Rst.Open ADOCommand, , 1, 3
    Set Rst = Source.Execute("[" & Feuille & Cible & "]")
 
    LinkFichierFFFC = Rst(0).Value
 
    Rst.Close
    Source.Close
    Set Source = Nothing
    Set Rst = Nothing
    Set ADOCommand = Nothing
End Function
End Function



J'obtiens l'erreur suivante dans Visual basic:
Erreur de compilation:
Seuls des commentaires peuvent apparaître après end sub

Et sur excel, on me demande de verifier les valeurs, que les noms commence par "_" , qu'il n'y est pas d'espace, que les noms ne soit pas identique.

Alors j'ai tester en mettant un underscore devant B2 et B3 ex: _testFonction.xlsx


Si quelqu’un a une idée Merci d'avance.
A voir également:

1 réponse

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
En VBA/VB6, il n'est pas possible de déclarer une function/sub dans une autre function/sub corriges ton code en conséquence.
0
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   30
 
Ok merci, les messages d'erreur ont disparu mais ca ne marche pas, qu'es qui ne va pas ? je ne trouve pas

Function LinkFichierFFFC( _
        Chemin As String, _
        Fichier As String, _
        Feuille As String, _
        Cellule As Variant) As Variant
 
    Application.Volatile
 
    Dim Source As Object, Rst As Object, ADOCommand As Object
    Dim Cible As String
 
    Feuille = Feuille & "$"
    Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
        Cellule.Address(0, 0, xlA1, 0)
 
    Set Source = CreateObject("ADODB.Connection")
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Chemin & "\" & Fichier & _
        ";Extended Properties=""Excel 8.0;HDR=No;"";"
 
    Set ADOCommand = CreateObject("ADODB.Command")
    With ADOCommand
        .ActiveConnection = Source
        .CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
    End With
 
    Set Rst = CreateObject("ADODB.Recordset")
    '1 = adOpenKeyset, 3 = adLockOptimistic
    Rst.Open ADOCommand, , 1, 3
    Set Rst = Source.Execute("[" & Feuille & Cible & "]")
 
    LinkFichierFFFC = Rst(0).Value
 
    Rst.Close
    Source.Close
    Set Source = Nothing
    Set Rst = Nothing
    Set ADOCommand = Nothing
End Function
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

Quelle version Excel ?
car
Extended Properties=""Excel 8.0 concerne des versions XL<2007
0
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   30
 
ah ok, jai la version 2016, quel modif je dois apporté ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour, essaie d'expliquer ce que tu veux réaliser.
si je comprends, tu as ton classeur local, qui contient la macro, et un autre classeur, que tu appelles cible, dont une feuille contient 150 000 x 56 valeurs.
je ne comprends pas ce que tu souhaites faire avec la cellule A3 du classeur cible.
et je ne comprends pas ce que tu souhaites que fasse ta fonction.
tu écris "ca ne marche pas", mais cela ne remplace pas une description du comportement que tu essaies d'obtenir.
à tout hasard, essaie-tu d'expliquer que tu essaies de récupérer la cellule du classeur cible dont l'adresse est en A3 dans le classeur source?
n'hésite pas à donner plusieurs exemples, cela t'aidera à expliquer.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
0