Re: [AS] Scripter excel

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Yvan KOENIG
Date:  
À: Liste AppleScript francophone
Sujet: Re: [AS] Scripter excel
Je serais tenté par une formule alternative utilisant le GUIscripting pour couper le bloc sélectionné.
On se retrouve alors avec une feuille vide dans laquelle on devrait pouvoir effectuer la copie/transposée.

tell application "Microsoft Excel"
    
    -- selectionne toutes les cellules utilisées

    
    select used range of active sheet of active workbook

    
    -- copie toutes les cellules utilisées (ça peut prendre du temps)

    
    my cutSelection()
    # Désormais la feuille est vide on devrait pouvoir appliquer paste/transpose

    
    --set activeCell to (cell "A1")

    
    -- copie spéciale avec un transpose

    
    --    tell activeCell

    
    paste special with transpose

    
    --    end tell

    
end tell

on cutSelection()
    tell application "System Events" to tell process "Excel" # c'est peut être "Microsoft Excel"
        set frontmost to true
        keystroke "X" using {command down} # coupe la sélection
    end tell
end cutSelection


Yvan KOENIG (VALLAURIS, France) vendredi 25 janvier 2019 15:27:42



> Le 25 janv. 2019 à 09:59, Olivier Berquin <olivier.berquin@???> a écrit :
>
> Bonjour Pascal,
>
> Je pense que ceci devrait faire l'affaire.
> J'ai essayé de documenter au maximum…
>
>
> tell application "Microsoft Excel"
>
> -- selectionne toutes les cellules utilisées
>
> select used range of active sheet of active workbook
>
> -- copie toutes les cellules utilisées (ça peut prendre du temps)
>
> copy range selection
>
> -- création d'une nouvelle Feuille
>
> set newSheet to make new worksheet of active workbook
>
> -- détermine la première cellule de cette nouvelle Feuille
>
> set activeCell to (cell "A1")
>
> -- copie spéciale avec un transpose
>
> tell activeCell
>
> paste special with transpose
>
> end tell
>
> end tell
>
>
>
>
>
>
> Le jeu. 24 janv. 2019 à 18:11, Madert Pascal <pascal.madert@???> a
> écrit :
>
>> Bonjour Olivier, Bonjour Yvan,
>>
>> Olivier, je voudrais exporter depuis Filemaker des données dans un fichier
>> excel. (Ça je sais faire, FMP crée un fichier avec une seule feuille1)
>> ensuite que toutes les cellules contenant des données dans la feuille1 du
>> fichier excel soit copié (comme quand je fais pomme-A) et transposé dans
>> une nouvelle feuille (on ne peut pas transposer sur des cellules contenant
>> des données) et que la feuille1 soit supprimer, que le fichier soit
>> enregistré et fermé, tout cela par le script.
>>
>> Yvan, content que tu ailles mieux. Avec Numbers, effectivement c’est
>> faisable plus facilement mais FMP n’exporte pas en Numbers. Dans Excel, on
>> peut faire la même chose mais soit on colle spécial-transpose à partir
>> d’une cellule vide (à coté ou en-dessous) soit on crée une nouvelle feuille
>> et on colle spécial-transposer. Cette 2e solution me parait plus simple.
>> Mais je ne sais pas faire le scriptage d’excel.
>>
>> Merci
>> Pascal
>>
>>
>>
>>
>>
>>
>>
>>> Le 24 janv. 2019 à 17:24, Yvan KOENIG <koenigyvan@???> a écrit :
>>>
>>> Bonjour Olivier
>>>
>>> Après un gros accident de santé je reprends peu à peu contact avec mon
>> mac.
>>>
>>> Comme je l'ai souvent écrit je n'ai aucune pratique des produits de
>> Merdosoft.
>>> Par contre je sais que si on colle dans une table de Numbers de 10
>> lignes * 20 colonnes le contenu de la table après transposition on obtient
>> automatiquement une table de 20 lignes * 20 colonnes dans laquelle seules
>> les 10 premières colonnes sont alimentées.
>>> J'ai été amené à le vérifier la semaine dernière pour répondre à un
>> utilisateur qui voulait coller1500 lignes de données dans une table qui
>> comportait au départ 22 lignes.
>>> L'application a automatiquement créé les lignes nécessaires.
>>> Si problème il y a, je le vois plutôt dans une limitation possible
>> affectant la fonction transpose disponible dans Excel.
>>> Dans Numbers la dite fonction n'existant pas, il faut créer la liste de
>> valeurs transposées par du code AppleScript mais c'est beaucoup plus rapide
>> que de coder la création des lignes puis remplir les cellules une par une.
>>>
>>> Yvan KOENIG running High Sierra 10.13.6 in French (VALLAURIS, France)
>> jeudi 24 janvier 2019 17:24:03
>>>
>>>> Le 24 janv. 2019 à 16:15, Olivier Berquin <olivier.berquin@???>
>> a écrit :
>>>>
>>>> Bonjour Yvan (ça fait bien longtemps),
>>>>
>>>> J'ai tout de même un doute: je pense qu'on ne peut pas copier toutes les
>>>> cellules d'une feuille et faire un collage spécial dans la même feuille.
>>>> Il y a un problème de taille (nombre colonnes et de rangées).
>>>> C'est pour cette raison que je posais la question…
>>>>
>>>> Voilà voilà…
>>>>
>>>> O.
>>>>
>>>>
>>>>
>>>> Le jeu. 24 janv. 2019 à 15:37, Yvan KOENIG <koenigyvan@???> a
>> écrit :
>>>>
>>>>> Bonjour à tous.
>>>>> Désolé de m'insérer dans cet échange.
>>>>>
>>>>> Pascal a écrit :
>>>>>
>>>>>>>>> J’ai testé ton script.
>>>>>>>>> J’ouvre mon fichier excel, je sélectionne les cellules (pomme&A)
>>>>>>>>> Je lance le script
>>>>>>>>> Ça flash dans excel, la sélection n’est plus sélectionné mais rien
>> n’a
>>>>>>>>> bougé.
>>>>>
>>>>> alors qu'Olivier avait écrit :
>>>>>
>>>>>>>> en transposant ce qu'il y a dans le clipboard.
>>>>>>>> Donc… il faut copier des cellules AVANT de lancer le script…
>>>>>
>>>>> Il semble que Pascal a omis de copier les cellules qu'il voulait
>>>>> coller/transposer.
>>>>>
>>>>> tell application "Microsoft Excel"
>>>>>
>>>>>      # set sourceRange to le range à copier
>>>>>      # copy range sourceRange

>>>>>
>>>>>      # passer le focus vers la table de destination
>>>>>      # définir le point de départ de la zone où coller

>>>>>
>>>>>      set foundRange to selection

>>>>>
>>>>>      set cur_col to the (first column index of foundRange)

>>>>>
>>>>>      set cur_row to the (first row index of foundRange)

>>>>>
>>>>>      set nextCell to cell cur_row of column cur_col

>>>>>
>>>>>      tell nextCell

>>>>>
>>>>>              select

>>>>>
>>>>>              paste special with transpose

>>>>>
>>>>>      end tell

>>>>>
>>>>> end tell
>>>>>
>>>>> Yvan KOENIG running High Sierra 10.13.6 in French (VALLAURIS, France)
>>>>> jeudi 24 janvier 2019 15:37:25
>>>>>
>>>>>
>>>>>> Le 24 janv. 2019 à 13:25, Olivier Berquin <olivier.berquin@???>
>> a
>>>>> écrit :
>>>>>>
>>>>>> Bonjour Pascal,
>>>>>>
>>>>>> Est-ce que tu peux expliquer ce que tu veux faire exactement?
>>>>>>
>>>>>> O.
>>>>>>
>>>>>> Le mer. 23 janv. 2019 à 20:52, Madert Pascal <pascal.madert@???>
>> a
>>>>>> écrit :
>>>>>>
>>>>>>> Bonsoir Olivier,
>>>>>>>
>>>>>>> J’ai fait et ça sélectionne le même nombre de cellules copiées en
>>>>>>> transposition mais rien n’est collé.
>>>>>>> Quelle fonction permet de sélectionner les cellules comme si je
>> faisais
>>>>> «
>>>>>>> pomme+A » ?
>>>>>>>
>>>>>>> Pascal
>>>>>>>
>>>>>>>
>>>>>>>> Le 23 janv. 2019 à 12:30, Olivier Berquin <
>> olivier.berquin@???>
>>>>> a
>>>>>>> écrit :
>>>>>>>>
>>>>>>>> Bonjour Pascal,
>>>>>>>>
>>>>>>>> Pardon: j'aurais dû expliquer…
>>>>>>>> Le script sélectionne la première cellule non vide de la sélection
>> et
>>>>>>> colle
>>>>>>>> en transposant ce qu'il y a dans le clipboard.
>>>>>>>> Donc… il faut copier des cellules AVANT de lancer le script…
>>>>>>>>
>>>>>>>> O.
>>>>>>>>
>>>>>>>>
>>>>>>>> Le mer. 23 janv. 2019 à 11:09, Madert Pascal <
>> pascal.madert@???>
>>>>> a
>>>>>>>> écrit :
>>>>>>>>
>>>>>>>>> Merci Olivier,
>>>>>>>>>
>>>>>>>>> J’ai testé ton script.
>>>>>>>>> J’ouvre mon fichier excel, je sélectionne les cellules (pomme&A)
>>>>>>>>> Je lance le script
>>>>>>>>> Ça flash dans excel, la sélection n’est plus sélectionné mais rien
>> n’a
>>>>>>>>> bougé.
>>>>>>>>>
>>>>>>>>> Ne serait-ce pas parce qu’un transposer depuis la première cellule
>> sur
>>>>>>> la
>>>>>>>>> zone sélectionnée n’est pas possible (avec excel 16 sur Mac)
>>>>>>>>> Le test à la main n’accepte pas de collage spécial - transposer à
>>>>> partir
>>>>>>>>> de la sélection des cellules.
>>>>>>>>> Je dois sélectionner une autre plage ou une nouvelle feuille. Et
>> dans
>>>>> ce
>>>>>>>>> cas supprimer la première feuille ou les anciennes cellules.
>>>>>>>>>
>>>>>>>>> Au plaisir de te lire
>>>>>>>>>
>>>>>>>>> Pascal
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Le 23 janv. 2019 à 09:03, Olivier Berquin <
>> olivier.berquin@???
>>>>>>
>>>>>>> a
>>>>>>>>> écrit :
>>>>>>>>>>
>>>>>>>>>> J'ai retrouvé un script avec toute une série de commande… J'ai
>> isolé
>>>>>>> ici
>>>>>>>>> le
>>>>>>>>>> paste spécial:
>>>>>>>>>>
>>>>>>>>>> tell application "Microsoft Excel"
>>>>>>>>>>
>>>>>>>>>> set foundRange to selection
>>>>>>>>>>
>>>>>>>>>> set cur_col to the (first column index of foundRange)
>>>>>>>>>>
>>>>>>>>>> set cur_row to the (first row index of foundRange)
>>>>>>>>>>
>>>>>>>>>> set nextCell to cell cur_row of column cur_col
>>>>>>>>>>
>>>>>>>>>> tell nextCell
>>>>>>>>>>
>>>>>>>>>> select
>>>>>>>>>>
>>>>>>>>>> paste special with transpose
>>>>>>>>>>
>>>>>>>>>> end tell
>>>>>>>>>>
>>>>>>>>>> end tell
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Le mer. 23 janv. 2019 à 08:59, Olivier Berquin <
>>>>>>>>> olivier.berquin@???>
>>>>>>>>>> a écrit :
>>>>>>>>>>
>>>>>>>>>>> Bonjour Pascal,
>>>>>>>>>>>
>>>>>>>>>>> Il faut d'abord comprendre la logique d'Excel.
>>>>>>>>>>> On ne peut faire un "transposer qu'à partir d'un collage spécial
>>>>> (menu
>>>>>>>>>>> Édition).
>>>>>>>>>>> Donc, en script, c'est la même chose (je fais un copier/coller
>> ici
>>>>> du
>>>>>>>>>>> Paste Special):
>>>>>>>>>>> paste special
>>>>>>>>>>>
>>>>>>>>>>> paste special (verb)Pastes the contents of the Clipboard onto the
>>>>>>> sheet,
>>>>>>>>>>> using a specified format. Use this method to paste data from
>> other
>>>>>>>>>>> applications or to paste data in a specific format. (from Table
>>>>> Suite)
>>>>>>>>>>> command syntax
>>>>>>>>>>> paste special range ¬
>>>>>>>>>>> what paste chart format ¬
>>>>>>>>>>> operation operation ¬
>>>>>>>>>>> skip blanks boolean ¬
>>>>>>>>>>> transpose boolean
>>>>>>>>>>> parameters
>>>>>>>>>>> Parameter
>>>>>>>>>>> Required
>>>>>>>>>>> Type
>>>>>>>>>>> Description
>>>>>>>>>>> direct parameter required range
>>>>>>>>>>> operation optional operation The paste operation.
>>>>>>>>>>> skip blanks optional boolean Set to true to have blank cells in
>> the
>>>>>>>>> range
>>>>>>>>>>> on the clipboard not be pasted into the destination range. The
>>>>> default
>>>>>>>>>>> value is false.
>>>>>>>>>>> transpose optional boolean set to true to transpose rows and
>> columns
>>>>>>>>> when
>>>>>>>>>>> the range is pasted. The default value is false.
>>>>>>>>>>> what optional paste chart format The part of the range to be
>> pasted.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Le mar. 22 janv. 2019 à 22:22, Madert Pascal <
>>>>> pascal.madert@???
>>>>>>>>
>>>>>>>>> a
>>>>>>>>>>> écrit :
>>>>>>>>>>>
>>>>>>>>>>>> Bonjour à tous et bonne année 2019
>>>>>>>>>>>>
>>>>>>>>>>>> J’ai besoin à partir de FMP d’envoyer un script sur un fichier
>>>>> excel
>>>>>>>>> pour
>>>>>>>>>>>> couper et transposer toutes les cellules exportées depuis FMP
>>>>>>>>>>>> J’ai regardé dans la bibliothèque d’Excel, et je ne trouve pas
>> ce
>>>>> qui
>>>>>>>>>>>> ressemble à transposer.
>>>>>>>>>>>>
>>>>>>>>>>>> Merci
>>>>>>>>>>>> Pascal
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Applescript_fr mailing list
>>>>>>>>>>>> Applescript_fr@???
>>>>>>>>>>>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Mac OS 10.13.6
>>>>>>>>>>> Adobe CC 2017-2018
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Mac OS 10.13.6
>>>>>>>>>> Adobe CC 2017-2018
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Applescript_fr mailing list
>>>>>>>>>> Applescript_fr@???
>>>>>>>>>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Applescript_fr mailing list
>>>>>>>>> Applescript_fr@???
>>>>>>>>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Mac OS 10.13.6
>>>>>>>> Adobe CC 2017-2018
>>>>>>>> _______________________________________________
>>>>>>>> Applescript_fr mailing list
>>>>>>>> Applescript_fr@???
>>>>>>>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Applescript_fr mailing list
>>>>>>> Applescript_fr@???
>>>>>>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Mac OS 10.13.6
>>>>>> Adobe CC 2017-2018
>>>>>> _______________________________________________
>>>>>> Applescript_fr mailing list
>>>>>> Applescript_fr@???
>>>>>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>>>>
>>>>> _______________________________________________
>>>>> Applescript_fr mailing list
>>>>> Applescript_fr@???
>>>>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>>>>
>>>>
>>>>
>>>> --
>>>> Mac OS 10.13.6
>>>> Adobe CC 2017-2018
>>>> _______________________________________________
>>>> Applescript_fr mailing list
>>>> Applescript_fr@???
>>>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>>
>>> _______________________________________________
>>> Applescript_fr mailing list
>>> Applescript_fr@???
>>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>
>> _______________________________________________
>> Applescript_fr mailing list
>> Applescript_fr@???
>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>
>
>
> --
> Mac OS 10.13.6
> Adobe CC 2017-2018
> _______________________________________________
> Applescript_fr mailing list
> Applescript_fr@???
> http://listes.patpro.net/mailman/listinfo/applescript_fr


_______________________________________________
Applescript_fr mailing list
Applescript_fr@???
http://listes.patpro.net/mailman/listinfo/applescript_fr