Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

afficher le nom du fichier excel dans une cellule

5 réponses
Avatar
nephelion
bonsoir à tous et à toutes,
je suis nouveau ici et j'ai un gros problème à résoudre.
j'ai une multitude de fichiers qui ont heureusement la même
configuration :
numero de dossier, numéro de contrat, date, xxx, ...

le nom du fichier est comme ça :
FIC0001.XLS pour client 1
FIC0002.XLS pour client 2
ainsi de suite


comment peut-on faire pour inscrire le nom du fichier FIC00XX dans une
cellule quelconque de chaque ligne ( en général - de 5 lignes)de chaque
fichier ?
la finalité est d'arriver à fusionner tous ces fichiers en un seul afin
de mieux les traiter et ensuite migrer en une table contrat par exemple
sous access.

je me vois mal retaper presque 2000 petits fichiers...
au secours et merci

5 réponses

Avatar
Jean-François Aubert
salut nephelion,

la formule: (il y a plus court, mais je ne la retrouve plus...)

=DROITE(STXT(CELLULE("nomfichier");1;TROUVE("]";CELLULE("nomfichier");1)-1);NBCAR(STXT(CELLULE("nomf
ichier");1;TROUVE("]";CELLULE("nomfichier");1)-1))-CHERCHE("[";CELLULE("nomfichier");1))


'..................................................................................
la formule écrite par VBA ( en une seule ligne):

sub yy1()
ActiveCell.FormulaR1C1 = _
"=RIGHT(MID(CELL(""nomfichier""),1,FIND(""]"",CELL(""nomfichier""),1)-1),
LEN(MID(CELL(""nomfichier""),1,FIND(""]"",CELL(""nomfichier""),1)-1))-
SEARCH(""["",CELL(""nomfichier""),1))"
end sub

'....................................................................
le nom du fichier en dur:

sub yy2()
Dim nomFich
ActiveCell = ActiveWorkbook.Name
end sub

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"nephelion" a écrit dans le message de
news:412f9d2c$0$30988$
bonsoir à tous et à toutes,
je suis nouveau ici et j'ai un gros problème à résoudre.
j'ai une multitude de fichiers qui ont heureusement la même
configuration :
numero de dossier, numéro de contrat, date, xxx, ...

le nom du fichier est comme ça :
FIC0001.XLS pour client 1
FIC0002.XLS pour client 2
ainsi de suite


comment peut-on faire pour inscrire le nom du fichier FIC00XX dans une
cellule quelconque de chaque ligne ( en général - de 5 lignes)de chaque
fichier ?
la finalité est d'arriver à fusionner tous ces fichiers en un seul afin
de mieux les traiter et ensuite migrer en une table contrat par exemple
sous access.

je me vois mal retaper presque 2000 petits fichiers...
au secours et merci



Avatar
Jean-Jacques \(JJP\)
Bonjour,

Peut etre ça :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)


@+
JJP



Jean-François Aubert %23rq$
a écrit dans le message de news :

salut nephelion,

la formule: (il y a plus court, mais je ne la retrouve plus...)


=DROITE(STXT(CELLULE("nomfichier");1;TROUVE("]";CELLULE("nomfichier");1)-1);

NBCAR(STXT(CELLULE("nomf

ichier");1;TROUVE("]";CELLULE("nomfichier");1)-1))-CHERCHE("[";CELLULE("nomf

ichier");1))



'...........................................................................

.......
la formule écrite par VBA ( en une seule ligne):

sub yy1()
ActiveCell.FormulaR1C1 = _



"=RIGHT(MID(CELL(""nomfichier""),1,FIND(""]"",CELL(""nomfichier""),1)-1),
LEN(MID(CELL(""nomfichier""),1,FIND(""]"",CELL(""nomfichier""),1)-1))-
SEARCH(""["",CELL(""nomfichier""),1))"
end sub

'....................................................................
le nom du fichier en dur:

sub yy2()
Dim nomFich
ActiveCell = ActiveWorkbook.Name
end sub


"nephelion" a écrit dans le message de
news:412f9d2c$0$30988$
bonsoir à tous et à toutes,
je suis nouveau ici et j'ai un gros problème à résoudre.
j'ai une multitude de fichiers qui ont heureusement la même
configuration :
numero de dossier, numéro de contrat, date, xxx, ...

le nom du fichier est comme ça :
FIC0001.XLS pour client 1
FIC0002.XLS pour client 2
ainsi de suite


comment peut-on faire pour inscrire le nom du fichier FIC00XX dans
une cellule quelconque de chaque ligne ( en général - de 5 lignes)de
chaque fichier ?
la finalité est d'arriver à fusionner tous ces fichiers en un seul
afin de mieux les traiter et ensuite migrer en une table contrat par
exemple sous access.

je me vois mal retaper presque 2000 petits fichiers...
au secours et merci




Avatar
nephelion
merci à jean-jacques et jean-françois





Peut etre ça :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)




cette formule restitue Feuil1 ou Feuil2...
juste pour ma compréhension pourquoi ;A1 ? et à la fin pourquoi +1;32 ?


Jean-François Aubert %23rq$
a écrit dans le message de news :

salut nephelion,

la formule: (il y a plus court, mais je ne la retrouve plus...)




=DROITE(STXT(CELLULE("nomfichier");1;TROUVE("]";CELLULE("nomfichier");1)-1);
NBCAR(STXT(CELLULE("nomf

ichier");1;TROUVE("]";CELLULE("nomfichier");1)-1))-CHERCHE("[";CELLULE("nomf
ichier");1))



ca marche et restitue bien le nom du fichier


puis-je abuser un peu plus,

peut-on faire automatiser la chaine ?
ouvrir chaque fichier FIC00XX.XLS du répertoire, insérer une colonne et
faire écrire le nom du fichier dans chaque ligne trouvée ?

merci encore


Avatar
Jean-François Aubert
salut nephelion,


peut-on faire automatiser la chaine ?
ouvrir chaque fichier FIC00XX.XLS du répertoire, insérer une colonne et
faire écrire le nom du fichier dans chaque ligne trouvée ?



j'ai supposé que les données des fichiers FIC00XX commence en colonne A

Sub yy()
Dim Fs
Dim i
Dim plg
Dim cell
Dim col
Dim chemin
Dim fichier

col = 5 ' <<<< colonne où inscrire le nom du fichier
chemin = "D:mes documentsmonDossier" ' <<< à adapter
fichier = "FIC*.*" ' <<<< début du nom du fichier


Application.ScreenUpdating = False
Set Fs = Application.FileSearch
With Fs
.LookIn = chemin
.FileType = msoFileTypeExcelWorkbooks
.Filename = fichier
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.Open (.FoundFiles(i))
plg = ActiveSheet.UsedRange.Rows.Address
For Each cell In Range(plg)
If Not IsEmpty(cell) Then
Cells(cell.Row, col) = ActiveWorkbook.Name
End If
Next
ActiveWorkbook.Close True
Next i
Else
MsgBox "Aucun fichier trouvé."
End If
End With

End Sub


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"nephelion" a écrit dans le message de
news:413065a2$0$5968$

merci à jean-jacques et jean-françois





Peut etre ça :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)




cette formule restitue Feuil1 ou Feuil2...
juste pour ma compréhension pourquoi ;A1 ? et à la fin pourquoi +1;32 ?


Jean-François Aubert %23rq$
a écrit dans le message de news :

salut nephelion,

la formule: (il y a plus court, mais je ne la retrouve plus...)




=DROITE(STXT(CELLULE("nomfichier");1;TROUVE("]";CELLULE("nomfichier");1)-1);
NBCAR(STXT(CELLULE("nomf

ichier");1;TROUVE("]";CELLULE("nomfichier");1)-1))-CHERCHE("[";CELLULE("nomf
ichier");1))



ca marche et restitue bien le nom du fichier


puis-je abuser un peu plus,

peut-on faire automatiser la chaine ?
ouvrir chaque fichier FIC00XX.XLS du répertoire, insérer une colonne et
faire écrire le nom du fichier dans chaque ligne trouvée ?

merci encore







Avatar
nephelion

salut nephelion,



peut-on faire automatiser la chaine ?
ouvrir chaque fichier FIC00XX.XLS du répertoire, insérer une colonne et
faire écrire le nom du fichier dans chaque ligne trouvée ?




j'ai supposé que les données des fichiers FIC00XX commence en colonne A

Sub yy()
Dim Fs
Dim i
Dim plg
Dim cell
Dim col
Dim chemin
Dim fichier

col = 5 ' <<<< colonne où inscrire le nom du fichier
chemin = "D:mes documentsmonDossier" ' <<< à adapter
fichier = "FIC*.*" ' <<<< début du nom du fichier


Application.ScreenUpdating = False
Set Fs = Application.FileSearch
With Fs
.LookIn = chemin
.FileType = msoFileTypeExcelWorkbooks
.Filename = fichier
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.Open (.FoundFiles(i))
plg = ActiveSheet.UsedRange.Rows.Address
For Each cell In Range(plg)
If Not IsEmpty(cell) Then
Cells(cell.Row, col) = ActiveWorkbook.Name
End If
Next
ActiveWorkbook.Close True
Next i
Else
MsgBox "Aucun fichier trouvé."
End If
End With

End Sub




merçi jean-françois,
je m'en vais tester et t'en dirais des nouvelles.
amicalement,