macOS Big Sur Anciens fichiers Word non indexés par Spotlight

Aliboron

Chercheur de son
Club MacG
1 Janvier 2008
14 445
1 120
Toulouse.cong
faq.office.macintosh.free.fr
Oui, en gros, tu as dû coller tes premiers essais de code dans des modules macro ajoutés à "Normal". Ils se bloquent et restent bloqués, d'où le passage en "mode arrêt" et l'impossibilité d'exécuter la macro depuis le document "Convertisseur en masse". C'est peut-être ce blocage qui empêche la suppression des modules. Logiquement, tu devrais avoir plutôt ça :
Capture d’écran.png
Donc, la première chose à faire, c'est d'interrompre la macro momentanément bloquée. Soit tu interromps l'exécution bloquée avec le bouton d'arrêt (le carré rouge) :
Capture d’écran.png

Soit tu retournes à Word et tu valides "Cette commande va arrêter le débogueur". En revenant alors à l'éditeur, ça devrait te rendre la main et te permettre de supprimer ces trois modules insérés dans "Normal". On verra ensuite comment les choses se présentent... ;)
 
Dernière édition:
  • J’aime
Réactions: Beauchadiniou

Beauchadiniou

Membre actif
11 Juin 2019
143
16
50
OK, le problème des modules dans Normal est réglé (ouf !). Maintenant, on en revient au problème initial, à savoir que quelle que soit la méthode choisie, il ne se passe rien : le dossier Retour reste désespérement vide et je n'ai aucun message de la part de Visual Basic (tests faits avec un seul fichier Word à chaque fois, .doc ou "inconnu"/EXEC).
Est-ce que ça marche avec les fichiers que je t'ai envoyés par mail ?
 

Aliboron

Chercheur de son
Club MacG
1 Janvier 2008
14 445
1 120
Toulouse.cong
faq.office.macintosh.free.fr
Aucun problème chez moi : la macro (la deuxième, puisqu'il n'y a pas d'extensions) se lance, j'ai plusieurs appels à autorisations d'accès (normal, c'est macOS qui joue au gendarme) et à la fin j'ai bien les messages convertis :
Capture d’écran.png
Est-ce que tu as bien mis la ligne ScreenUpdating en commentaire ? Si tu fais exécuter la macro en "pas à pas" (voir le bouton pour le faire ci-dessous), vois tu les lignes être progressivement surlignées en jaune ? As-tu un (ou plusieurs) message d'erreur ?

Capture d’écran-1.png
 
  • J’aime
Réactions: Beauchadiniou

Beauchadiniou

Membre actif
11 Juin 2019
143
16
50
Question préalable : pour le fichier à la vignette noire que je t'ai envoyé, je vois que chez toi, le Finder le considère comme un fichier exécutable Unix. Or chez moi, je ne vois ça nulle part : il est considéré comme un fichier Document Microsoft Word 97 - 2004. Comment se fait-ce ?

Non, je n'avais pas mis la ligne indiquée en commentaire, je l'ai fait, mais il ne se passe toujours rien.
J'ai fait le pas-à-pas, et je n'ai qu'une seule ligne en jaune, à savoir "Sub WordReconnaitraLesSiens2()" (la deuxième macro donc -> pourquoi pas dans la première ?) et il ne se passe rien d'autre. Si je reclique sur "Pas à pas détaillé", ça surligne "Utilisateur = Interaction.Environ("USER")" (toujours dans la deuxième macro). Etc. Mais ça n'a aucun autre effet et je n'ai pas de message d'erreur.

Au passage, est-ce que le problème peut venir de macOS ? A priori non, mais au cas où et à toutes fins utiles, je signale que j'ai eu le problème suivant https://forums.macg.co/threads/imac...es-avoir-ete-eteint-un-certain-temps.1368007/ (pb réglé donc). Et surtout que depuis quelques semaines, j'ai exactement le problème qui est décrit ici https://communities.apple.com/fr/thread/253573702 sur lequel je ne me suis pas encore penché…
 

Aliboron

Chercheur de son
Club MacG
1 Janvier 2008
14 445
1 120
Toulouse.cong
faq.office.macintosh.free.fr
Question préalable : pour le fichier à la vignette noire que je t'ai envoyé, je vois que chez toi, le Finder le considère comme un fichier exécutable Unix. Or chez moi, je ne vois ça nulle part : il est considéré comme un fichier Document Microsoft Word 97 - 2004. Comment se fait-ce ?
Probablement parce que tu l'as déjà désigné comme rattaché à Word (via "Lire les informations", par exemple ?)

Non, je n'avais pas mis la ligne indiquée en commentaire, je l'ai fait, mais il ne se passe toujours rien.
J'ai fait le pas-à-pas, et je n'ai qu'une seule ligne en jaune, à savoir "Sub WordReconnaitraLesSiens2()" (la deuxième macro donc -> pourquoi pas dans la première ?) et il ne se passe rien d'autre. Si je reclique sur "Pas à pas détaillé", ça surligne "Utilisateur = Interaction.Environ("USER")" (toujours dans la deuxième macro). Etc. Mais ça n'a aucun autre effet et je n'ai pas de message d'erreur.
Donc, d'après ta description, tu as déjà passé les deux premières lignes. C'est un bon début, mais ensuite ? Avec le pas à pas détaillé, il faut continuer jusqu'à arriver au plantage (sortie prématurée de la macro ou message d'erreur) ou à la fin normale, après exécution de toute la macro...

Au passage, est-ce que le problème peut venir de macOS ? A priori non, mais au cas où et à toutes fins utiles, je signale que j'ai eu le problème suivant https://forums.macg.co/threads/imac...es-avoir-ete-eteint-un-certain-temps.1368007/ (pb réglé donc). Et surtout que depuis quelques semaines, j'ai exactement le problème qui est décrit ici https://communities.apple.com/fr/thread/253573702 sur lequel je ne me suis pas encore penché…
On ne peut évidemment rien exclure, mais je doute que ça ait un lien. Par contre, tu peux éventuellement faire un test dans une session avec un nouveau compte utilisateur macOS, créé pour l'occasion ou le compte "Invité", par exemple, pour voir si les choses se passent différemment dans un contexte "propre"...
 

Beauchadiniou

Membre actif
11 Juin 2019
143
16
50
Donc, d'après ta description, tu as déjà passé les deux premières lignes. C'est un bon début, mais ensuite ?
Voici donc les lignes qui sont successivement surlignées en jaune (fichier sans extension dans Aller, sélection donc de la deuxième macro dans le panneau de gauche, deuxième menu déroulant) :

Sub WordReconnaitraLesSiens2()
Utilisateur = Interaction.Environ("USER")
MonCheminA = "/Users/" & Utilisateur & "/Desktop/Aller/"
MonCheminR = "/Users/" & Utilisateur & "/Desktop/Retour/"
ChaqueDoc = Dir(MonCheminA & "*")
Do While Len(ChaqueDoc) > 0
Application.ScreenUpdating = True [donc pas les 7 lignes précédentes]
End Sub

Ensuite, ça recommence au début. Et il ne se passe rien (à aucun momemt macOS ne me demande quoi que ce soit). Et il n'y a rien dans le dossier Retour…
 

Aliboron

Chercheur de son
Club MacG
1 Janvier 2008
14 445
1 120
Toulouse.cong
faq.office.macintosh.free.fr
Ce que tu décris montre que la macro ne trouve pas de fichiers. Comme ces fichiers existent, c'est peut-être parce que le chemin d'accès au dossier qui les contient n'est pas correct.

Si tu fais avancer pas à pas ta macro, lorsque tu es sur la ligne "Do While..." est-ce que tu peux positionner le pointeur sur "MonCheminA" quelques instants ? Une bulle s'affiche au bout d'une seconde avec la valeur de la variable, peux-tu vérifier qu'elle correspond bien au chemin d'accès du classeur "Aller" ? Les deux dossiers Aller et Retour sont-il bien placés directement sur le bureau et portent-ils bien exactement ces noms ?
 

zeltron54

Membre expert
Club MacG
29 Mars 2008
2 510
399
Lorraine
Bonjour,

Tu es peut-être plus à l'aise avec un applescript qu'avec les macros !
Si c'est le cas essai ce script.
Bien sur j'ai repris tes dires et ceux de @Aliboron :coucou: , il faut donc, sur le bureau, un dossier "Aller" contenant tes fichiers à convertir et un dossier "Retour" pour recevoir les fichiers convertis.
Pour utiliser le script:
Ouvrir l’application “Editeur de script” qui est dans Application—>Utilitaires
Choisir le bouton en bas à gauche “Nouveau document”, dans la fenêtre qui s’ouvre faire un copier-coller du script.
Cliquer sur le bouton en haut à gauche “Exécuter”

Attendre que le script te prévienne qu’il à terminé.

le script
Bloc de code:
-- créer sur le bureau un dossier "aller" contenant les fichiers a convertir et un dossier "Retour" pour recvoir les fichiers convertis.

tell application "Finder"
    set Chemin to (path to desktop folder as string) & "Aller"
    set un_dossier to Chemin as alias
    -- traitement des fichiers :
    set les_fichiers to files of un_dossier
    set theoutputpath to (path to desktop folder as string) & "Retour:"
    repeat with chaque_fichier in les_fichiers
        
        set lefichier to chaque_fichier
        set nom to chaque_fichier as string
        set AppleScript's text item delimiters to {""}
        set lenom to name of chaque_fichier --récupère le nom du fichier
        set extens to document file lenom in un_dossier --recupere l extension du fichier
        set lextension to name extension of extens
        set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
        set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
        set elements to text items of lenom
        if lextension is "" then
            set ancien_nom to lenom
        else
            set nomcourt to (items 1 thru -2 of elements) as string
            set ancien_nom to nomcourt
        end if
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
        set theoutputpath to theoutputpath & ancien_nom & ".docx"
        
        tell application "Microsoft Word"
            open nom
            activate
            set theactivedoc to active document
            save as theactivedoc file format format document file name theoutputpath
            close front document
        end tell
        
    end repeat
    
end tell

--end inspecter
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
  • J’aime
Réactions: Beauchadiniou

Aliboron

Chercheur de son
Club MacG
1 Janvier 2008
14 445
1 120
Toulouse.cong
faq.office.macintosh.free.fr
Oui ça correspond bien (à part que y'a écrit "Users" et "Desktop" et non "Utilisateurs" et "Bureau").
C'est leur "vrai" nom (Utilisateurs et Bureau ne sont que des affichages locaux). Mais si le chemin d'accès qui s'affiche est bien correct, je ne vois vraiment pas pourquoi les fichiers qui sont à l'intérieur du classeur ne sont pas "vus" par la macro. Est-ce que tu peux mettre une copie d'écran de cette bulle jaune avec le chemin d'accès ?

Sinon, oui, vois avec l'Applescript de Zeltron54 :coucou:, en espérant que ça se passe mieux...
 
  • J’aime
Réactions: Beauchadiniou

zeltron54

Membre expert
Club MacG
29 Mars 2008
2 510
399
Lorraine
Si c'est un problème de chemin, je te modifierai le script pour pouvoir sélectionner les dossiers"Aller" et "Retour" ...
Tout compte fait je te le met tout de suite...
A son lancement ce script te demande de sélectionner le dossier Contenant les fichiers à traiter, puis de sélectionner le dossier vierge pour y mettre les fichiers résultant.

J'ai oublié de préciser, en fonction de ton système, une demande d'autorisation au dossier risque de t'être demandé, il suffit de valider., et ce quelque soit le script.

Dis moi si cela fonctionne !

Bloc de code:
set Chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers .doc ou sans extension"
set retour to choose folder with prompt "Sélectionnez le dossier de réception des fichiers convertis en .docx"
tell application "Finder"
    --set Chemin to (path to desktop folder as string) & "Aller"
    set un_dossier to Chemin as alias
    -- traitement des fichiers :
    set les_fichiers to files of un_dossier
    set theoutputpath to retour as string
    repeat with chaque_fichier in les_fichiers
        
        set lefichier to chaque_fichier
        set nom to chaque_fichier as string
        set AppleScript's text item delimiters to {""}
        set lenom to name of chaque_fichier --récupère le nom du fichier
        set extens to document file lenom in un_dossier --recupere l extension du fichier
        set lextension to name extension of extens
        set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
        set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
        set elements to text items of lenom
        if lextension is "" then
            set ancien_nom to lenom
        else
            set nomcourt to (items 1 thru -2 of elements) as string
            set ancien_nom to nomcourt
        end if
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
        set theoutputpath to theoutputpath & ancien_nom & ".docx"
        
        tell application "Microsoft Word"
            open nom
            activate
            set theactivedoc to active document
            save as theactivedoc file format format document file name theoutputpath
            close front document
        end tell
        
    end repeat
    
end tell

--end inspecter
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
  • J’aime
Réactions: Beauchadiniou

Beauchadiniou

Membre actif
11 Juin 2019
143
16
50
Merci !

Tu es peut-être plus à l'aise avec un applescript qu'avec les macros !
Non plus, mais c'est pas grave, on va essayer ! :D

Choisir le bouton en bas à gauche “Nouveau document”
Alors, j'ai Editeur de script 2.11 et quelque chose a dû changer (je vois que tu es sur 10.14), puisqu'il n'y a pas de bouton "Nouveau document" en bas à gauche. Mais ça c'est un détail puisque j'ai bien une fenêtre où placer le script, pas de problème à ce niveau-là.

Retour d'expérience : dans le script, j'ai la phrase "save as theactivedoc file format format document file name theoutputpath" qui est surlignée ; dans Résultat, j'ai : « error "Erreur dans Microsoft Word : missing value ne comprend pas le message « save as »." number -1708 from missing value ». Et dans Word, j'ai "Impossible d'ouvrir le document : l'utilisateur ne possède pas les droits d'accès".

J'ai fait le test avec les deux types de fichiers (sans extension et .doc), même résultat.
 

zeltron54

Membre expert
Club MacG
29 Mars 2008
2 510
399
Lorraine
Ma version de editeur de script est également la 2.11 donc le problème n'est pas la...

Par contre ma version de word est la 16.54 (dernière version pour mon système) et cela fonctionne chez moi sans problème.
Je suppose que tu dois avoir un problème avec ton word.
Pourrais-tu faire un essai dans une autre session (session invité par exemple) pour vérifié si le problème se produit dans un contexte propre "nouveau".

Edit: quelques essais chez moi et j'ai ce message si le dossier retour n'est pas trouvé ! ou si je n'ai pas les autorisations d'accès !
Dans word le fichier était-il ouvert ?
As-tu essayé avec le deuxième script qui te demande de choisir les dossiers ? (afin d'être sur des chemins)
 
Dernière édition:
  • J’aime
Réactions: Beauchadiniou

Beauchadiniou

Membre actif
11 Juin 2019
143
16
50
ou si je n'ai pas les autorisations d'accès !
J'ai évidemment les autorisations d'accès ("lecture et écriture autorisées").

Dans word le fichier était-il ouvert ?
Non.

As-tu essayé avec le deuxième script qui te demande de choisir les dossiers ?
Oui. J'ai même commencé par celui-là, j'ai donc bien choisi les emplacements, mais avec le résultat que j'ai indiqué.

Je suppose que tu dois avoir un problème avec ton word.
Oui, c'est curieux…

Pourrais-tu faire un essai dans une autre session (session invité par exemple) pour vérifié si le problème se produit dans un contexte propre "nouveau".
Entendu, je vais regarder ça. Merci à vous deux pour votre aide et à plus tard.
 

Aliboron

Chercheur de son
Club MacG
1 Janvier 2008
14 445
1 120
Toulouse.cong
faq.office.macintosh.free.fr
En tout cas, j'ai testé l'Applescript (le deuxième) chez moi (avec l'Éditeur de scripts 2.11 (203.1) sous Mojave avec Word 16.54 comme avec l'Éditeur de scripts 2.11 (227) sous Monterey avec Word 16.57). Ça fonctionne sans problème, tout aussi bien que la macro dans Word. Il y a donc définitivement quelque chose qui cloche chez toi, Beauchadiniou. Pourtant le chemin d'accès semble correct, il est tout à fait incompréhensible (pour moi) que la macro n'arrive pas à "voir" les documents qui sont dans le dossier "Aller" (et c'est apparemment aussi ce qu'il se passe avec l'Applescript).

Donc, comme déjà vu dans le message n°25 et aussi dans la réponse de Zeltron54, il faudrait que tu testes dans un compte utilisateur "propre" pour voir où il faut chercher l'origine du problème...
 
  • J’aime
Réactions: Beauchadiniou

zeltron54

Membre expert
Club MacG
29 Mars 2008
2 510
399
Lorraine
Bonjour,

Afin de situer le problème, je te joint un script modifié qui affiche pour chaque fichier, une boite de dialogue avec:
1 - le chemin du fichier a traiter (complet, se terminant par le nom du fichier !)
2 - le nom du fichier (sans l'extension)
3 - le nom de l'extension
4 - le chemin de sortie (complet se terminant par le nom du fichier ! )

Bien lire et analyser le contenu de la boite de dialogue...

Puis une deuxième boite de dialogue
"document ouvert dans word ?" pour vérifier si word s'est ouvert ? et si le document est chargé ?

Tu cliques sur "ok" à chacune de ces boites (pour 1 ou 2 fichiers) puis sur annuler pour stopper le programme.

avec ces résultats on verra si le problème vient du finder ( ordi )ou de word.

Bloc de code:
set Chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers .doc ou sans extension"
set retour to choose folder with prompt "Sélectionnez le dossier de réception des fichiers convertis en .docx"
tell application "Finder"
    --set Chemin to (path to desktop folder as string) & "Aller"
    set un_dossier to Chemin as alias
    -- traitement des fichiers :
    set les_fichiers to files of un_dossier
   
    repeat with chaque_fichier in les_fichiers
        set theoutputpath to retour as string
        set lefichier to chaque_fichier
        set nom to chaque_fichier as string
        set AppleScript's text item delimiters to {""}
        set lenom to name of chaque_fichier --récupère le nom du fichier
        set extens to document file lenom in un_dossier --recupere l extension du fichier
        set lextension to name extension of extens
        set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
        set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
        set elements to text items of lenom
        if lextension is "" then
            set ancien_nom to lenom
        else
            set nomcourt to (items 1 thru -2 of elements) as string
            set ancien_nom to nomcourt
        end if
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
        set theoutputpath to theoutputpath & ancien_nom & ".docx"
       
        display dialog "CHEMIN FICHIER = " & nom & return & return & " NOM = " & ancien_nom & return & return & "EXTENSION = " & lextension & return & return & "CHEMIN SORTIE = " & theoutputpath
       
        tell application "Microsoft Word"
            open nom
            activate
           
            display dialog "document ouvert dans word ?"
           
            set theactivedoc to active document
            save as theactivedoc file format format document file name theoutputpath
            close front document
        end tell
       
    end repeat
   
end tell

--end inspecter
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell