Devi cambiare la tastiera, perche' "punti", "virgole", "punto e virgola" etc servono per rendere chiare gli scritti e nel tuo (per colpa della tastiera, appunto) devo lavorare di fantasia.
Poi, le tabelle senza un briciolo di intestazione sono incomprensibili.
Inoltre hai sbagliato a inserire il codice per l'invio mail (vedi
viewtopic.php?f=26&t=109436&p=642284#p642269): va messo in un Modulo standard del vba, non nel modulo di codice di Foglio1="DatabaseMail"
Poi la macro InvioEmailAny era fatta per essere attivata dal foglio contenete le informazioni (che penso sia data base mail); ma ora nella nuova implementazione tu la vuoi richiamare da un pulsante in altro foglio (Inserimento sanzione); quindi i riferimenti sono tutti a pallino. Per rimediare, tutti i riferimenti alle celle vanno "qualificate" esplicitando anche il nome foglio.
Ad esempio:
- Codice: Seleziona tutto
Sub InvioEmailAny()
Dim Dest As String, Subj As String, Msg As String, CC As String, URL As String
Dim dSh As Worksheet
'
Set dSh = Sheets("data base mail")
Dest = dSh.Range("D2") & ";" & dSh.Range("D3") & ";" & dSh.Range("D4")
Subj = dSh.Range("D8")
CC = dSh.Range("D5") & ";" & dSh.Range("D6")
Msg = dSh.Range("D11").Value
'Crea il link MailTo:
URL = "mailto:" & Dest & "?subject=" & Subj & "&cc=" & CC & "&body=" & Msg
'Esegui:
ShellExecute 0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus
'
End Sub
Tuttavia anche con questa modifica nel foglio pubblicato non funziona, perche' una delle celle che dovrebbe includere un indirizzo email (I3) c'e' una situazione di errore, che deriva da un Cerca.Vert che cerca in una tabella un valore (a sua volta derivato da un Cerca.Vert) che non esiste.
Questo e' solo un preambolo, visto che il problema di cui parli nasce quando usi il tasto Inserisci su foglio "Inserimento sanzione".
Da quello che scrivi (anzi da quello che deduco) e da quello che fa la macro a me pare che l'errore sia nell'impostazione; mi pare cioe' che tu voglia creare un registro dei richiami pero' suddiviso per destinatari. Questo lo deduco dall'inserimento riga e dalle formule che cerchi di inserire nelle righe aggiunte.
Secondo me questo schema e' concettualmente sbagliato: devi creati un elenco in cui inserisci (in coda a tutto il preesistente) i nuovi richiami con le relative informazioni.
Da questo elenco puoi estrarre con formule le cose che ti interessano:
-il saldo punti (punti iniziali - i punti di tutti i richiami), il numero di richiami, la classifica dei migliori e dei peggiori, la numerosita' delle varie possibili infrazioni, e tutto quello che puo' servire.
Quindi e' inutile che stiamo a capire come si puo' fare per sapere in quale riga il pulsante Inserisci deve posizionare le sue informazioni; d'altra parte un processo principalmente manuale sarebbe un azzardo immaginare cosa ha fatto l'operatore o dare per scontato che segue disciplinatamente le eventuali istruzioni.
Ti do pertanto dei tasselli da inserire al posto giusto:
1) intanto supponiamo che l'elenco di cui ti parlo sia su foglio LOG, da A2
a) puoi individuare quale e' la prima riga libera usando l'istruzione
- Codice: Seleziona tutto
myNext = sheets("LOG").Cells(Rows.count,1).End(xlup).Row +1
b) a questo punto puoi copiare un'area e incollarla come valori (cioe' senza portarsi dietro formule o formattazioni) con le istruzioni
- Codice: Seleziona tutto
Sheets("Inserimento sanzione").Range(ilRangeCheVuoi).Copy 'es Range("B4:H4")
Sheets("LOG").Cells(myNext, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
In un'altra zona ti crei una tabella che contiene in colonna A tutti i nominativi; poi in colonna B calcoli la somma di tutti i punti di penalita'; basta usare la funzione Somma.Se, dove il "se" e' Colonna A=nominativo, e la colonna da sommare sara' la colonna G (questo nell'ipotesi che in LOG ci hai copiato "B4:H4")
Il punteggio corrente sara' la sottrazione tra i punti iniziali e le penalita' "guadagnate".
Se hai anche una fase di "attribuzione punti", questi possono essere inseriti nello stesso elenco (su LOG) con i punteggi negativi (visto che le penalita' sono punti positivi); oppure su LOG ma in altra colonna.
Ti raccomando anche, per quanto detto all'inizio, di mettere ordine tra le tue tabelle, innanzitutto mettendo delle chiare intestazioni di colonna. Ma poi dando a esse una logica; ad esempio non capisco perche' lo stesso nominativo (es ciao) figura in 6 tabelle diverse: perche' non ne basta 1 (una sola) con tutte le informazioni relative?
Ciao