apple script pour iCal

Bonsoir,

j’avance ! voici le résultat de quantité:

abricot 4 tournées 30 bacs 8 litres
amande 7 tournées 59 bacs 18 litres
cacao 2 tournées 52 bacs 24 litres ici il y a une erreur, il devrait y avoir: cacao 4 tournées 26 bacs et 12 litres
café 7 tournées 58 bacs 15 litres
cannelle 2 tournées 16 bacs 5 litres
caramel 7 tournées 57 bacs 21 litres
cardamome 1 tournées 7 bacs 5 litres
cerise 6 tournées 32 bacs 10 litres
chocolat 12 tournées 96 bacs 33 litres
citron 4 tournées 31 bacs 11 litres
fadoli 9 tournées 90 bacs 28 litres
figue 5 tournées 33 bacs 12 litres
fraise 5 tournées 33 bacs 14 litres
gingembre 8 tournées 64 bacs 26 litres
malaga 3 tournées 25 bacs 11 litres
myrtille 5 tournées 39 bacs 9 litres
OCB 1 tournées 10 bacs 5 litres
orange 3 tournées 20 bacs 9 litres
pêche 7 tournées 52 bacs 6 litres
poire 6 tournées 34 bacs 15 litres
praline 6 tournées 83 bacs 26 litres
prune 3 tournées 27 bacs 4 litres
pulpe de cerise 6 bacs de 4,25+1,6 kg
réglisse 3 tournées 25 bacs 5 litres
thym 2 tournées 16 bacs 6 litres
vanille 13 tournées 93 bacs 61 litres
zeste de lune 1 tournées 8 bacs 3 litres

C’est tout bon pour ceux que j’ai vérifié, je peux pas faire plus ce soir, MERCI !

le fichier des événements:

jeudi 21 mars 2024 à 00:00:00 1 pêche 7+2 1 fraise 7+3 1 myrtille 9+0
vendredi 22 mars 2024 à 00:00:00 1 caramel 8+4 1 chocolat 7+4
mardi 26 mars 2024 à 00:00:00 1 gingembre 8+5 1 praline 6+4
vendredi 29 mars 2024 à 00:00:00 1 malaga 8+5 1 chocolat 7+5
jeudi 28 mars 2024 à 00:00:00 1 vanille 7+5 1 fadoli 9+0
lundi 1 avril 2024 à 00:00:00 1 citron 8+5
vendredi 5 avril 2024 à 13:30:00 Livraison 3 bouteilles de gaz Midi Gaz (Peut-être entre 12 et 14h, mais probablement avant)
vendredi 5 avril 2024 à 00:00:00 1 cerise 5+3 1 abricot 8+0 1 poire 4+3
jeudi 4 avril 2024 à 00:00:00 1 réglisse 7+5 1 amande 7+5
lundi 8 avril 2024 à 00:00:00 2 cacao 13+6
mardi 9 avril 2024 à 00:00:00 1 café 7+5 1 chocolat 7+5
jeudi 11 avril 2024 à 00:00:00 1 vanille 8+3 1 praline 8+0
vendredi 12 avril 2024 à 00:00:00 1 pêche 8+0 1 prune 11+2 1 figue 7+0
lundi 15 avril 2024 à 00:00:00 1 orange 8+2
mardi 16 avril 2024 à 00:00:00 1 zeste de lune 8+3 1 fadoli 9+1
jeudi 18 avril 2024 à 00:00:00 1 gingembre 8+3 1 cannelle 9+1
vendredi 19 avril 2024 à 00:00:00 1 poire 6+3 1 fraise 6+3 1 cerise 4+4
lundi 22 avril 2024 à 00:00:00 1 thym 7+5 1 amande 8+4
mardi 23 avril 2024 à 00:00:00 1 caramel 10+0 1 chocolat 9+0
jeudi 25 avril 2024 à 00:00:00 1 vanille 7+5 1 thym 9+1
vendredi 26 avril 2024 à 00:00:00 1 citron 9+0
lundi 29 avril 2024 à 00:00:00 1 pêche 8+0 1 figue 6+3 1 myrtille 7+3
mercredi 1 mai 2024 à 00:00:00 1 café 9+0 1 praline 8+0
jeudi 2 mai 2024 à 00:00:00 1 malaga 7+6 1 chocolat 8+3
vendredi 3 mai 2024 à 00:00:00 1 vanille 7+5 1 fadoli 8+3
lundi 6 mai 2024 à 00:00:00 1 poire 6+3 1 cerise 6+0 1 prune 8+0
mercredi 8 mai 2024 à 00:00:00 1 réglisse 9+0 1 fadoli 8+3
jeudi 9 mai 2024 à 00:00:00 1 vanille 7+5 1 gingembre 8+3 1 chocolat 8+3
vendredi 10 mai 2024 à 00:00:00 1 vanille 7+5 1 café 8+3 1 amande 10+0
mardi 14 mai 2024 à 00:00:00 1 pêche 8+0 1 cerise 5+3 1 figue 6+2
lundi 13 mai 2024 à 00:00:00 1 abricot 7+4 1 fraise 6+4 1 myrtille 7+3
vendredi 17 mai 2024 à 00:00:00 1 réglisse 9+0 1 praline 7+2
jeudi 16 mai 2024 à 00:00:00 1 gingembre 9+0 1 chocolat 9+0
lundi 20 mai 2024 à 00:00:00 1 vanille 7+5 1 fadoli 8+3
mardi 21 mai 2024 à 00:00:00 1 fraise 6+3 1 poire 6+2 1 citron 7+2
jeudi 23 mai 2024 à 00:00:00 1 vanille 7+5 1 cannelle 7+4 1 amande 8+3
lundi 27 mai 2024 à 00:00:00 1 caramel 8+3 2 praline 13+6
mercredi 29 mai 2024 à 00:00:00 1 vanille 8+3 1 caramel 8+3 1 amande 8+3
vendredi 24 mai 2024 à 00:00:00 1 cardamome 7+5 1 café 9+1 1 chocolat 8+3
vendredi 31 mai 2024 à 00:00:00 Pulpe de cerise 6*4,25+1,6
jeudi 30 mai 2024 à 00:00:00 1 pêche 7+1 1 abricot 8+1 1 orange 5+5 1 myrtille 9+0
mardi 4 juin 2024 à 00:00:00 1 vanille 7+5 1 amande 10+0 1 chocolat 8+3
lundi 3 juin 2024 à 00:00:00 2 cacao 13+6
jeudi 6 juin 2024 à 00:00:00 1 gingembre 8+3 1 malaga 10+0 1 fadoli 8+3
vendredi 7 juin 2024 à 00:00:00 1 poire 6+2 1 cerise 6+0 1 prune 8+2 1 figue 8+5
lundi 10 juin 2024 à 00:00:00 1 fraise 8+1 1 pêche 7+1 1 poire 6+2 1 citron 7+4
mardi 11 juin 2024 à 00:00:00 1 vanille 7+5 1 gingembre 8+3 1 fadoli 8+3
mercredi 26 juin 2024 à 08:15:00 Contrôle balance - Sud Pesage
jeudi 13 juin 2024 à 00:00:00 1 café 8+3 1 caramel 8+3 1 chocolat 8+3
vendredi 14 juin 2024 à 00:00:00 1 myrtille 7+3 1 cerise 6+0 1 OCB 10+5
lundi 17 juin 2024 à 00:00:00 2 praline 14+4 1 fadoli 8+3
mardi 18 juin 2024 à 00:00:00 1 vanille 7+5 1 gingembre 8+3 fadoli 8+3
jeudi 20 juin 2024 à 00:00:00 1 café 8+3 1 caramel 8+3 1 chocolat 8+3
vendredi 21 juin 2024 à 00:00:00 1 abricot 7+3 1 pêche 7+2 1 orange 7+2 1 figue 6+2
mardi 25 juin 2024 à 00:00:00 1 vanille 7+5 1 café 9+0 1 amande 8+3
lundi 24 juin 2024 à 00:00:00 Pulpe de fraise 10*4,25+3,308
jeudi 27 juin 2024 à 00:00:00 1 gingembre 7+6 1 caramel 7+5 1 chocolat 9+1
vendredi 28 juin 2024 à 00:00:00 pulpe d'abricot 9*4,55+0,416
 
Bonjour,
cacao 2 tournées 52 bacs 24 litres ici il y a une erreur, il devrait y avoir: cacao 4 tournées 26 bacs et 12 litres
On c'était mal compris !
Quand il y a : "2 cacao 13+6" je comptait une tournée avec 2 fois 13 bacs et 2 fois 6 litres
Alors qu'il faut comprendre 2 tournées dont le total fait 13 bacs et 6 litres

Ok je modifie ce comptage.

Par contre tu ne parles pas des fichiers erreurs, ni du fichiers "erreurs" parfum pas trouvé, ni du fichier "erreur de traitement" nombre de bac et de litre introuvable. (si tu n'en a pas c'est que tout est bon !)

voilà le script avec comptage modifié:
Bloc de code:
set lesparfums to {"abricot", "amande", "cacao", "café", "cannelle", "caramel", "cardamome", "cerise", "chocolat", "citron", "fadoli", "figue", "fraise", "gingembre", "malaga", "myrtille", "orange", "pêche", "poire", "praline", "prune", "pulpe de cerise", "réglisse", "thym", "zeste de lune"}

set lecal to display dialog "Entrer le nom du calendrier :" default answer "Personnel"
set lecal to text returned of result
set ladate to display dialog "Entrer la date de début :" default answer "JJ/MM/AAAA"
set ladate to text returned of result
set lejour to date ladate

set nbjour to display dialog "Entrer le nombre de jours :" default answer "1"
set nbjour to text returned of result
set fin to lejour + (nbjour * days)
set lefich to ""

tell application "Calendar"
    tell calendar lecal
        
        set theEventList to (every event whose (start date > lejour and end date < fin))
        
        set nbevent to count of theEventList
        repeat with j from 1 to nbevent
            set a to summary of item j of theEventList
            set c to start date of item j of theEventList
            set ladate to c as string
            
            --enleve blanc fin
            repeat
                set letest to last character of a
                if letest = " " then
                    set a to text items 1 thru -2 of a as string
                else
                    exit repeat
                end if
            end repeat
            --enleve blanc debut
            repeat
                set letest to first character of a
                if letest = " " then
                    set a to text items 2 thru -1 of a as string
                else
                    exit repeat
                end if
            end repeat
            --enleve double blanc milieu et blanc devant +
            set i to 1
            repeat
                set letest to character i of a
                if letest = " " then
                    set suivant to character (i + 1) of a
                    if suivant = " " or suivant = "+" then
                        set debnewa to (text 1 thru (i - 1) of a) as string
                        set finnewa to (text (i + 1) thru -1 of a) as string
                        set a to debnewa & finnewa
                        set nb to nb - 1
                        set i to i - 1
                    end if
                    
                end if
                set i to i + 1
                set nb to count character of a
                if i = nb then exit repeat
            end repeat
            --enleve les blancs derriere les +
            set i to 1
            repeat
                set letest to character i of a
                if letest = "+" then
                    set suivant to character (i + 1) of a
                    if suivant = " " then
                        set debnewa to (text 1 thru i of a) as string
                        set finnewa to (text (i + 2) thru -1 of a) as string
                        set a to debnewa & finnewa
                        set nb to nb - 1
                        set i to i - 1
                    end if
                    
                end if
                set i to i + 1
                set nb to count character of a
                if i = nb then exit repeat
            end repeat
            
            
            
            --verifie si parfum existe
            set AppleScript's text item delimiters to " "
            set nb to count text item of a
            
            set nom to ""
            repeat with i from 1 to nb
                set b to text item i of a
                set test to ASCII number (character 1 of b)
                if test < 65 then
                    if nom is not "" then
                        if nom is not in lesparfums then
                            
                            tell application "Finder"
                                set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
                                write ladate & " " & a & " le parfum : " & nom & " n'existe pas ! " & return to lelog starting at eof
                                close access lelog
                            end tell
                            
                        end if
                        set nom to ""
                    end if
                else
                    if nom is not "" then set nom to nom & " "
                    set nom to nom & text item i of a
                end if
            end repeat
            
            
            --prepare fichier evenements
            if c is not "" then
                set lefich to lefich & c & tab & a & " " & return
            end if
        end repeat
    end tell
end tell
--crée fichier evenements
tell application "Finder"
    set lelog to open for access ((path to desktop folder as text) & "les evenements.txt") as text with write permission
    set eof lelog to 0
    write lefich to lelog starting at eof
    close access lelog
end tell

--ajout quantite par parfum
set vartoto to lefich
set nbparfums to count of lesparfums

set quantite to ""
repeat with nb from 1 to nbparfums
    set cherche to item nb of lesparfums
    set resultat to cherche & " = "
    set tourne to 0
    set bac to 0
    set litre to 0
    set AppleScript's text item delimiters to cherche
    
    set nb to count text item of vartoto
    try
        if nb > 1 then
            repeat with i from 2 to nb
                set trouve to text item i of vartoto
                set devant to text item (i - 1) of vartoto
                
                set nbdose to text -3 thru -1 of devant
                set AppleScript's text item delimiters to " "
                
                set ajout to text item 2 of trouve
                
                --traite les intermediaires (pulpe) sans cumuler les quantitiés
                if "*" is in ajout then
                    if nbdose is not number then
                        set avant to text -8 thru -1 of devant
                        if ":" is in avant then
                            set lafin to first paragraph of trouve
                            set AppleScript's text item delimiters to "*"
                            set nbbac to text item 1 of lafin
                            set lepoid to text item 2 of lafin
                            set quantite to quantite & cherche & " " & nbbac & " bacs de " & lepoid & " kg" & return
                            
                        end if
                    end if
                else
                    
                    set tourne to tourne + nbdose
                    set AppleScript's text item delimiters to "+"
                    set bac to bac + (text item 1 of ajout)
                    set litre to litre + (text item 2 of ajout)
                end if
                
                set AppleScript's text item delimiters to cherche
            end repeat
            if bac is not 0 then
                set quantite to quantite & cherche & "  " & tourne & " tournées " & bac & " bacs " & litre & " litres" & return
            end if
        end if
    on error
        set lelog to open for access ((path to desktop folder as text) & "Erreur traitement.txt") as text with write permission
        write "ERREUR ! Le parfum : " & cherche & " le " & i - 1 & " trouvé dans les evenements.txt" & return to lelog starting at eof
        close access lelog
    end try
    
end repeat

tell application "Finder"
    set lelog to open for access ((path to desktop folder as text) & "Quantites.txt") as text with write permission
    set eof lelog to 0
    write quantite to lelog starting at eof
    close access lelog
end tell

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Bonjour Zeltron54, je ne détecte plus d’erreur bloquante, merci pour tout ce travail, à une prochaine sur les forums :)