IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Modification de données [XL-MAC 2016] [AppleScript]


Sujet :

AppleScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut Modification de données [XL-MAC 2016]
    Bonjour,

    Je souhaiterais modifier les valeurs d'une colonne d'un fichier Excel suite à un export en .csv

    Ce fichier .csv est un export de valeurs de mon logiciel de routage (optimisation de ma navigation maritime ) j'ai dans ma colonne HDG ( Cap Magnétique ) des valeurs en degrés, qui lors de l'export me garde le " ° " et m'ajoute un " Â " ....
    Exemple :
    245,90° lors de l'export me donne 245,90°

    J'aimerais qu'un script, autonome via AppleScript, me supprime le "°" et le must qu'il arrondisse à un entier ( comme la petite touche magique " ,00 -> ,0 " )
    ce qui pour l'exemple me donnerais :
    245,90° -> export .csv -> 245,90° -> script de modification -> 246

    Vous pourriez m'aiguiller pour ce "petit script", ça serait cool et m'enlèverais la corvée de me taper 300 lignes à la main ....

    Merci

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour,
    C'est effectivement facile en AppleScript. Voici le script ci-dessous qui fait ce que tu demandes.
    Il est testé, J'ai testé et il fonctionne.
    J'ai simplement du, lors de mes tests, remplacer le  par un °, car sur mon Mac un Excel avec 234,56° donne bien un cdv avec 134,56° !!

    J'ai mis beaucoup de commentaires pour que tu puisse comprendre et modifier à ta guise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    set F to choose file "Sélectionner le fichier CVS à traiter"
    set FTraite to (choose file name with prompt "Enregistrer le fichier modifié" default name "MonCSV.csv" default location path to desktop) as text
    
    
    set FC to read F-- lit le contenu du csv
    set lesLignes to every paragraph of FC
    set AppleScript'stext item delimiters to {";"} -- défini le séparateur de colonne du fichier csv
    set NewF to open for access FTraite with write permission-- ouvre en écriture le fichier traité
    repeat with Ligne in lesLignes-- boucle sur chaque ligne
        set mesColonnes to text items of Ligne-- convert la ligne en liste de colonnes (elles sont séparée par des ";")
        set Valeur to item 3 of mesColonnes-- parce que ma colonne à arrondir est la N° 3 !
        set item 3 of mesColonnes to convert(Valeur) -- appel de la fonction de conversion
        set Ligne to mesColonnes as text-- remet les colonnes sous forme de ligne avec les séparateurs ":"
    write (Ligne & (ASCII character 13)) to NewF-- écrit la ligne dans le nouveau fichier
    end repeat
    close accessNewF
    
    
    on convert(V) -- converti xxx,yy° en arrondi de xxx,yy
        if (offsetof "Â" in V) = 0 then return V-- pas de conversion car le  n'existe pas
        set VNum to text 1 thru ((offset of "Â" in V) - 1) of V -- coupe avant le Â
        try
            set VR to round (VNum as real) -- transforme le text en reél et arrondi
        on error
            set VR to V-- si le texte n'est pas un réel on garde le texte inchangé
        end try
        return VR as text-- renvoie le résultat
    end convert
    Cordialement

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    Merci beaucoup PBELL !
    Je test ça ce soir en rentrant du taf
    J'avais commencé à écrire un script mais j'étais loin, très loin, de ta réalisation ...
    Hâte de le mettre en œuvre !!!


    Pour info :
    C'est un export du logiciel qtVlm (routage) vers Excel en .csv je remonterais le "bug" sur leur forum.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    Je rencontre un problème ou alors je m'y prend comme un manche ...

    Nom : Capture d’écran 2016-10-22 à 18.00.12.png
Affichages : 314
Taille : 355,7 Ko

    Cette erreur j'ai trouvé ...
    Avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        if (offsetof "Â" in V) = 0 then return V
    -- pas de conversion car le  n'existe pas
    Après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        if (offset of "Â" in V) = 0 then return V
    -- pas de conversion car le  n'existe pas

  5. #5
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonsoir,
    Je ne vois pas tout ton script recopier, mais je vois déjà une erreur qui, je viens de vérifier, s'était déjà glissée dans mon post : un espace à disparu dans le copie.

    Dans la fonction "on convert", la première ligne qui suit, il y a : if (offsetof "Â" in V)...
    Il devrait y avoir : if (offset of "Â" in V) ...
    Donc avec un espace entre "offset" et "of".

    J'ai revérifié le script et je n'ai vu que cette espace manquant (Ohh le capricieux espace !!)
    Cordialement

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    Citation Envoyé par PBELL Voir le message
    Bonsoir,
    Je ne vois pas tout ton script recopier, mais je vois déjà une erreur qui, je viens de vérifier, s'était déjà glissée dans mon post : un espace à disparu dans le copie.

    Dans la fonction "on convert", la première ligne qui suit, il y a : if (offsetof "Â" in V)...
    Il devrait y avoir : if (offset of "Â" in V) ...
    Donc avec un espace entre "offset" et "of".

    J'ai revérifié le script et je n'ai vu que cette espace manquant (Ohh le capricieux espace !!)
    Cordialement

    Bonsoir PBELL,
    J'ai pas pris soin de rafraîchir ma page et donc pas vu que tu m'avais répondu ( mode boulet : ON ...)
    et je me suis aperçu de cet espace manquant et donc ça n'est plus un problème mais un autre pointe le bout de son nez et encore une fois je m'en remet a toi car pour moi c'est du chinois ...

    Nom : Capture d’écran 2016-10-22 à 21.13.29.png
Affichages : 277
Taille : 181,0 Ko

  7. #7
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Citation Envoyé par rlelamer Voir le message
    impossible d'obtenir item 3
    J'avais pris l'item 3 en indiquant que je supposais que la colonne contenant ton xxx,yyy était la colonne 3 dans ton fichier.
    Il faut donc vérifier et changer le "3" par le numéro de ta colonne (soit changer les 2 endroits dans le script).

    Par ailleurs, lorsque je convertis des fichiers Excel en cvs, le séparateur de colonne est un point virgule ";".
    Peut être ton logiciel qui génère le csv utilise un autre séparateur ?
    Pour le savoir, ouvre TextEdit, puis, dans textEdit, ouvre le fichier csv. Tu verras quel est le séparateur de colonne. Cela peut être une virgule, ou un point virgule.
    Une fois connu le séparateur de colonne, il suffit de le mettre dans l'instruction la ligne 5.
    Par exemple si c'est une virgule, la ligne devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set AppleScript'stext item delimiters to {","} -- défini le séparateur de colonne du fichier csv
    Par ailleurs, n'ayant pas ton fichier, j'ai supposé que toutes les lignes contenaient un nombre fixe de colonnes. Si ton fichier contient des lignes vides, dis le moi car j'ajouterai un test.
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-MAC 2016] Modification de données
    Par rlelamer dans le forum Excel
    Réponses: 5
    Dernier message: 22/10/2016, 10h05
  2. [JTable] Interdire la modification des données ?
    Par Cyborg289 dans le forum Composants
    Réponses: 7
    Dernier message: 25/02/2013, 10h40
  3. Réponses: 6
    Dernier message: 15/02/2006, 14h02
  4. [MySQL] Modification de données utilisateurs
    Par Paniez dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 05/02/2006, 22h58
  5. recup de données sur MAC
    Par sarastro dans le forum Apple
    Réponses: 5
    Dernier message: 12/05/2005, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo