Je voudrais de l'aide pour faire une macro sur excel, celle-ci doit me mettre dans un tableau en memoire la liste des fichiers excel contenu dans un dossier.
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO, path As String, r As Long, x As Long, pos As Integer
bInfo.pidlRoot = 0&
If IsMissing(Msg) Then
bInfo.lpszTitle = ""
Else
bInfo.lpszTitle = Msg
End If
bInfo.ulFlags = &H1
x = SHBrowseForFolder(bInfo)
path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
Else
GetDirectory = ""
End If
End Function
Sub File_Openen()
Dim fs, i, namefile, FileNumber, specfichier, nbfiles, r, Srep, folder, ct
dossier = GetDirectory("Choisit un dossier : " )
If dossier <> "" Then
Set fs = Application.FileSearch
With fs
.LookIn = dossier
.SearchSubFolders = True
.FileType = msoFileTypeAllFiles
If .Execute() > 0 Then
nbfiles = .FoundFiles.Count
MsgBox "Il y a " & nbfiles & " Fichiers."
For i = 1 To nbfiles
specfichier = .FoundFiles(i)
Range("A" & i) = specfichier
Next i
End If
End With
End If
End Sub
Ce programme te permet de selectionner un dossier puis il t'informe du nombre de fichiers contenu dans ce dossier puis il met les nom des fichier dans un tableau j'espere que c sa que tu cherche
Message édité par hoegarden31 le 13-06-2007 à 14:42:36
Non en fait je voudrais qu'il me liste le contenu du dossier, garder en memoire les noms de fichiers puis pouvoir les ouvrir 1 par 1 pour ajouter une ligne d'en-tete sur la 1ere ligne
Non c'est bon j'ai reussi à ouvrir tout les fichiers d'un dossier
' Code Visual Basic anglais
Sub ouvrir_fichiers()
'l'instruction ChDir permet de se positionner
'sur un répertoire précis
ChDir "c:\test\"
monfichier = Dir("*.*" )
While monfichier <> ""
Workbooks.Open monfichier
monfichier = Dir()
Wend
End Sub
Mais maintenant comment faire pour ajouter en haut de chaque fichiers sur la 1ere ligne une en-tete avec 5 noms de colonnes .
en fait j'ouvre plusieurs classeurs, le nombre de classeurs dans ce dossier varie, et je voudrais pour chaque qui entrent lancer la macro et que la 1ere ligne d'en-tete s'ajoute pour tout les classeurs une fois qu'ils sont ouvert.
Dixit moderator: chamakh51, fais comme les autres, présente ton code correctement. (Lire les règles, Merci).
Ce code ne date pas d'hier, la vache ! Des While/Wend Evite la fonction ChDir. Mets plutôt le chemin dans la fonction Dir. En plus tu as oublié de déclarer la variable monfichier Comme ça:
zeb mon code fonctionne pour ouvrir tout mes classeurs excel mais maintenant je voudrais pouvoir ajouter une ligne d'en tete en haut de chaque classeur qui s'ouvre!
En fait je reçois un classeur avec la colonne A pleine de code je veux une macro qui m'insere une ligne d'en-tete avec les propriétés suivantes ("no" en colonne A , "no_etud" en colonne B, "nom" en colonne 3, "prenom" en colonne 4) sur la 1ere ligne .
Ce n'est pas que je m'en bas mais je vien de commencer depuis 3-4 jours et j'essai de pas tro manipuler tant que celà fonctionne lol
Je vais essayer avec tes remarques et voir ce que celà donne
Que veux-tu dire par "nom du classeur de départ" ?
J'ai une feuille excel où j'ai mon en-tete et je voudrais que celle-ci se fasse sur tout les fichiers qui sont dans le dossier "originaux" .