Intégre la notion de dernière cellule libre

Résolu
hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010 - 26 mai 2008 à 19:03
hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010 - 27 mai 2008 à 16:50
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2008 à 13:08
remplace :

Compteur = 1

par

Compteur = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell ).Row
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2008 à 08:54
dernière cellule utilisée :

Cells.SpecialCells(xlCellTypeLastCell )
0
hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010
27 mai 2008 à 12:32
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.
0
hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010
27 mai 2008 à 14:31
je viens d'essayer, ça ne marche pas !!!!

A plus

Merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2008 à 14:53
t'as pas une notion plus explicite que "ne marche pas"
j'ai pas testé, mais ca doit pas etre grand chose....
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2008 à 14:59
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
0
hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010
27 mai 2008 à 16:04
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2008 à 16:06
et mon code de 14:59:15 fais la même chose chez toi ?

(testé et fonctionnel là, au boulot)
0
hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010
27 mai 2008 à 16:50
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
0
Rejoignez-nous