# AppleScript et numbers



## Moutet (14 Mai 2020)

Bonsoir,

Si quelqu'un peut m'aider

J’ai un fichier numbers de x feuilles

Dans chaque feuille j’ai un tableau de ce style

DATE    LIBELLE 1    LIBELLE 2    LIBELLE 3     TYPES    LIBELLE 4    LIBELLE 5    LIBELLE 6    LIBELLE 7    N° DE RELEVE    OBSERVATION


j’ai une liste de libelle 1 : maListeDeLibelle1 to {‘’Texte 1’’, ‘’Texte 2’’, ‘’Texte 3’’, ‘’Texte 4’’, ‘’Texte 5’’}

Dans ce tableau je veux copiées les données  des 3 premières colonnes de la ligne si le texte de la colonne 2 contient un des textes de la liste

Les copies sont ajoutées dans une nouvelleListe{}

Je crée dans un autre fichier un tableau avec trois colonnes et  je recopie dans ce tableau les données de la nouvelleListe

Voici le debut de mon script mais je bute sur l'itération de maListeDeLibelle1

set leFichierSource to my monfichier(listeFichiersSource, monAnnee)
set myFichierSource to monRepertoireSource & leFichierSource

tell application "Numbers"
    activate
    open myFichierSource

    tell front document

        set listeSource to {}
        set sourceTable to "Tableau 1"

        -- La boucle démarre pour rechercher de la feuille 01 a la feuille 12

        repeat with k from 0 to 11

            set k to k + 1

            set sourceFeuille to k -- Affectation de la valeur de k à la feuille source

            tell sheet sourceFeuille to tell table sourceTable -- appel de la feuille et du tableau source

                -- Nous définissons la condition des cellules de la colonne B

                repeat with i from 1 to count row

                    if (value of cell ("B" & i) is not " ") then

                        -- La boucle démarre jusqu'à la dernière ligne du tableau pour vérifier cette condition

                        repeat with i from 1 to count row
                            set i to i + 1
                        end repeat

                        -- Nouvelle boucle qui doit verifier la condition sur toutes les lignes du tableau

* A partir de cette boucle  je bloque*
                        repeat with i from 1 to count row


                                repeat with j from 0 to 2
                                    set j to j + 1

                                    set the selection range to row i
                                    set end of listeSource to value of cell j of row i

                                end repeat
                                set a to a + 1

                        end repeat


                        -- Fin de boucle qui verifie la condition des lignes du tableau


                        -- end if condition des cellules de la colonne B
                    end if

                end repeat

                -- end tell sheet source feuille
            end tell

            -- fin de la boucle recherche
        end repeat

        -- end front document
    end tell

    -- end Numbers
end tell

Merci d'avance

DM


----------



## zeltron54 (15 Mai 2020)

Bonjour,
Je n'ai pas tout compris à ce que tu voulais faire (je me suis perdu dans tes explications), mais pas bien important !

En regardant ton code, notamment les boucles, Il apparaît 2 erreurs de structure.

- Dans un boucle (repeat with x from debut to fin)
La valeur de la variable "x" s'incrémente toute seule à chaque passage jusqu'à ce qu'elle est la valeur "fin".
Dans ton code tu incrémentes toi même la variable  (donc elle augmente 2 fois)une fois par toi et une fois en automatique !

-De plus tu utilises plusieurs fois la même variable de boucle "i" à l'intérieur de la la boucle, 
Donc cette variable de boucle change avant la comparaison automatique par le "End repeat" et n'a donc jamais la valeur de "fin", ce qui à pour effet une boucle infinie...

Il te faut revoir l'utilisation des boucles et leurs différentes formes...
Repeat --> end repeat
Repeat until test --> end repeat
Repeat while test --> end repeat
Repeat x (times) --> end repeat
Repeat with variable in liste --> end repeat
Repeat with variable from debut to fin --> end repeat


----------



## Moutet (18 Mai 2020)

Salut Zeltron et merci

J'ai du m'absenter, je pense que tu as raison pour les boucles je vais réexaminer tout çà à tête reposer.
Quand j'aurai trouver je reviendrai vers toi.

Encore Merci


----------

