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

20essai1.xlsx (8.01 Ko)

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.

Rechercher des sujets similaires à "erreur derniere vide colonne"