Calc

Auteur : Bernard Marcelly

Objet de la macro

Renommer une série de fichiers selon une table de traduction définie dans une feuille Calc.

Contexte

Les logiciels de scanner créent des fichiers successifs avec des noms du genre scan001.tif scan002.tif scan003.tif etc. Après avoir scanné une série de photos, il est nécessaire de renommer individuellement chaque photo sans se tromper. Un problème identique existe avec les photos produites par un appareil photo numérique.

L’idée est d’inscrire sur une feuille Calc les caractéristiques de chaque scan, avec le nom de la diapo (ou du négatif) et le nom du fichier obtenu.

Par exécution de la macro, qui est stockée dans le même document Calc, les fichiers obtenus sont automatiquement renommés.

Utilisation

Copier/coller l’ensemble des deux macros dans un module Basic du document Calc.

Dans la feuille Calc, la colonne A contient le nom final du cliché scanné. La colonne B contient le nom créé automatiquement par le scanner.

Repérer les lignes concernées avec une sélection ( il suffit de sélectionner une colonne ) et exécuter la macro RenommerScans. On peut ensuite effacer le contenu de la colonne B.

Le renommage prend quelques instants, ainsi que l’affichage du résultat dans la fenêtre de l’explorateur de fichiers.

Adaptez cette macro en fonction de vos besoins.

Logiciel libre de droits et sans aucune garantie. A utiliser à vos risques et périls, faites des sauvegardes !

REM ***** BASIC *****

Option Explicit

Sub RenommerScans

Dim MonDocument As Object, LesFeuilles As Object

Dim FeuilleCliches As Object, CellCliche As Object

Dim UnezoneCellule As Object, CoordZone As Object

Dim y1 As Integer

Dim nomAvant As String, nomApres As String

Dim RepBrut As String, extFich As String

MonDocument = ThisComponent

LesFeuilles= MonDocument.Sheets

UnezoneCellule = MonDocument.CurrentSelection

CoordZone = UneZoneCellule.RangeAddress

FeuilleCliches = LesFeuilles(CoordZone.Sheet)

repBrut = "c:\Photos\Brut\"

extFich = ".tif"

For y1= CoordZone.StartRow to CoordZone.EndRow

CellCliche = FeuilleCliches.getCellByPosition(rangcol("B"),y1)

if CellCliche.Type = com.sun.star.table.CellContentType.TEXT then

nomAvant = CellCliche.String

if FileExists(repBrut & nomAvant & extFich) then

CellCliche = FeuilleCliches.getCellByPosition(rangcol("A"),y1)

nomApres = CellCliche.String

Name repBrut & nomAvant & extFich As repBrut & nomApres & extFich

Wait 50 ' redonner la main à l'OS

end if

end if

next y1

End Sub

function rangcol( lettre As String) As Integer

rangcol = Asc(UCase(lettre)) -ASC("A")

end function

Renommer des séries de fichiers

exemple de macro Basic

macro Basic scan

Sophie Gautier

2002-11-21T17:36:37