Rotte clienti



  • Rotte clienti
    di Kinki (utente non iscritto) data: 24/11/2015 18:35:06

    Ciao a Tutti e complimenti per il forum lo trovo molto interessante.

    Mi sono imbattuto nel vostro Forum per chiedervi un consiglio.

    Vi allego un file, non mi occorre una macro ma una formula in xls o magari si non sono tanto esperto di macro. Il problema che ho nell'azienda dove lavoro e incrociare le rotte nelle righe colorate di verde con quelle nelle griglie (per comodità ne allego solo una di prova evidenziata con il giallo)

    Il fine è trovare il prezzo che a suo tempo è stato applicato così da non diventare matto.

    Help me, help me !!!!



  • di alfrimpa data: 24/11/2015 18:37:46

    Il file non c'è.

    Alfredo




  • Rotte clienti
    di kinki (utente non iscritto) data: 24/11/2015 20:38:57

    Scusa Alfredo... spero si capisca il problema.

    Immaginati che ho centinaia di rotte e non ricordarsi nello storico quale prezzo si è applicato e quindi se esiste una rotta nell'archivio fatta.

    Grazieeee



  • di patel data: 25/11/2015 07:43:04

    qual'è l'archivio storico con le rotte, i clienti e il prezzo applicato ?




  • Rotte clienti
    di Kinki (utente non iscritto) data: 25/11/2015 11:28:46

    Ciao Patel !!!

    Dove vedi la riga gialla quello è l'archivio storico che ogni anno si alimenta. Per comodità non ti ho inoltrato tutto l'elenco che risiede in un altro foglio di lavoro.

    Quando arriva una richiesta di trasporto io devo verificare se nell'archivio storico è stato mai effettuato il servizio e valutarne il prezzo.

    I problemi sono se mai è stato fatto e se sono stati fatti più di uno andarli a trovare.



  • di alfrimpa data: 25/11/2015 11:39:55

    Ciao kinki ed un caro saluto a Patel.

    A me sembra che il tutto si possa risolvere con un Filtro Dati o un Filtro Avanzato; hai provato questo strumento che ti mette a disposizione Excel?

    Comunque, come diceva anche Patel, sarebbe utile avere il database con qualche decine di record rappresentativi dell'insieme in modo da poter fare delle prove e dei test.

    Alfredo





  • di patel data: 25/11/2015 12:47:41

    alfredo, ottima idea , ricambio il saluto




  • Rotte clienti
    di kinki (utente non iscritto) data: 25/11/2015 14:04:00

    Alfredo e Patel vi rimando il file un pò ricostruito per motivi di privacy faccio fatica a mandarvi i dati veri.

    Non avete afferrato il probema: se devo farlo manuale o con dei filtri avrei già risolto io vorrei qualcosa di più automatizzati.

    Nell'esempio che vedete la rotta che mi interessa è Alessandria-Torino.

    Ma se domani mi serve un Bologna-Milano oppure un Napoli-Roma come faccio ? Ogni volta imposto i filtri?

    E' quello che sto facendo fino ad oggi.

    Così ho pensato di costruire un comando dove nei box a tendina inserisco le rotte che di volta in volta possono anche aumentare con il tempo e con un comando (macro) cercare nell'altro foglio se in passato ci sono state rotte simili.

    Come vedete nell'esempio ho inserito diversi casi in giallo che mi indicano informazioni diverse. A me serve avere traccia dei vecchi recordi e cercarli in maniera più veloce tutto qua.

    Spero di essere stato chiaro FORZA RAGAZZI so che ci riuscite !!



  • di alfrimpa data: 25/11/2015 15:40:54

    Si ma avresti dovuto riempirlo con un po' di dati (inventati) ed ho dovuto farlo io.

    Ora ci provo un po' e ci risentiamo.

    Alfredo





  • di cromagno data: 25/11/2015 15:50:11

    Ciao a tutti,
    secondo me basterebbero due formule matriciali (da confermare con CTRL+MAIUSC+INVIO)...

    Nel tuo file ho aggiunto un foglio per fare delle prove.
    Ho sostituito le combobox con dei "convalida dati".

    Nella cella F14 (da copiare poi in basso):
    =SE.ERRORE(INDICE('Data Base vecchi clienti'!$A:$A;PICCOLO(SE.ERRORE((1/('Data Base vecchi clienti'!$B:$B=$F$10)>0)*(1/('Data Base vecchi clienti'!$C:$C=$G$10)>0)*RIF.RIGA($A:$A);"");RIF.RIGA(A1)));"")

    Nella cella G14 (da copiare poi in basso):
    =SE.ERRORE(INDICE('Data Base vecchi clienti'!$J:$J;PICCOLO(SE.ERRORE((1/('Data Base vecchi clienti'!$B:$B=$F$10)>0)*(1/('Data Base vecchi clienti'!$C:$C=$G$10)>0)*RIF.RIGA($A:$A);"");RIF.RIGA(B1)));"")

    Prova a guardare il file allegato....



  • di alfrimpa data: 25/11/2015 16:23:30

    Ciao Kinki

    Visto che l'ho fatta anch'io propongo una mia soluzione anch'essa basata su una convalida dati come quella di Cromagno (ciao Tore) ma senza formule sfruttando il VBA.

    Fai sapere se era questo quello che volevi.

    Alfredo





  • di cromagno data: 25/11/2015 16:26:53

    Ciao Alfredo



  • di alfrimpa data: 25/11/2015 16:56:37

    In verità qualche formuletta l'ho usata anch'io ma niente a che vedere con le tue "terribili"

    Alfredo




  • Rotte clienti
    di Kinki (utente non iscritto) data: 25/11/2015 18:13:29

    Ottimo ragazzi !!!

    Era quello che volevo però mi occorre avere tutte le informazioni non solo la data e il prezzo finale ma tutta la riga contenente le info relative (Impresa, tel, referente.. etc) per tracciare per bene il servizio di trasporto effettuato !!! Forse mi sono espresso mail perdono....

    Per Alfredo riesci a farmi anche questa modifica? Per il resto dovrebbe girare tutto!!!





  • di alfrimpa data: 25/11/2015 18:22:17

    Ciao kinki

    Io ho predisposto le cose in maniera tale che vengano estratte tutte le informazioni presenti.

    Se nell'output mancano vuol dire che mancano nel database; se questo è pieno non avrai "buchi".

    Alfredo





  • di cromagno data: 25/11/2015 18:47:35

    Ciao kinki,
    non so il perchè ma il tuo file, alla minima modifica mi manda in crash excel

    Se vuoi tutti i dati, la formula che prima ti avevo detto di mettere in F14, mattila in A14, ma togli il riferimento assoluto al primo argomento della funziona indice.
    Quindi nella cella A14 scriverai così:

    =SE.ERRORE(INDICE('Data Base vecchi clienti'!A:A;PICCOLO(SE.ERRORE((1/('Data Base vecchi clienti'!$B:$B=$F$10)>0)*(1/('Data Base vecchi clienti'!$C:$C=$G$10)>0)*RIF.RIGA($A:$A);"");RIF.RIGA(A1)));"")

    e confermala con CTRL+MAIUSC+INVIO.
    Dopo copia la cella A14 in basso e a destra.

    Naturalmente alla fine ti formatterai la tabella e le celle a seconda del contenuto.


  • Rotte clienti
    di kinki (utente non iscritto) data: 25/11/2015 22:39:04

    Per Cromagno e Alfredo nel provare mi sono accorto di un errore, scusate ma solo provando riesco a vederli.

    Nelle tendine ci devono essere le città che ogni volta possono aggiungersi. Facendo una prova ma non se se dipende dal mio xls, se io sostituisco o aggiungo una riga nuove rotte, la tendina non mi si aggiorna.

    Ad esempio se io domani ho un Molfetta Rimini la tendina non mi si aggiorna. Le voci dovrebbero avere un estensione illimitata così da non aver problemi.






  • di cromagno data: 25/11/2015 22:44:13

    Ciao kinki,
    nella mia proposta sicuramente non sei tu che sbagli... non ho proprio considerato il fatto di aggiornare l'elenco perchè pensavo che nel file originale avessi già un elenco con tutte le città possibili.

    Non è complicato, ma con il tuo file non riesco a lavorarci (come detto prima mi va in crash)...
    Proverò a crearne uno simile, ma non so se adesso ho il tempo di farlo.



  • di alfrimpa data: 25/11/2015 22:49:35

    Neanch'io avevo previsto un elenco dinamico Tore.

    Se tu hai problemi domani lo faccio io tanto, come ben sai, è una cosa che si fa in un attimo.

    Alfredo





  • di cromagno data: 26/11/2015 00:43:03

    Ciao Alfredo,
    ho provato e riprovato ma niente... sempre crashing...
    Domani provo a rimettere excel 2010, il 2013 mi ha stancato con tutti i suoi problemi (non voglio nemmeno pensare al 2016)


  • Rotte clienti
    di kinki (utente non iscritto) data: 26/11/2015 07:28:36

    Ragazzi non dovete lavorarci di notte... ehe hhehe

    Fate con calma



  • di alfrimpa data: 26/11/2015 09:54:12

    Ciao Kinki.

    Non ho lavorato di notte ma di buon mattino

    Ti allego nuovo file (kinki1.xlsm) dove ho apportato le seguenti modifiche:

    1) Ho unificato l'elenco delle destinazioni (due mi sembravano superflue)
    2) Ho reso dinamiche le tendine nel senso che se aggiungi nuove destinazioni queste si adeguano automaticamente.
    3) Se inserisci una nuova destinazione l'elenco di queste verrà ordinato automaticamente per ordine alfabetico.

    Solo una considerazione (magari per il futuro): se le destinazioni dovessero essere molte le tendine della Convalida Dati potrebbereo essere "scomode" perché ti costringono a scorrere tutto l'elenco.

    In tali casi è forse preferibile utilizzare delle combobox che hanno il vantaggio, quando inserisci una lettera di posizionarsi sul primo elemento che inizia per la lettera digitata evitando di dover fare lo scorrimento (o quanto meno ridurlo).

    Ma magari a questo penseremo poi.

    Qui sotto vedi la macro inserita nel file.

    Fai più prove possibili e fammi sapere.

    Alfredo 
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ur As Long
    ur = Cells(Rows.Count, 1).End(xlUp).Row
    If Not Intersect(Target, Range("a1:a1000, f1")) Is Nothing Then
    Application.ScreenUpdating = False
    If Target.Column = 1 Then
    Range("a1").Select
    ActiveWorkbook.Worksheets("DataBasenuoviclienti").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("DataBasenuoviclienti").Sort.SortFields.Add Key:= _
            Range("A1:A" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("DataBasenuoviclienti").Sort
            .SetRange Range("A1:A" & ur)
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Else
        Worksheets("DataBasenuoviclienti").Range("E1:f1").Copy Destination:=Worksheets("DataBasevecchiclienti").Range("b2")
        Worksheets("DataBasevecchiclienti").Activate
        Worksheets("DataBasevecchiclienti").Range("l1:u1000").ClearContents
        Worksheets("DataBasevecchiclienti").Range("A7").Select
        Selection.AutoFilter
        Worksheets("DataBasevecchiclienti").Range("A7:J25").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Worksheets("DataBasevecchiclienti").Range( _
            "A1:J2"), CopyToRange:=Worksheets("DataBasevecchiclienti").Range("L1:U1"), Unique:=False
        Worksheets("DataBasenuoviclienti").Activate
        Application.ScreenUpdating = True
    End If
    End If
    End Sub





  • Rotte clienti
    di Kinki (utente non iscritto) data: 26/11/2015 12:42:38

    Grazie Alfredo !!!

    Sto provando il file, ti invio il un'ulteriore copia kinki1bis, prendiamo ad esempio Molfetta-Bari perchè non mi da tutte le rotte Molfetta-Bari e copia tutta la stringa fino alla casella Costo?

    Non so se dipende dal mio xls oppure qualcosa nei codici.




  • di alfrimpa data: 26/11/2015 12:48:50

    Scusa errore/dimenticanza mia.

    Te lo sistemo subito.

    Alfredo





  • di alfrimpa data: 26/11/2015 13:32:58

    Ti ho riallegato il file (Kinki2.xlsm) corretto.

    Alfredo




  • Rotte clienti
    di Kinki (utente non iscritto) data: 26/11/2015 15:00:55

    Alfredo sei grande adesso se creo un record va bene, ma non vedo ancora tutta la stringa mancano i campi in nota 1, nota 2 (che sono vuoti) e costo.




  • di alfrimpa data: 26/11/2015 15:20:14

    Scusa Kinki ma se i campi Nota1 e Nota2 sono vuoti nel foglio "Databasevecchiclienti" cosa vuoi che ci vada sul foglio "Databasenuoviclienti"?

    Devi riempire prima tutto il database dei vecchi clienti (cioè inserire nota1 e nota2) e poi vedrai che saranno riportate anche quelle.

    E te lo avevo detto anche prima.

    Questo mi fa pensare che (non tu ma tutti) non riflettiate sulle soluzioni che vi vengono proposte e che al primo intoppo vi bloccate. Solo approfondendo quanto vi viene proposto riuscirete veramente a trarre
    tutto il beneficio dall'aiuto che vi viene dato.

    Alfredo

    P.S. Per il costo mancava una formula che ho aggiunto (vedi file Kinki3.xlsm)




  • Rotte clienti
    di Kinki (utente non iscritto) data: 26/11/2015 16:43:53

    Grazie Alfredo !!!

    Si mi sono spiegato male io... il file non te l'ho rimandato completo dei campi nota per non creare confusione...



    Ottimo lavoro cmq ragazzi... spero ma credo che giri tutto adesso !!!




  • di cromagno data: 26/11/2015 18:48:56

    Ciao a tutti,
    @Alfredo
    in ogni caso ritengo che la tua soluzione in VBA sia più lungimirante



  • di alfrimpa data: 26/11/2015 19:02:54

    Ma no Tore anche se in VBA è un banale Filtro Avanzato con copia dati in altra parte del foglio.

    Tra l'altro oltre il 50% del codice che scrivo proviene dal Registratore Macro che poi riadatto e si vede pure perchè se vedi nella seconda parte della macro avrei dovuto utilizzare un With....End With che mi è sfuggito.

    Come vedi nulla di complicato e facilmente realizzabile da chiunque metta un po' d'impegno.

    Alfredo