XL 2021 Dernière ligne d'un fichier fermé

Chris 33

XLDnaute Nouveau
Bonsoir à tous, le Forum,

Est-il possible de récupérer la dernière ligne d'une colonne spécifique dans un fichier fermé ?

J'ai le code suivant qui ne fonctionne pas, en C3 j'ai toujours "0"
VB:
Sub Importer()
Dim feuille$, cible As Variant, chemin$, fichier$

feuille = InputBox("N° de commande ?")
cible = Application.GetOpenFilename("Fichiers Excel ,*.xlsx", , "Selectionnez votre fichier à importer")
If cible = False Then Exit Sub
chemin = Left(cible, InStrRev(cible, Application.PathSeparator))
fichier = Mid(cible, Len(chemin) + 1)
[C3] = ExecuteExcel4Macro("'" & chemin & "[" & fichier & "]" & feuille & "'!" & Range("AC" & Rows.Count).End(xlUp).Address(, , xlR1C1))

End Sub

Par avance merci pour votre aide
Chris
 

patricktoulon

XLDnaute Barbatruc
Bonsoir
une petite fonction Ado ça te branche ?

exemple
la derniere ligne de la colonne A du fichier fermé
VB:
Sub Dernière_LIgne_Plage_De_Données_Ds_Classeur_Fermé()
    Dim fichier$, Table1$
     fichier = "C:\Users\patricktoulon\Desktop\Classeur2.xlsx"
  
    Table1 = "[Feuil1$A:A]" 'Nom de la feuille est la plage de cellules concernées
 
    MsgBox "La dernière ligne du tableau de données est : " & _
           GetLastRowOnClosedFile(fichier, Table1)
End Sub
'-------------------------------------------------------------------------
Function GetLastRowOnClosedFile(ByVal Fname As String, ByVal TableName As String) As Long
    Dim Catch As Boolean, i&, AdC As Object, Rst As Object
    Set AdC = CreateObject("new:ADODB.Connection")
    Set Rst = CreateObject("new:ADODB.recordset")
    AdC.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fname & ";Extended Properties=""Excel 12.0;HDR=NO"";"
    Rst.CursorLocation = 2: Rst.Open TableName, AdC, 3: Rst.MoveLast
    catch= True
    Do While (Catch)
        For i = 0 To Rst.Fields.Count - 1
            If Not IsNull(Rst.Fields(i).Value) Then Catch = False: Exit Do
        Next
        Rst.MovePrevious
    Loop
    GetLastRowOnClosedFile = Rst.AbsolutePosition + 1
    Rst.Close: AdC.Close
    Set AdC = Nothing: Set Rst = Nothing
End Function
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Chris, et bienvenu sur XLD, Bonsoir Patrick
Essayez ainsi :
VB:
Sub Importer()
Dim Feuille$, Cible As Variant, Wkb As Variant
Feuille = InputBox("N° de commande ?")
Cible = Application.GetOpenFilename("Fichiers Excel ,*.xlsx", , "Selectionnez votre fichier à importer")
If Cible = False Then Exit Sub
Set Wkb = GetObject(Cible)
[C3] = Wkb.Sheets(Feuille).Range("AC" & Rows.Count).End(xlUp)
End Sub
 

patricktoulon

XLDnaute Barbatruc
sinon on peut s'amuser aussi avec une formule de liaison
exemple
la derniere ligne en colonne A du classeur "classeur2.xlsx " qui est sur mon bureau
VB:
Sub test()
    Dim Chemin$, Fichier$, Rng$, Feuille$
    'renseigner les variables ci dessous
    Chemin = "C:\Users\patricktoulon\Desktop\"    'ne pas oublier le dernier slash
    Fichier = "Classeur2.xlsx"
    Feuille = "Feuil1"
    Rng = "A:A"

    Formule = "=MAX(ROW('" & Chemin & "[" & Fichier & "]" & Feuille & "'!" & Rng & ")*('" & Chemin & "[" & Fichier & "]" & Feuille & "'!" & Rng & "<>""""))"
    'Debug.Print Formule'ok c'est bon

    With [A15]
        .FormulaArray = Formule
        .Value = .Value
    End With
End Sub
c'est presque mieux je dirais ;)
 

Chris 33

XLDnaute Nouveau
Bonjour Patricktoulon, Sylvanu,

Merci pour vos retours
Je viens d'essayer la proposition de Sylvanu qui fonctionne très bien
Je ne suis pas du tout calé en fonction Ado, je vais essayer ton code et surtout comprendre tout ce qu'il y a dedans, c'est pas gagné ! et aussi ta 2e proposition qui je trouve est intéressante

Encore merci à tous les deux
 

Chris 33

XLDnaute Nouveau
Bonsoir tout le monde,

Oui je me suis aperçu que le code de Sylvanu ouvrait les fichiers et il ne les fermait pas
J'ai juste rajouté : Wkb = GetObject(Cible).Close
J'ai également fait une boucle pour parcourir les 8500 fichiers
je n'ai pas encore tout décrypté de ton code Ado, je vais bien finir par y arriver
Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 245
Messages
2 086 570
Membres
103 247
dernier inscrit
bottxok