Condividi:        

[Excel] Come impostare controllo contenuto celle

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] Come impostare controllo contenuto celle

Postdi Cydondgl » 19/09/06 12:05

Buongiorno a tutti.

Ho creato su Excel un modulo d'ordine che permette a chi inserisce I dati di operare solo su alcuni campi. Es. Nome cliente, pagamento, data ordine e consegna, ecc.

Il modulo d'ordine vero e proprio è costituito da una tabella composta da 20 righe (quindi solo 20 diversi articoli sono ammessi per ogni ordine) e 10 colonne. Solo tre di queste colonne permettono all'utente di inserire dati (con strumenti di convalida su due di esse). Varie formule permettono sia di recuperare dati da un altro foglio (dove è presente il listino prezzi) sia di effettuare vari calcoli.

Quello che ho molta difficoltà a risolvere è quanto segue:

Come faccio ad impostare un controllo (ad esempio prima del lancio della stampa) in base al quale, PER OGNI RIGA D'ORDINE COMPILATA, Excel controlli che uno dei tre campi ad inserimento libero (anche se sottoposto a convalida) contiene un dato, ovvero non sia vuoto? Il problema sorge perchè tale campo rappresenta la % di sconto e, se non viene inserita alcuna percentuale perchè per quell'articolo non viene negoziata alcuna % di sconto, l'ultimo campo non recherà alcun Totale, visto che la formula in tale campo cerca un numero nel campo sconto.

Potreste aiutarmi? E' meglio porre tale controllo tramite pulsante sull'area di lavoro o (cosa che penso migliore) prima del lancio della stampa e/o del salvataggio? In caso di celle vuote, il programma dovrebbe restituire un messaggio d'errore che rimanda alla/e cella/e vuote.

Grazie di cuore per l'aiuto.

Marco ;) :P
Cydondgl
Newbie
 
Post: 2
Iscritto il: 19/09/06 11:50

Sponsor
 

Postdi Anthony47 » 19/09/06 14:47

Ci possono essere varie tecniche.

1- Sul foglio, ad esempio per lo sconto, inserisci una nuova cella con la formula SE(SCONTO INTRODOTTO e' vuoto, allora sconto = 0, altrimenti e' uguale a SCONTO INTRODOTTO), e usi il nuovo risultato nel calcolo del prezzo.
2- Sempre sul foglio, puoi evidenziare in rosso (con la formattazione condizionata) le celle che non rispecchiano certe regole.
3- Oppure, con la combinazione di questi flag, visualizzi un messaggio del tipo "CI SONO ERRORI IN AREA " & se(FLAG ERRORE SCONTO, " Sconto","")&se(FLAG ERRORE QT," Quantita'","") & etc etc.
4- o nella macro di stampa controlli che questo flag sia nullo, altrimenti abortisci la stamap;
qualcosa tipo
Codice: Seleziona tutto
If Range("Flag Globale")<> "" then
MsgBox("Ci sono errori da risolvere; stampa abortita")
End sub
End If


Io comunque lo farei sul foglio e non su macro; ad esempio come controlli che la stampa avvenga sempre da macro e non da menu?

Spero che trovi qualche spunto utile; ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Risposta

Postdi Cydondgl » 19/09/06 15:54

Ciao Anthony, grazie per il tuo aiuto!! :) :)

Ho seguito il tuo tip #1 ed ho creato una nuova colonna con questa funzione:
Codice: Seleziona tutto
=SE(L12<>"";0;S12=L12)


L è la colonna della % di sconto (sottoposta a controllo condizionale)
S è la nuova colonna creata per essere utilizzata dalla colonna totale nella sua formula.

Il problema è che non mi funziona. Pone 0 nella cella "S" sia che la cella L sia vuota sia nel caso in cui contenga un valore.

Forse la mia è una domanda stupida da neofita ma mi aiuti a capire dove sbaglio?
:cry:

Grazie

Ciao

Marco

*** per favore codice e formule vanno racchiusi entro i tag usando il tasto Code
Cydondgl
Newbie
 
Post: 2
Iscritto il: 19/09/06 11:50

Postdi Anthony47 » 19/09/06 16:53

Ho seguito il tuo tip #1 ed ho creato una nuova colonna con questa funzione:
=SE(L12<>"";0;S12=L12)


La sintassi della funzione SE e':
SE(Test; Valore se conizione vera; Valore se condizione falsa)

Quindi in S12 dovresti scrivere
=SE(L12<>0;L12;0)

L' area "Sconto" ho capito che e' soggetta a Convalida, con valore decimale tra 0 e 1 (o latro limite piu' congruo); vero?

Ciao,
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi Anthony47 » 19/09/06 16:58

Pensandoci bene: ma per il prezzo netto basterebbe applicare la formula
=PREZZO-di-LISTINO*(1-SCONTO)
E se anche SCONTO e' vuoto verra' calcolato come 0.

Ciao,
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Controllo selle

Postdi By Sal » 19/09/06 17:04

Ciao Cydondgl, prova questo codice
Codice: Seleziona tutto
Sub controllo()
rig_ini = 2  'riga inizio codici
rig_fin = 22 'riga fine codici
col_ini = 1  'colonna del codice
col_ct1 = 3  'colonne da controllare
col_ct2 = 6
col_ct3 = 8
For i = rig_ini To rig_fin 'ciclo di controllo
    If Cells(i, col_ini) <> "" Then
        If Cells(1, col_ct1) = "" Then
            Cells(1, col_ct1).SetFocus
            Exit Sub
        End If
        If Cells(1, col_ct2) = "" Then
            Cells(1, col_ct2).SetFocus
            Exit Sub
        End If
        If Cells(1, col_ct3) = "" Then
            Cells(1, col_ct3).SetFocus
            Exit Sub
        End If
    End If
    If Cells(i, col_ini) = "" Then Exit Sub
Next i
End Sub

l'ho creata come macro ma basta togliere la prima è l'ultima riga ed inserirla nel tuo codice, per le righe e le colonne di inizio e controllo non so il tuo schema quali sono puoi aggiustarle di conseguenza.
scorre la fattura e per tutte le righe occupate fa il controllo se sono inseriti i dati delòle colonne, se non sono inseriti esce dalla sub e si posiziona sul dato mancante, questo per tutti i dati mancanti, quando finisce la lista dei codici esce dal ciclo.
Controllala e fammi sapere Ciao
A rileggerci By Sal
Avatar utente
By Sal
Utente Junior
 
Post: 83
Iscritto il: 27/08/06 14:40


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Come impostare controllo contenuto celle":


Chi c’è in linea

Visitano il forum: Nessuno e 46 ospiti