Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recherche de la dernière cellule pour lecture fichier fermé

2 réponses
Avatar
Antoine76
Bonjour

J'essaie de créer un programme qui centralise des données issues d'autres
fichiers sans pour autant les ouvrir.
Le programme va donc chercher la valeur de cellules sur 8 colonnes et sur un
nombre variable de ligne dans tous les fichiers
d'un même dossier. Avec l'aide de Modeste et JB, je me suis inspiré de
programmes d'Excelabo : cfge-lireferme(
http://www.excelabo.net/moteurs/compteclic.php?nom=fcgd-lireferme). Là où je
ne sais pas comment adapté cette lecture en fichier fermé, c'est pour
définir la dernière cellule (= la dernière ligne) de ce fichier au niveau de
ma boucle de capture, sur la variable nl, du programme ci-après :

Dim P As String, F As String, S As String, A As String, R As Byte
Dim lig, nl, k As Byte
P = "C:\Mes documents\essai"
F = "arrêt ZAZA.xls"
S = "Sommaire"
lig = 2
For nl = 3 To 100 '''''''''''''' à remplacer par [C65000].End(xlUp).Row
du fichier ZAZA / que je n'arrive pas à intégrer
lig = lig + 1
For k = 1 To 8
A = Cells(nl, k).Address
Cells(lig, k + 1).Value = "='" & P & "\[" & F & "]" & S & "'!" &
Range(A) _
.Range("A1").Address(, , xlR1C1)
Next k
Next nl

Je ne sais pas si c'est possible de détecter la dernière celluleou rang en
lecture cachée.

Merci à tous

Antoine

2 réponses

Avatar
Youky
Salut Antoine
comme je connais un peu tes fichiers j'ai mis directement certaines
variables
tu dois enregistrer le fichier avant de lancer cette macro.
La macro n'est pas trés rapide mais ca marche
Youky
Sub Macro1()
Dim a(8)
Dim Fichier As String, Feuille As String, chem As String
chem = ActiveWorkbook.Path
Fichier = chem & "" & "Formulaires Arrêt de travail.xls"
Feuille = "Sommaire"
With CreateObject("Excel.Application").Workbooks.Open(Fichier)
lig = .Worksheets(Feuille).[C65000].End(xlUp).Row
For Col = 1 To 8
a(Col) = .Worksheets(Feuille).Cells(lig, Col)
Next
.Close False
End With
For Col = 1 To 8
Feuil1.Cells(2, Col) = a(Col)
Next
End Sub

"Antoine76" a écrit dans le message de news:

Bonjour

J'essaie de créer un programme qui centralise des données issues d'autres
fichiers sans pour autant les ouvrir.
Le programme va donc chercher la valeur de cellules sur 8 colonnes et sur
un
nombre variable de ligne dans tous les fichiers
d'un même dossier. Avec l'aide de Modeste et JB, je me suis inspiré de
programmes d'Excelabo : cfge-lireferme(
http://www.excelabo.net/moteurs/compteclic.php?nomügd-lireferme). Là où
je
ne sais pas comment adapté cette lecture en fichier fermé, c'est pour
définir la dernière cellule (= la dernière ligne) de ce fichier au niveau
de
ma boucle de capture, sur la variable nl, du programme ci-après :

Dim P As String, F As String, S As String, A As String, R As Byte
Dim lig, nl, k As Byte
P = "C:Mes documentsessai"
F = "arrêt ZAZA.xls"
S = "Sommaire"
lig = 2
For nl = 3 To 100 '''''''''''''' à remplacer par [C65000].End(xlUp).Row
du fichier ZAZA / que je n'arrive pas à intégrer
lig = lig + 1
For k = 1 To 8
A = Cells(nl, k).Address
Cells(lig, k + 1).Value = "='" & P & "[" & F & "]" & S & "'!" &
Range(A) _
.Range("A1").Address(, , xlR1C1)
Next k
Next nl

Je ne sais pas si c'est possible de détecter la dernière celluleou rang en
lecture cachée.

Merci à tous

Antoine







Avatar
Antoine
Bonsoir Youky

Je connaissais le prêt-à-porter ; je crois que je viens de découvrir le
prêt-à-coller ! ;-)

Merci beaucoup pour ton aide

Antoine

"Youky" a écrit dans le message de news:
43cbc245$0$19702$
Salut Antoine
comme je connais un peu tes fichiers j'ai mis directement certaines
variables
tu dois enregistrer le fichier avant de lancer cette macro.
La macro n'est pas trés rapide mais ca marche
Youky
Sub Macro1()
Dim a(8)
Dim Fichier As String, Feuille As String, chem As String
chem = ActiveWorkbook.Path
Fichier = chem & "" & "Formulaires Arrêt de travail.xls"
Feuille = "Sommaire"
With CreateObject("Excel.Application").Workbooks.Open(Fichier)
lig = .Worksheets(Feuille).[C65000].End(xlUp).Row
For Col = 1 To 8
a(Col) = .Worksheets(Feuille).Cells(lig, Col)
Next
.Close False
End With
For Col = 1 To 8
Feuil1.Cells(2, Col) = a(Col)
Next
End Sub

"Antoine76" a écrit dans le message de news:

Bonjour

J'essaie de créer un programme qui centralise des données issues d'autres
fichiers sans pour autant les ouvrir.
Le programme va donc chercher la valeur de cellules sur 8 colonnes et sur
un
nombre variable de ligne dans tous les fichiers
d'un même dossier. Avec l'aide de Modeste et JB, je me suis inspiré de
programmes d'Excelabo : cfge-lireferme(
http://www.excelabo.net/moteurs/compteclic.php?nomügd-lireferme). Là où
je
ne sais pas comment adapté cette lecture en fichier fermé, c'est pour
définir la dernière cellule (= la dernière ligne) de ce fichier au niveau
de
ma boucle de capture, sur la variable nl, du programme ci-après :

Dim P As String, F As String, S As String, A As String, R As Byte
Dim lig, nl, k As Byte
P = "C:Mes documentsessai"
F = "arrêt ZAZA.xls"
S = "Sommaire"
lig = 2
For nl = 3 To 100 '''''''''''''' à remplacer par [C65000].End(xlUp).Row
du fichier ZAZA / que je n'arrive pas à intégrer
lig = lig + 1
For k = 1 To 8
A = Cells(nl, k).Address
Cells(lig, k + 1).Value = "='" & P & "[" & F & "]" & S & "'!" &
Range(A) _
.Range("A1").Address(, , xlR1C1)
Next k
Next nl

Je ne sais pas si c'est possible de détecter la dernière celluleou rang
en
lecture cachée.

Merci à tous

Antoine