La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
ciao Marius
sono certo che si possa lanciare
usando IF NOT INTERSECT............
ma bisogna sapere quale colonna viene scritta a mano
o cambia attraverso una macro
@marius44 Si, effettivamente C è scritto a mano e D è frutto di una formula
ciao
due possibilità
la prima tieni nel modulo la macro
e sul foglio metti
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [C:C]) Is Nothing Then Call Calcola End If End Sub
così come scrivi il dato in C la macro si attiva
questa invece messa sul foglio (elimina la macro sul modulo)
Private Sub Worksheet_Change(ByVal Target As Range) Dim RP As Long, i As Long Dim mCPU As Double, mSSD As Double, mALI As Double Dim mHD As Double, mCS As Double '<<<<<< aggiungere mCPU = 20 mSSD = 30 mALI = 35 mHD = 10 '<<<<<<<< da modificare ammontare mCS = 5 '<<<<<<<< da modificare ammontare If Not Intersect(Target, [C:C]) Is Nothing Then On Error GoTo chiudi Application.EnableEvents = False If Target.Offset(0, 5) <> "" Then If UCase(Target.Offset(0, 5)) = "CPU" Then Target.Offset(0, 1) = Target * (1.22 * (1 + (mCPU / 100))) ElseIf UCase(Target.Offset(0, 5)) = "SSD" Then Target.Offset(0, 1) = Target * (1 + (mSSD / 100)) ElseIf UCase(Target.Offset(0, 5)) = "ALIMENTATORI" Then Target.Offset(0, 1) = Target * (1 + (mALI / 100)) ElseIf UCase(Target.Offset(0, 5)) = "CASE" Then Target.Offset(0, 1) = Target * (1 + (mCS / 100)) ElseIf UCase(Target.Offset(0, 5)) = "HARD DISK" Then Target.Offset(0, 1) = Target * (1 + (mHD / 100)) Application.EnableEvents = True End If End If End If chiudi: Application.EnableEvents = True End Sub
si attiva riga per riga........non le ricalcola tutte
Ho provato la prima soluzione e funziona
ciao
non è il funzionamento che mi interessava ma il modo
di lavorare delle due macro
la prima passa tutte le righe ogni volta
la seconda invece calcola solo sulla riga dove scrivi
risparmiando ricalcoli ad excel
@gianfranco55 Si, hai ragione, ma nel mio caso ricevo il listino dal mio fornitore con la colonna C già presente.
Ho provato pertanto solamente il funzionamento.