› Sviluppare funzionalita su Microsoft Office con VBA › Codice VBA inserisci pren. da migliorare. excel 2021
-
AutoreArticoli
-
Buongiorno a tutti,
ho bisogno del vostro aiuto per migliorare e risolvere alcuni problemi che da solo con la mia poca esperienza proprio non ci riesco.
Il problema che non riesco a risolvere sarebbero un paio:
1 - Se assegno una camera al cliente "Verde Danilo", il codiceVBA mi colora di Rosso le celle dal giorno 25/03 al 03/03, con al suo interno il CODICE cliente. Fin qui, tutto bene. Ma come si potrà notare mi colora anche nella colonna B, inserendo anche il Codice cliente e sovrascrivendo il mese. Proprio quest'ultima vorrei che non lo facesse.
Io ho pensato ad una possibile soluzione, però non sono esterrefatta. Sarebbe a dire che una volta pigiato il pulsante Inserisci, per ultimo gli vado a dire che nella cella B5 "scrivi Gennaio" nella cella "B6" scrivi Febbraio e cosi via. Sarebbe interessante e professionale risolverlo diversamente (Qual ora esista una possibilità).
2 - se si potesse inserire ad esempio alla riga 17 "del foglio Prospetto" il 13° mese. Mi spiego meglio.
Adesso se vado ad inserire una prenotazione dal 29/12/2023 al 20-01-2024, il codice non restituisce nulla, perchè legge l'anno corrente come impostato sul foglio.
Ho pensato, provato con risultato 0, (sempre che si possa fare) che nella riga 17, di inserire Dicembre 2023 dove il codice vada a colorare di rosso con al suo interno il Codice cliente le celle dei giorni 29,30,31/12, continuando ai giorni di gennaio 2024, che si trova alla riga B5.
Se provi il cliente "Bianco Vito" vedrai che pigiando il pulsante Inserisci non succede nulla.
Grazie a tutti
Allegati:
You must be logged in to view attached files.Il problema 1 l'ho risolto.
Mi potresti spiegare come usi il programma, per fare le prove ho dovuto sempre creare un nuovo cliente e non si posso mofificare le date messe durante l'inserimento del cliente stesso. E' corretto?
Allegati:
You must be logged in to view attached files.Il problema 1 l'ho risolto.
Ciao Aldo, grazie per il tuo impegno.
ma ne è hai creato un altro. Se noti dal tuo file allegato, quando inserisci il cliente "Verdi Danilo", potrai notare l'errore, cioè adesso mi segna anche il giorno di partenza. In una prenotazione vanno considerate i pernotti. Quindi com era ' impostato il CodiceVBA in origine la data di partenza non deve essere contrassegnata con il giorno di partenza.,.
Mi potresti spiegare come usi il programma, per fare le prove ho dovuto sempre creare un nuovo cliente e non si posso mofificare le date messe durante l'inserimento del cliente stesso. E' corretto?
I clienti sono già registrati. se vuoi modificare le date devi farla dall'anagrafica cliente. ma questo non è necessario.
Per provare ti basta cancellare l'ultima prenotazione, oppure cancellare tutto l'anno e pigiare d nuovamente il pulsante Inserisci. Non devi registrare nessun nuovo cliente.
Nella fase di assegnazione camera, non puoi modificare nulla.
Grazie
Ciao Aldo,
avevo la soluzione sotto gli occhi e non la vedevo. Bastava cambiare la colonna e il giorno di partenza. Quindi adesso il primo problema è stato risolto, cioè non scrive più nella seconda colonna. Passiamo al secondo.
`cc = 2 ' Aldo ha sostituito la 3 colonna con 2. Era li e non la vedevo ff = txtGiornoPartenza.Value + 2 ' ed io con 1 il giorno Range(Cells(rr, cc), Cells(rr, ff)).Interior.ColorIndex = 3 'Colora celle in Rosso Range(Cells(rr, cc), Cells(rr, ff)) = txtCodiceCamera.Value`Grazie
P.S. Se ho 2 clienti con le date che si accavalcono nasce un problema.
Es. 1 cliente pernotta dal 10/03 al 15/03, mentre il 2 cliente pernotta dal 13/03 al 16/03 poichè questi si trovano nella stessa
riga "Mese" allora il codice mi avvisa che la camera è già occupata. Perfetto!
Ma se invece il 2° cliente pernotta dal 14/03 al 02/04, (a cavallo di due mesi) qui il codice non mi da l'avviso e sovrascrive senza chiedermelo.Quindi anche in questo caso se mi desse l'avviso, sarebbe meglio.
Grazie per il vostro aiutoBuongiorno a tutti,
Il problema che mi interessa maggiormente e non riesco a risolvere da giorni con prove e riprove è: Cerco di spiegarmi.
Inserisco il cliente Rossi Mario. Pigiando il pulsante "INSERSCI" mi scrive il codice cliente (4) e colora di Rosso le celle dal giorno 01 marzo al 09 marzo, il 10 marzo No perchè è partenza. Fin qui, tutto bene. Se si prova ad inserire il cliente "Verde Danilo" codice cliente (10) si noterà un avviso di; camera occupata, se si vuole forzare colora le celle di Blu. Fin qui tutto bene. Il problema nasce quando si accavallano due mesi. Se si prova ad inserire il cliente "Bianco Vito" codice cliente (16) si noterà l'errore. Lui mi assegna la camera dal 09 gennaio al 01 febbraio, quando non doveva farlo in quanto il 9 gennaio è gi assegnato ad altro cliente in questo caso a Rossi Mario. Quindi vorrei risolvere questo problema. Cioè deve avvisarmi con un avviso come l'esempio spiegato di Verde Danilo.
Qualcuno ha qualche dritta, mi sono perso.
Allego il file leggermente ripulito con delle prove.
P.S. Sto usando il gestionale di Alexps81, davvero ottimo.
Grazie
Allegati:
You must be logged in to view attached files.Ciao Fulvio,
grazie per il tuo impegno.
Io ci sto sto provando in tutti i modi possibili, ma la mia poca esperienza mi pone dei limiti. Ma per il momento non mollo.
Leggendo le varie discussione di questo forum ho notato che cè gente che legge e scrive codici come se leggesse o scrivesse un articolo di giornale.
Per questo mi rivolgo a degli esperti del campo sicuramente con anni di esperienza.
Mi chiedo forse per come è composto il mio "codice" assemblato e adattato, che forse non si può fare. Vediamo che succede.
Allora , se ho capito. Ho inserito un ciclo if che mi controlla che il giorno di arrivo non sia una camera occupata.
' Funziona per un massimo di due mesi
ElseIf txtMesePartenza.Value = Val(txtMeseArrivo) + 1 Then
r = txtMeseArrivo.Value + 4 'identifica la riga del mese
c = Val(txtGiornoArrivo) + 2 'identifica colonna del giorno di arrivo
If Cells(r, c).Interior.Color = RGB(255, 0, 0) Then
MsgBox "giorno " & txtGiornoArrivo & " " & txtMeseArrivo.Value & " occupata"' quello che deve fare se la camera è occupata
End If
questa condizione verifica che la data, nel nostro caso giorno 9 del mese di gennaio non sia occupata(verifica il colore della cella), se il colore è rosso , visualiazza un messaggio.
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )</divAlbatros54 in questi casi non ci si può limitare a controllare il giorno di arrivo, bisogna controllare ogni singolo giorno della prenotazione, nessuno vieta che il giorno di arrivo la camera sia disponibile e dal secondo giorno in poi invece sia occupata.
la soluzione che hai proposto andrebbe modificata a mio avviso tenendo in considerazione
- ANNO/MESE/GIORNO di arrivo
- ANNO/MESE/GIORNO di partenza - 1
e poi fare un ciclo per verificare che tra arrivo e partenza la camera non sia impegnata.
in questo modo si potrebbero gestire anche eventuali prenotazioni "LUNGHE" e che si accavallano tra più anni
Premetto che bisogna ricordarsi di gestire gli anni bisestili.
Ovviamente non ho ancora guardato il codice di pixel e non so quanto debba essere stravolto per fare questo controllo.
Buongiorno a tutti,
Ciao Albatros, grazie per il tuo aiuto. Mi hai aperto gli occhi perchè mi ero perso nei meandri del vb. Da solo non ci sarei arrivato, ti lascio immaginare cosa non ho fatto e provato. Mi sono solo avvicinato alla condizione If, ma facevo tutt'altro di tutto e di più tranne quello giusto. Eppure la soluzione era li e non la vedevo. Questo è dovuto alla mia poca esperienza. Ritengo che oltre a nutrire una "passione come è venuta a me" ci vogliono anni e anni di studi per arrivare a certi livelli. Infatti, ho letto molte discussioni con risposte date da te, Vecchio Frac, Marius, Alfrimpa, alexsp81, luca73, scossa e tanti altri.
Il codice così com è funziona bene.
Detto questo ti ringrazio ancora una volta Albatros. Ora posso proseguire il mio progetto.
metto il codice con la tua correzione.
'=================Parte mancante data da Albatros======================================================== ' Funziona per un massimo di due mesi ElseIf txtMesePartenza.Value = Val(txtMeseArrivo) + 1 Then r = txtMeseArrivo.Value + 4 'identifica la riga del mese c = Val(txtGiornoArrivo) + 2 'identifica colonna del giorno di arrivo f = giorni(txtMeseArrivo) + 2 ' aggiunto io ' Quindi gli diciamo che se la cella e rossa allora avvisami ed esci altrimenti scrivi pure If Cells(r, c).Interior.Color = RGB(255, 0, 0) Then ' quello che deve fare se la camera è occupata 'Grazie a te ho capito che con questa istruzione diciamo che se trova nella cella anzicchè un colore, un valore, non devi proseguire _ funzona in entrambi i casi 'If Cells(r, c) <> "" Then MsgBox "Il giorno " & txtGiornoArrivo & " / " & txtMeseArrivo.Value & " la camera è già occupata!", vbCritical, "ATTENZIONE..." Else ' quello che deve fare se la camera è occupata Range(Cells(r, c), Cells(r, f)).Interior.ColorIndex = 3 'Colora di rosso le celle Range(Cells(r, c), Cells(r, f)) = txtCodiceCamera.Value rr = txtMesePartenza.Value + 4 cc = 3 ' identifica la colonna ff = txtGiornoPartenza.Value + 1 Range(Cells(rr, cc), Cells(rr, ff)).Interior.ColorIndex = 3 'Colora celle in Rosso Range(Cells(rr, cc), Cells(rr, ff)) = txtCodiceCamera.Value ' codice cliente End IfCiao Fulvio,
non ci si può limitare a controllare il giorno di arrivo, bisogna controllare ogni singolo giorno della prenotazione,
nessuno vieta che il giorno di arrivo la camera sia disponibile e dal secondo giorno in poi invece sia occupata.
Appena puoi prova il file vedrai come funziona il codice sempre che tu non l'abbia già visto. Forse non ho capito bene io oppure cè un pò di confusione.
Se una prenotazione es. dal 10/01 al 15/01 è stata già inserita Ok, arriva una nuova richiesta di prenotazione dal 15/01 al 20/01 dopo aver verificato vedrai che per quella camera non è possibile in quanto già occupata.
la soluzione che hai proposto andrebbe modificata a mio avviso tenendo in considerazione
- ANNO/MESE/GIORNO di arrivo
- ANNO/MESE/GIORNO di partenza - 1
e poi fare un ciclo per verificare che tra arrivo e partenza la camera non sia impegnata.
Su questo hai perfettamente ragione. Per questo motivo avevo pensato di inserire un mese precedente all'anno in corso. ad esempio Dicembre 2023. Sarebbe davvero una ciliegina sulla torta. Io ho provato facendo solo dei minestroni. Questo è troppo difficile per me, non ci riuscirò mai.
Premetto che bisogna ricordarsi di gestire gli anni bisestili.
Infatti, qui diciamo che nasce un altro piccolo problema. Io ho pensato di mettere una cella lampeggiante quando l'anno è bisestile.
Grazie Fulvio per il tuo interesse. Se migliorabile tanto meglio.
allego il codice completo.
' Pulsante inserisci prenotazione camera 1 Dim r As Integer, c As Integer, f As Variant, rng As Variant, cellerange As String, cl As Variant, t As String Dim risp As String, risposta As String Dim rr As Variant, ff As Variant, cc As Variant Sheets("Prospetto").Select ' Seleziona il foglio prenotazione camere If txtGiornoArrivo = "" Or txtDataPartenzaCamera = "" Then Exit Sub Else txtGiornoArrivo = Day(CDate(txtDataArrivoCamera)) 'restituisce il giorno della data di arrivo txtMeseArrivo = Month(txtDataArrivoCamera) 'e il mese espresso in numero txtGiornoPartenza = Day(CDate(txtDataPartenzaCamera)) 'restituisce il giorno della data di partenza txtMesePartenza = Month(txtDataPartenzaCamera) 'e il mese espresso in numero If txtMeseArrivo.Value = txtMesePartenza.Value Then r = txtMeseArrivo.Value + 4 'seleziona la riga del mese partendo dalla 5° c = Val(txtGiornoArrivo) + 2 f = Val(txtGiornoPartenza) + 1 Set rng = Range(Cells(r, c), Cells(r, f)) cellerange = Evaluate("=COUNT(" & rng.Address & ")") If cellerange = 0 Then Range(Cells(r, c), Cells(r, f)).Interior.ColorIndex = 3 'Colora di rosso Range(Cells(r, c), Cells(r, f)) = txtCodiceCamera.Value ' Scrivi il codice cliente per distinguere l'uno dall'altro txtCameraUltimaInserita = txtCameraUltimaInserita.Value + " Camera 1 " 'Visualizza ultima camera inserita Exit Sub End If For Each cl In rng t = cl.Column risp = MsgBox("Nel periodo dal " & CDate(txtDataArrivoCamera) & " al " & CDate(txtDataPartenzaCamera) & _ " non puoi prenotare, camera occupata!" & Chr(10) & " " & Chr(10) & " Vuoi continuare?", vbYesNo + vbCritical + vbDefaultButton2, "ATTENZIONE...") If risp = vbNo Then Exit Sub End If Select Case VarType(cl) Case vbDouble risposta = MsgBox("La camera per il " & t - 2 & "-" & (Cells(r, 1)) & " è già prenotata!" & Chr(10) & "Vuoi sovrascrivere?" & Chr(10) & "", vbYesNo + vbCritical + vbDefaultButton2, "ATTENZIONE...") txtCameraUltimaInserita = txtCameraUltimaInserita.Value + " Camera 1 " 'Visualizza ultima camera inserita If risposta = vbNo Then Exit For End If rng.Value = txtCodiceCamera.Value Range(Cells(r, c), Cells(r, f)).Interior.ColorIndex = 5 'Se le date dovessero coincidere colora le celle di blu. Exit For End Select While cl.Value = "" cl.Value = txtCodiceCamera.Value Range(Cells(r, c), Cells(r, f)).Interior.ColorIndex = 2 'Se la data della nuova prenotazione è antecedente ad una prenotazione già _ assgneta, allora colora le celle prima di bianco e successivamente di blu. Es. prenotazione esistente dal 10/12/2024 al 13/12/2024 _ e si inserisce dal 09/12/2024 al 15/12/2024 Wend Next '=================Parte mancante data da Albatros======================================================== ' Funziona per un massimo di due mesi ElseIf txtMesePartenza.Value = Val(txtMeseArrivo) + 1 Then r = txtMeseArrivo.Value + 4 'identifica la riga del mese c = Val(txtGiornoArrivo) + 2 'identifica colonna del giorno di arrivo f = giorni(txtMeseArrivo) + 2 ' aggiunto io ' Quindi gli diciamo che se la cella e rossa allora avvisami ed esci altrimenti scrivi pure If Cells(r, c).Interior.Color = RGB(255, 0, 0) Then ' quello che deve fare se la camera è occupata 'Grazie a te ho capito e con questa istruzione diciamo che se trova nella cella anzicchè un colore, un valore, non devi proseguire _ funzona in entrambi i casi 'If Cells(r, c) <> "" Then MsgBox "Il giorno " & txtGiornoArrivo & " / " & txtMeseArrivo.Value & " la camera è già occupata!", vbCritical, "ATTENZIONE..." Else ' quello che deve fare se la camera è occupata Range(Cells(r, c), Cells(r, f)).Interior.ColorIndex = 3 'Colora di rosso le celle Range(Cells(r, c), Cells(r, f)) = txtCodiceCamera.Value rr = txtMesePartenza.Value + 4 cc = 3 ' identifica la colonna ff = txtGiornoPartenza.Value + 1 Range(Cells(rr, cc), Cells(rr, ff)).Interior.ColorIndex = 3 'Colora celle in Rosso Range(Cells(rr, cc), Cells(rr, ff)) = txtCodiceCamera.Value ' codice cliente End If End If End If End Sub Private Sub txtDataPartenzaCamera_Exit(ByVal Cancel As MSForms.ReturnBoolean) If txtDataArrivoCamera = "" Or txtDataPartenzaCamera = "" Then Exit Sub Else txtGiornoArrivo = Day(CDate(txtDataArrivoCamera)) 'restituisce il giorno della data di arrivo txtMeseArrivo = Month(txtDataArrivoCamera) 'mese espresso in numero txtGiornoPartenza = Day(CDate(txtDataPartenzaCamera)) 'restituisce il giorno della data di partenza txtMesePartenza = Month(txtDataPartenzaCamera) 'mese espresso in numero End IfPixel: ho qualche domanda
1) quante camere vanno gestite con questo programma
2) hai intenzione di tenere tutte le camere sullo stesso foglio prospetto oppure creare un foglio per ogni singola camera?
Ma sei sicuro che funziona bene??? Secondo me no (sempre se ho inteso ciò che vuoi ottenere).
A parte il dimensionamento delle variabili che vanno sistemate, ma poi se un cliente prenota a cavallo tra l'anno attuale e l'anno successivo cosa succede? (Es.: 20/12/2024-10/01/2025). Così com'è il codice non fa nulla.
Poi hai fatto delle verifiche su diverse date di prenotazione? Io ho notato che se rimani sullo stesso mese e le prenotazioni si accavallo allora ti consente di sovrascrive il numero cliente e ti colora di blu la/e celle/a. Ma se c'è una prenotazione che comprende 2 mesi allora ti nega la prenotazione a prescindere. Quindi è giusto? Nel primo caso ti fa scegliere se continuare nel secondo no?
E la Function Giorni() a che serve? Fatta così non funziona. Quando l'anno è bisestile come calcola i giorni di febbraio?
Per calcolare quanti giorni ci sono in un mese basta un rigo di codice:
Dim f as Integer '(e non as Variant come hai fatto tu) f = (DateSerial(anno, mese + 1, 1)) - (DateSerial(anno, mese, 1)) 'dove anno e mese sono quelli che passi in rassegnaAlexps81 anche io sto notando un po' di vuoti di analisi e per quello sto iniziando a fargli un po' di domande appunto per capire dove si voglia arrivare.
però da quello che ho capito questo non è il suo lavoro e quindi ci può stare che non pensi a tutti i possibili scenari che gli porranno davanti, spesso non lo fanno nemmeno gli analisti veri.
alla fine quando sapremo/saprà meglio cosa dovrà fare il programma vedrete/mo che una soluzione la troviamo
Rispondo in ordine. Ciao Fulvio,
1) quante camere vanno gestite con questo programma
2) hai intenzione di tenere tutte le camere sullo stesso foglio prospetto oppure creare un foglio per ogni singola camera?
A l momento sono tre camere e le ho inserite sulle stesso foglio. Poi se andrà in porto alcune cose saranno 6/7. Sul file caricato invece ho messo 1 camera per semplificare il più possibile.
Caio Alex, un piacere risentirti. Come potrai notare sto usando il tuo gestionale che rispetto al mio non cè paragone.
Per quanto riguarda la tua osservazione:
Ma sei sicuro che funziona bene??? Secondo me no (sempre se ho inteso ciò che vuoi ottenere).
A parte il dimensionamento delle variabili che vanno sistemate, ma poi se un cliente prenota a cavallo tra l'anno attuale e l'anno successivo cosa succede? (Es.: 20/12/2024-10/01/2025). Così com'è il codice non fa nulla.
Hai ragione, lo sapevo. Infatti, avevo pensato di inserire un 13° mese cioè "Dicembre 2023" e da li verificare la disponibilità prima di inserire una nuova prenotazione. Se fosse possibile realizzarlo sarebbe una bela cosa.
Io avevo pensato di fare ogni anno un file a se es. 2023, 2024 e cosi via. Forse male non sarebbe. Vediamo.
Poi hai fatto delle verifiche su diverse date di prenotazione? Io ho notato che se rimani sullo stesso mese e le prenotazioni si accavallo allora ti consente di sovrascrive il numero cliente e ti colora di blu la/e celle/a. Ma se c'è una prenotazione che comprende 2 mesi allora ti nega la prenotazione a prescindere. Quindi è giusto? Nel primo caso ti fa scegliere se continuare nel secondo no?
Hai ragione anche qui, ho notato questa cosa e se si potesse aggiustare sarebbe tanto meglio. Io su aiuto di Albatros, sono riuscito a farlo funzionare quanto meno correttamente. Ti spiego: precedentemente quando una prenotazione era a cavallo di due mesi Es. 30/04/2024 al 05/05/2024, il codice non mi chiedeva e sovrascriveva anche se il giorno precedente la camera era già assegnata. Invece adesso non succede. Però se mi desse anche qui la stessa possibilità non mi dispiacerebbe.
E la Function Giorni() a che serve? Fatta così non funziona. Quando l'anno è bisestile come calcola i giorni di febbraio?
Il codice è un miscuglio di altri codice trovati in rete più alcune modifiche fatte da me.
Per quanto riguarda l'anno bisestile, hai ragione anche qui. Ho provato anche a modificare il modulo 3 dove ci sono le istruzioni del mese e giorni, ma non sono riuscito a trovare una possibile soluzione. Infatti, ho pensato di mettere un avviso in una cella (magari lampeggiante) in modo da attirare la mia attenzione nell'inserimento.
Dim f as Integer '(e non as Variant come hai fatto tu)
Come vuol dimostrarsi il minestrone è venuto in parte male ( per non dire tutto). Questo dovuto alla scarsa conoscenza in programmazione. Adesso vado a correggere la variabile da te indicata.
f = (DateSerial(anno, mese + 1, 1)) - (DateSerial(anno, mese, 1))'dove anno e mese sono quelli che passi in rassegna
Quindi devo sostituire questo "f" con quello che cè ora nel codice?
Grazie
Alexps81 anche io sto notando un po' di vuoti di analisi e per quello sto iniziando a fargli un po' di domande appunto per capire dove si voglia arrivare.
però da quello che ho capito questo non è il suo lavoro e quindi ci può stare che non pensi a tutti i possibili scenari che gli porranno davanti, spesso non lo fanno nemmeno gli analisti veri.
alla fine quando sapremo/saprà meglio cosa dovrà fare il programma vedrete/mo che una soluzione la troviamo
Ciao Fulvio,
andiamo per step.
Il programma non deve fare altro che; registrare dei dati, verifica e inserire prenotazioni, creare delle ricevute e stamparle, insomma è un gestionale per strutture ricettive.
2° Step. E' il lavoro di mia moglie, dove anche io do una mano. Non certo perdevo la testa per creare un qualcosa per altra persona quando non ho le minime competenze. Ti pare?
Detto questo, adesso il modo di lavorare è su carta. Tempo fa creai dei fogli excel dove si scrive la prenotazione verificando l'immediata disponibilità delle camere. Anche le ricevute sono fatte a mano. Ora invece vorrei automatizzare la cosa.
Grazie
ho immaginato questo scenario:
su foglio prospetto ho le prenotazioni che vanno dal 01-01-2024 al 09-01-2024, quindi la stanza in questi giorni è occupata, celle colorate di rosso,Bene.
ho inserito una prenotazione che mi va dal 15-01-2024 al 18-01-2024 , quindi la stanza in questi giorni è occupata,celle colorate di rosso,Bene.
ora voglio inserire una prenotazione che mi vada dal 10-01-2024 al 24-01-2024, il programma mi deve avvisare se in questo periodo c'è qualche giorno che la tsanza è gia occupata.Nel codice che posto ho inserito una routine che fa questo.
If txtMeseArrivo.Value = txtMesePartenza.Value Then
r = txtMeseArrivo.Value + 4 'seleziona la riga del mese partendo dalla 5°
c = Val(txtGiornoArrivo) + 2
f = Val(txtGiornoPartenza) + 1
Set rng = Range(Cells(r, c), Cells(r, f))
cellerange = Evaluate("=COUNT(" & rng.Address & ")")
If cellerange > 0 Then
For Each cl In rng
If cl.Interior.ColorIndex = 3 Then
MsgBox "stanza occupata"
End If
Next
End IfIf cellerange = 0 Then
Range(Cells(r, c), Cells(r, f)).Interior.ColorIndex = 3 'Colora di rosso
Range(Cells(r, c), Cells(r, f)) = txtCodiceCamera.Value ' Scrivi il codice cliente per distinguere l'uno dall'altroP.S. Questo codice mi sembra di averlo già visto in qualche discussione passata in questo Forum
(Scrive e colora se cella vuota
di angy (utente non iscritto) data: 30/04/2016 11:18:30)Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Ciao Albatros, ho provato il tuo codice ma non va. Sicuramente son io che sbaglio qualcosa. Boo. Riprovo
hai creato lo scenario che ti ho prospettato? perchè il codice funziona lo devi inserire nella routine del "CommandButton18_Click"
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Si Albatros, sono riuscito, ho notato che mi da degli avvisi per quanti sono i giorni occupati. Se desse un solo avviso con il numero dei giorni totali occupati sarebbe ancora meglio.
Grazie
P.S. Albatros,
Per quanto riguarda la provenienza del codice non saprei indicartelo per quanti ne ho letti, scaricati e modificati.
Se desse un solo avviso con il numero dei giorni totali occupati sarebbe ancora meglio
Modifuca il codice cosi
If cellerange > 0 Then For Each cl In rng If cl.Interior.ColorIndex = 3 Then messaggio = messaggio & "stanza occupata giorno " messaggio = Chr(13) & messaggio & Cells(4, cl.Column) & vbLf & vbLf End If Next MsgBox messaggio End IfQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Ma io forse non ho compreso come dovrebbe funzionare l'inserimento delle prenotazioni.
Ipotizziamo che la camera nr. 1 è già impegnata dal 10/01/2024 al 15/01/2024 dal cliente nr. 1
Poi arriva il cliente nr. 2 e ha una prenotazione dal 13/01/2024 al 18/01/2024 e vuoi inserirlo sempre nella camera nr. 1
siccome si accavallano per 2 giorni dal 13 al 15 gennaio...cosa dovrebbe accadere in questo caso?
Deve impedirti di inserire il cliente nr. 2 nella stanza nr. 1?
Ti deve chiedere se vuoi accavallare le date e dal 13 al 18 gennaio la assegna al cliente nr. 2? Ma poi se è così è normale che avvenga una cosa del genere? Il cliente nr. 1 che fine fa in quei 2 giorni?
-
AutoreArticoli
