Intégre la notion de dernière cellule libre [Résolu]

Signaler
Messages postés
57
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2010
-
Messages postés
57
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2010
-
Bonjour,

j'ai ce code qui me permet de copier la liste de fichier d'un répertoire. Simplement, j'aimerai pouvoir rajouter le fait que je puisses compléter cette liste de fichier par d'autres.

Donc je pensais rajouter :


Dim LigneLibre As long
 


LigneLibre = Range("A65536").End(xlUp).Row + 1




Par contre, j'ai nun peut tout essayé et je ne sais pas comment combiner la logique de la boucle et la dernière cellule vide.

Est-ce qu'une âme charitable pourrait m'aiguiller ?

Sub RecupNomFichier(ByVal Chemin As String, ByRef Tableau As Variant)
Dim Fichier As String
Dim Compteur As Integer
Dim LigneCompteur As Integer

' récupère le chemin depuis X1
Chemin = Range("x1")
Chemin = Chemin + "\*.*"
Compteur = 1
' récupère le nom du premier fichier contenu dedans
Fichier = Dir(Chemin)
Do While (Len(Fichier) > 0)
'  a l'aide d'une boucle tous les noms de fichiers contenus dans le répertoire _
 sont placés dans la colonne Z
ReDim Preserve Tableau(Compteur)
Tableau(Compteur - 1) = Fichier
LigneCompteur = Compteur + 1
ActiveSheet.Range("z" & LigneCompteur).Value = Tableau(Compteur - 1)
Compteur = Compteur + 1
Fichier = Dir()
Loop
End Sub


Sub RecupFichierTableau()
Application.ScreenUpdating = False
On Error Resume Next
Dim Tableau() As String
Call RecupNomFichier(Chemin, Tableau)
FiltreAlpha
End Sub

Cordialement


Hidozo

9 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
remplace :

Compteur = 1

par

Compteur = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell ).Row
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
dernière cellule utilisée :

Cells.SpecialCells(xlCellTypeLastCell )
Messages postés
57
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2010

Bonjour,

Je n'arrive pas à intégrer : Cells.SpecialCells(xlCellTypeLastCell ) dans ma boucle.

Dois je déclarer cellule = Cells.SpecialCells(xlCellTypeLastCell )

puis :

ActiveSheet.Range("z" & LigneCompteur & cellule).Value = Tableau(Compteur - 1)

Mais ça ne marche pas !!!!

Help please.
Messages postés
57
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2010

je viens d'essayer, ça ne marche pas !!!!

A plus

Merci encore
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
t'as pas une notion plus explicite que "ne marche pas"
j'ai pas testé, mais ca doit pas etre grand chose....
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
simplifié, je fais par exemple :

Sub RecupNomFichier(ByVal Chemin As String, Optional TargetColumn As Long = 26)
Dim Fichier As String
Dim Compteur As Integer
Compteur = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Fichier = Dir$(Chemin)
Do While LenB(Fichier)
Compteur = Compteur + 1
ActiveSheet.Cells(Compteur, TargetColumn).Value = Fichier
Fichier = Dir$()
Loop
End Sub

Sub RecupFichierTableau()
RecupNomFichier "C:\*.*"
End Sub
Messages postés
57
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2010

Re bonjour,

Quand je disais que ça ne marchait pas : La procédure tourne, mais rien ne se copie dans la colonne Z.

bref, j'ai refais des tests en conservant mes sub :

avec : Compteur = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
- sur différents dossiers, tout se copie à la suite dans la colonne Z
- par contre la 1ère cellule  (pour le 1er répertoire) de la colonne Z varie (74, 119, 126, au petit bonheur la chance).

A plus
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
et mon code de 14:59:15 fais la même chose chez toi ?

(testé et fonctionnel là, au boulot)
Messages postés
57
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2010

ton code de 14:59:15 ne me donne certains fichiers sauf les photos (JPG) que je voudrais.

par contre, si je n'enregistre par le classeurs, chaque fois que je lance une nouvelle manip :
- efface colone Z (via une macro)
- explorer (pour le répertoire)
- liste photos (pour coller les noms de fichier)

à chaque nouvelle manip, les noms se collent après la fin des manip précédentes. Par exemple si j'ai 50 fichier, cellule 1 à 50, j'efface et je refais la manip, les fichiers vont se coller de 51 à ...

Bizarre non ?

par contre les noms se collent après la dernière cellule occupée si je prends plusieurs répertoires.

Je vais garder cette solution pour l'instant, j'affinerai plus tard.

Je te remercie pour ton aide.

Je mettrai d'autres questions dans le forum, car je n'en suis qu'au début de ma programation.

A bientôt