Erreur sur dernière cellule non vide d'une colonne
Bonjour
J'ai un souci avec le bout de code ci-dessous:
Sheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Offset(1, 0) = _
"='" & Chemin & "[" & Fichier & "]Feuil1'!A1" _
& Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
Dans le classeur Tri qui génère la macro, Je récupère la cellule "Ligne 12" au lieu de la cellule "FIN".
Si je remplace A1 par A2 je récupère la cellule "Ligne 22".
Si je met simplement A je récupère "Ligne 2"
Je joins mon classeur source "Essai 1"dans lequel je viens piocher les infos qui m’intéressent.
C'est juste un classeur test pour faciliter la lecture dans le classeur de récupération "Tri".
Voici le code complet pour ceux qui voudraient faire des tests:
Chemin = "C:\Users\JP\Desktop\Test\" 'Chemin à adapter
Fichier = Dir(Chemin & "*.xlsx")
Do While Len(Fichier) > 0
If Fichier <> ThisWorkbook.Name Then
With Sheets("Feuil1")
Sheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Offset(1, 0) = _
"='" & Chemin & "[" & Fichier & "]Feuil1'!A1" _
& .Range("A" & Rows.Count).End(xlUp).Row
End With
End If
Fichier = Dir()
Loop
End Sub
Si quelqu'un a une idée sur la bonne formule à appliquer, je suis preneur.
Merci et bonne soirée
Bonsoir
C'est normal
Je vais essayer de le l'expliquer
Tu as ce style de formule en retour
='C:.............................................\Test\[[surligner=#FFFF80]Essai1.xlsx][surligner=#40BFFF]Feuil1'!A1[surligner=#FF40FF]2
Premièrement tu as une entête dans la page "Feuil1" du fichier principal
en décortiquant l'instruction
Sheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Offset(1, 0) = _
"='" & Chemin & "[" & [surligner=#FFFF80]Fichier & "][surligner=#40BFFF]Feuil1'!A1" _
&[surligner=#FF40FF].Range("A" & Rows.Count).End(xlUp).Row
Car contrairement à ce que tu penses tu ne travailles qu'avec la page "Feuil1" de ton fichier principal
Et c'est pour ça que si tu modifies
A1 par A2 tu récupères
='C:.............................................\Test\[[surligner=#FFFF80]Essai1.xlsx][surligner=#40BFFF]Feuil1'!A2[surligner=#FF40FF]2
----> Ligne22
En mettant seulement A
='C:.............................................\Test\[[surligner=#FFFF80]Essai1.xlsx][surligner=#40BFFF]Feuil1'!A[surligner=#FF40FF]2
----> Ligne2
Une solution serait d'avoir les fichiers ouverts
With Workbooks(fichier).Sheets("Feuil1")
Sheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Offset(1, 0) = _
"='" & chemin & "[" & fichier & "]Feuil1'!A" _
& .Range("A" & Rows.Count).End(xlUp).Row
Bonjour
Banzai64 je te remercie pour tes explications.
En fait je récupère le numéro de ligne (ligne 2 de mon fichier Tri) et je le colle à côté du A qui indique la colonne de mon fichier
essai1. Ensuite je récupère le contenu de la cellule correspondante du fichier Essai1.
Je pensais bêtement que tout ce qui se trouvait après "='" concernait mon classeur Essai1.
Y a t'il un moyen pour arriver à mes fin en conservant la base de la macro ?
Pour ce qui est d'ouvrir les classeurs j'ai déjà eu une solution sur ce forum avec Vba-new . Le problème était le nombre important
de classeurs à traiter qui aurait plus poser des problèmes de mémoire.
Vba-news m'a également donné des solutions avec ADO qui fonctionnaient sur plusieurs PC SAUF sur le mien.
C'est pour celà que j'insiste sur la macro actuelle.
Je suis optimiste il doit bien y avoir une formule qui me sauvera.
Bonne soirée
Bonsoir
A tester car non testé
Sub Lecture()
Dim Chemin As String, Fichier As String
Dim Ws As Worksheet
Application.ScreenUpdating = False
Set Ws = Sheets("Feuil1")
Chemin = "C:\Users\JP\Desktop\Test\" 'Chemin à adapter
Chemin = ThisWorkbook.Path & Application.PathSeparator
Fichier = Dir(Chemin & "*.xlsx")
Do While Fichier <> ""
If Fichier <> ThisWorkbook.Name Then
With Workbooks.Open(Chemin & Fichier)
With .Sheets("Feuil1")
Ws.Range("C" & Rows.Count).End(xlUp).Offset(1, 0) = _
"='" & Chemin & "[" & Fichier & "]Feuil1'!A" & .Range("A" & Rows.Count).End(xlUp).Row
End With
.Close savechanges:=False
End With
End If
Fichier = Dir()
Loop
End Sub
Bonjour
Banzai64 j'ai essayé la macro mais rien ne se passe.
Je continue à tester.
Un grand merci Banzai64 pour ton aide.
Bonjour
jp65 a écrit :Banzai64 j'ai essayé la macro mais rien ne se passe.
sans doute parce que je n'ai pas enlevé le chemin de mon dossier
Enlèves cette ligne
Sub Lecture()
Dim Chemin As String, Fichier As String
Dim Ws As Worksheet
Application.ScreenUpdating = False
Set Ws = Sheets("Feuil1")
Chemin = "C:\Users\JP\Desktop\Test\" 'Chemin à adapter
Chemin = ThisWorkbook.Path & Application.PathSeparator
Fichier = Dir(Chemin & "*.xlsx")
Do While Fichier <> ""
Effectivement Banzai64
Il y avait bien cette ligne en trop.
Je vais continuer à travailler dans la voie que tu m'a donné.
Je te remercie beaucoup pour ton aide efficace.