Thomas1806
Messages postés4Date d'inscriptionlundi 7 avril 2008StatutMembreDernière intervention20 juillet 2009
-
20 juil. 2009 à 09:17
Thomas1806
Messages postés4Date d'inscriptionlundi 7 avril 2008StatutMembreDernière intervention20 juillet 2009
-
20 juil. 2009 à 13:50
Bonjour à tous quelqu'un aurait une solution pour copier ma variable TabNomRep () dans une autre variable tableau a dimension variable Tab1 ()
Option Explicit
Public nb As Integer
Sub Appel()
Dim chemin As String
nb = 0
chemin = "C:\APT\PROGRAM\LIGNES\UNITS"
Lister chemin
End Sub
Public Function Lister(chemin As String)
'déclaration de variables
Dim fs As Variant
Dim Rep As Variant
Dim NewRep As String
Dim Nomfich As String
Dim Temp As String
Dim Ligne As Integer
Dim Z As Integer
Dim nbFichierSFC As Integer
Dim Colonne As Integer
Dim w As Integer
Set fs = CreateObject("Scripting.FileSystemObject")
Lister = fs.GetFolder(chemin).Files.Count
Nomfich = Dir(chemin & "\*.sfc")
Do While Nomfich <> ""
nb = nb + 1
Cells(nb, 10) = chemin & "" & Nomfich 'liste dans la feuille de calculs active
Nomfich = Dir()
Loop
For Each Rep In fs.GetFolder(chemin).SubFolders
NewRep = Lister(Rep.Path)
Next Rep
'initialisation des variables
Z = 0
w = 1
Ligne = 1
Colonne = 1
Temp = Dir("C:\APT\PROGRAM\LIGNES\UNITS\*.", vbDirectory)
'Boucle de récupération des noms de dossiers
Do
If Temp = "" Then
Exit Do
ElseIf Temp "." Or Temp ".." Then
'Ne rien afficher
Else
ReDim Preserve TabNomRep(0 To Z)
Cells(Ligne, Colonne) = Temp
Ligne = Ligne + 1
TabNomRep(Z) = Temp
Z = Z + 1
End If
Temp = Dir
Loop
'-------------------------------------------------------------
'réorganisation excel
Dim DernièreLigneFichiers, NomFichier As Variant
Dim DernièreLigneUnits As Variant
Dim ligneUnits As Integer
Dim ligneFichier As Integer
Dim PosSlash As Integer
Dim PointeurColFichiers As Integer
Dim nbSlash As Integer
Dim nbLigneUnit As Integer
Dim nbLigneUnitTab As Integer
Dim redimTab As Integer
DernièreLigneFichiers = 1
Dim MyXlRange As Excel.Range
Set MyXlRange = ActiveSheet.Range("A:A")
DernièreLigneUnits = MyXlRange.End(xlDown).Row
Set MyXlRange = ActiveSheet.Range("j:j")
DernièreLigneFichiers = MyXlRange.End(xlDown).Row
nbFichierSFC = 1
redimTab = 1
nbLigneUnit = 0
nbLigneUnitTab = 0
Do
For ligneFichier = 1 To DernièreLigneFichiers
PosSlash = 0
'Récupération position du slash
For nbSlash = 1 To 6
PosSlash = InStr(PosSlash + 1, Range("J" & CStr(ligneFichier)), "")
Next nbSlash
'Récupération du nom de fichier
NomFichier = Left(Range("J" & CStr(ligneFichier)), PosSlash)
'Vérification: si le nom du répertoire est dans le chemin
If InStr(1, NomFichier, TabNomRep(nbLigneUnitTab)) <> 0 Then
ReDim Preserve Tab1((DernièreLigneUnits - 1), 1 To redimTab)
Tab1(nbLigneUnit, nbFichierSFC) = Range("J" & CStr(ligneFichier))
nbFichierSFC = nbFichierSFC + 1
If nbFichierSFC > redimTab Then
redimTab = redimTab + 1
End If
Else
'On change d'index
nbFichierSFC = 1
nbLigneUnit = nbLigneUnit + 1
nbLigneUnitTab = nbLigneUnitTab + 1
End If
Next ligneFichier
Loop While (nbLigneUnitTab > (DernièreLigneUnits - 1))
End Function
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 20 juil. 2009 à 10:38
Salut
Je n'ai pas eu le courage de regarder tes lignes.
Pour transférer le contenu d'un tableau entier :
Dim monTableau(1 To 3) As String
Dim NewTableau() As String
Dim r As Long
monTableau(1) = "Codes-Sources"
monTableau(2) = "est"
monTableau(3) = "Formidable"
NewTableau = monTableau
For r = 1 To 3
Debug.Print " "; NewTableau(r);
Next r
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)