"FileDialog inconnu" dans macro calc pour renommer fichiers

Bonjour,
J’utilise “Window 10 Education version 22H2 installé le 26/06/2024”.
Je voudrais renommer de nombreux fichiers (nommés “compta25_societeA_fichierX” à renommer en “fichierX”).
Dans Calc > Outils > Macros > Editer, j’ai fait un copier/coller des macros fournis pour Excel par ce tuto (c’est exactement ce qui m’intéresse) : Renommer fichiers excel
Mais quand je fais Calc > Outils > Macros > Gérer > Basic puis exécuter, j’obtiens "Erreur de syntaxe BASIC. Type de données FileDialog inconnu."
Je n’y connais rien en informatique, j’ai entendu parler de librairies à préciser, ou de paramètres à ajuster. Ou est-ce une autre commande similaire à utiliser dans calc au lieu de celle-ci pour Excel ?
Que dois-je faire pour que cette macro s’exécute ?
Help, merci !
PS : J’ai cherché la version LibreOffice, j’ai la version 25.8.3.2 (X86_64), il y a aussi des références de Compilation, Environnement, Interface utilisateur, de quoi avez-vous besoin ?
PS2 : j’ai enregistré mon ficher au format .xlsm

PS3 : voici la macro concernée

Sub ListerFichiers()
    Dim dossier As String
    Dim fichier As String
    Dim ligne As Long
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    If fd.Show = -1 Then
        dossier = fd.SelectedItems(1) & "\"
    Else
        Exit Sub
    End If
    fichier = Dir(dossier & "*.*")
    ligne = 2
    Do While fichier <> ""
        Cells(ligne, 1).Value = fichier
        ligne = ligne + 1
        fichier = Dir
    Loop
End Sub

Les macros pour excel ne foncionent pas sur LibreOffice.
Le VBA employe en Microsoft est different the le Basic employé par LibreOffice

Prise en charge des macros VBA :wink:
(Compatibilidad con macros en VBA)

en anglais (avec un peu de troll) mais pas trop compliqué : Looking for a way to get Windows file picker to use? - #5 by sokol92

.xlsX ?


en tout cas, LO n’est pas réputé très stable pour les formats non ODF.


un tableur n’est pas spécialement le meilleur outil …
Rename-Item (Microsoft.PowerShell.Management) - PowerShell | Microsoft Learn

Merci pour vos retours !

  • j’ai essayé de mettre “FilePicker” à la place de “FileDialog”, message d’erreur similaire (je n’ai même pas cherché si après il fallait changer le msoFileDialogFolderPicker),
  • j’ai pris “.xlsm”, il n’y a pas dans mon Calc la possibilité du format “.xlsxm”,
  • je viens de tester le format .xlsX, avec FilePicker et FileDialog, toujours le même blocage,
  • j’ai regardé le lien “Rename-Item”, et je suis toujours coincée : cela ressemble à une commande DOS, je ne sais même pas où la saisir dans cet environnement windows ni comment l’écrire exactement …
  • j’ai aussi regardé le lien “Travailler avec des macros VBA”, je confirme que toutes les cases sont cochées dans Outils > Options > Chargement/enregistrement > Propriétés VBA

Le tableur n’est peut-être pas le meilleur outil, mais récupérer dans une colonne les noms actuels et mettre dans une deuxième colonne les futurs c’est exactement mon besoin, c’est simple, ce serait top. J’ai simplifié mon cas, en réalité je voudrais remplacer image1 par titi, image2 par toutou, image3 par tomate, c’est-à-dire des nouveaux noms non incrémental sans cliquer sur chaque fichier dans le répertoire ; si c’est possible avec LibreOffice cela m’intéresse beaucoup.

Est-il possible d’utiliser un format .ods,et avec une commande BASIC qui fait la même chose que la commande VBA “FileDialog” ?

Lister les sous-dossiers et fichiers d'un dossier
Get A List Of File Names From A Folder And All Subfolders - #9 by JohnSUN
How to get file names from a folder

Installer PowerShell sur Windows - PowerShell | Microsoft Learn

Salut
Sinon si c’est juste pour renommer des fichier, tu peux utiliser Ant Renamer, un logiciel libre (sous licence GNU GPL) que j’utilise regulierement et qui fait tres bien le taf : www.antp.be.

1 Like

Pas besoin d’avoir recours à un langage tiers, StarBasic dispose de la commande Name
https://help.libreoffice.org/25.8/en-US/text/sbasic/shared/03020412.html?DbPAR=BASIC

Bonjour, merci pour toutes ces pistes !

  • dans le premier lien “lister les sous-dossiers”, j’ai téléchargé le calc où j’ai trouvé la macro “Lister” qui récupère les noms des fichiers, et beaucoup plus (chemin répertoire, taille, etc.), ça fonctionne ! J’ai regardé le source de cette macro, et là je suis perdue … il doit y avoir quelque chose qui fait comme FileDialog, mais quoi ? Et pour l’instant je n’ai que la moitié : j’ai récupéré le nom des fichiers, par contre comment faire la suite maintenant (= changer les noms) ?

  • avec le 2e lien “Get A Lis Of File Names”, j’ai copié le code donné au début, j’ai réussit à trouver (la galère :wink: ) comment créer une nouvelle macro “Module2” dans mon calc pour y coller cette macro. Mais elle est dans le même répertoire “Standard” et quand je veux l’exécuter c’est d’abord le Module1 qui s’exécute avec le FileDialog … Je suis une bille, je ne trouve même pas comment changer l’ordre de ces modules.

Donc j’ai maintenant dans le “catalogue d’objets”:

  • “Mes macros et boites”, avec Module1 (le code pour excel), Module2 (avec le code creatFileList) et Module3 (avec le code ExampleDir)
  • puis “Macros et boites” avec plein de choses dedans,
  • puis “listage fichiers avec détection macros.ods” créé quand j’ai importé le 1er lien,
  • puis une “boite” intitulé “Sans nom 2” où j’ai réussit à créer “Module1” où j’ai copié le code du 3e lien et il y a donc maintenant dedans “ExampleDir”. Mais quand je l’exécute (en cliquant sur la flèche verte) rien ne se passe.

J’ai regardé le 4e lien “PowerShell”, je suis perdue.

J’ai regardé le 6e lien, la commande “Name” semble faire ce que je cherche, mais je l’ai copié en changeant le texte rouge avec le nom d’un de mes fichiers avec son chemin, et cela ne donne rien quand j’exécute.

J’ai finalement installé le 5e lien (Ant Renamer), mais le manuel est tout en anglais. J’ai enfin compris qu’en cliquant sur “Opérations” puis “Noms à partir d’une liste” je pouvais donner la liste des nouveaux noms, et ça marche !!!

Bref, tout ça pour vous dire que j’ai galéré un max, que clairement je dois retourner à l’école des nuls car je ne pige rien aux macros (ni même comment fonctionne les menus des macros !). Mais si quelqu’un a une macro BASIC à “copier/coller” comme celle du départ en VBA, cela m’intéresse toujours, je préfère ne pas installer des logiciels en plus sur mon ordi.

Encore merci à tous !

:thinking: pas très clair.

vu les remarques précédentes, il pourrait être utile de parcourir :

Pourquoi utiliser le format propriétaire de Microsoft avec un logiciel libre ? :face_with_raised_eyebrow: