Condividi:        

CORTESEMENTE - UNA MACRO

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

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 21/10/13 15:37

Penso che tu possa evitare di inserire quel codice di pulizia (la macro già dovrebbe farlo da sé)
ma semplicemente non devi copiare la riga (la macro "Tovaspia" copiava dalla colonna A alla colonna P)
ma ridurre il numero di colonne da copiare,
riporto la riga codice da modificare
Codice: Seleziona tutto
           If VNA(NVR) = Ws2.Cells(RR1, 3).Value And Trim(Ws2.Range("N" & RR1).Value) <> "Sto" Then  '<<<<< esistente
                Rows(RR1 + 1 & ":" & RR1 + 1).Insert Shift:=xlDown  '<<<<< esistente
                Ws2.Range("A" & RR1 & ":P" & RR1).Copy Destination:=Ws2.Range("A" & RR1 + 1) '<<< esistente da modificare la colonna "P" con "O" o "N"
                Application.CutCopyMode = False '<<< esistente

In questo modo non viene copiato nulla che sia in colonna P
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 22/10/13 00:42

Ti ringrazio e vado a verificare quanto hai postato.

Intanto, ti stavo scrivendo..........................


Ciao Flash, non so come dirlo, ma anche a costo di prendermi qualche rimprovero lo faccio ugualmente; meglio ora che hai ancora mente lucida su questo lavoro.

Non faccio tutta la cronologia dei post che si sono susseguiti; ero più che convinto di poter fare diversamente per ottenere i risultati nelle colonne (S-T-U) e anche perché questo lavoro era già piuttosto complesso fino alla colonna “P” che hai invece risolto superlativamente!
Purtroppo non è andata come prevedevo e questi valori in (S-T-U) e compreso la colonna “R”, sono essenziali ai fini di un confronto con gli “Storici”. Chiedo se è fattibile inserirli nella macro (TrovaNS), quella che ora processa la colonna “R”.

Nel foglio che allego insieme a un’immagine, ho inserito manualmente alcuni risultati che spiego:

https://dl.dropboxusercontent.com/u/182 ... T-U%29.PNG

https://dl.dropboxusercontent.com/u/182 ... 50%20.xlsm

R9 = gruppo 2 (quello che ora fa la macro in questa colonna).

S9 = ritardo minimo del gruppo (colonna J) = 12.
T9 = ritardo massimo del gruppo (colonna J), in questo caso = 23.
U9 = distanza o differenza che intercorre (sempre in colonna J) dal più grande al più piccolo del gruppo = 11.

Segue un gruppo 4 spie ripetute in R13 dove si hanno i seguenti valori:

S13 = ritardo minimo del gruppo (colonna J) = 14.
T13 = ritardo massimo del gruppo (colonna J), in questo caso = 68.
U13 = distanza o differenza che intercorre (sempre in colonna J) dal più grande al più piccolo del gruppo = 54 etc.

Le spie univoche (1) ovviamente non vanno considerate; vi è un unico ritardo (J).

La condizione da porre per queste colonne (S-T-U) quindi anche "R" che già svolge è:

Medesima ruota, colonna “B”.
Medesimo numero spia colonna “C”.
Medesima cinquina, colonne “D:H”.

A ogni cambio di estrazione quindi, si lancerà prima la macro A-P (J1) che aggiorna tutti i dati in queste colonne.
Poi si lancerà la macro R (L1) che aggiorna i dati di (R-S-T-U).

Ho davvero finito! Sperando tu accolga ancora una volta e con benevolenza questa mia.

Un caro saluto.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 23/10/13 10:56

Codice: Seleziona tutto
Sub TrovaNS()
Set Ws2 = Worksheets("Attuali")
UR = Ws2.Range("B" & Rows.Count).End(xlUp).Row
Ws2.Range("R8:U" & UR).ClearContents
MaxR = 0
ContaS = 1
For RR = 8 To UR
RuS1 = Trim(Ws2.Range("B" & RR).Value) & Trim(Ws2.Range("C" & RR).Value)
RuS2 = Trim(Ws2.Range("B" & RR + 1).Value) & Trim(Ws2.Range("C" & RR + 1).Value)
If RuS1 = RuS2 Then
If MaxR = 0 Then
MioMaxR = Ws2.Range("J" & RR).Value
MaxR = 1
End If
MinR = Ws2.Range("J" & RR + 1).Value
ContaS = ContaS + 1
Else
MaxR = 0
If ContaS > 0 Then
    Ws2.Range("R" & RR).Value = ContaS

    If ContaS > 1 Then
        Ws2.Range("S" & RR).Value = MinR
        Ws2.Range("T" & RR).Value = MioMaxR
        Ws2.Range("U" & RR).Value = MioMaxR - MinR
    End If
    ContaS = 1
End If
End If
Next RR
End Sub


Lucio Peruggini ha scritto:Ho davvero finito!

Io lo spero ma non ci credo :D
ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 23/10/13 15:46

Che dirti Flash: semplicemente GRANDIOSO QUESTO LAVORO!

Credo proprio di aver finito................... mi auguro.

GRAZIE DI CUORE[img][img]http://s16.postimg.org/r6919o8bl/image.jpg[/img][/img]
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 25/10/13 11:37

https://dl.dropboxusercontent.com/u/182 ... 50%20.xlsm

Ciao Flash, non è un’aggiunta oppure nuova modifica ma vi è qualcosa che non funge bene.

Se ricordo bene, avevi già dall’inizio posto una condizione alla macro (TrovaAgg) che,
nel caso la colonna “L” fosse già stata elaborata, la macro non ripeteva il processo.
Orbene, questa condizione funziona solamente alla 8751; andando avanti e già dalla successiva, non funziona più. Infatti e dopo elaborazione, se si clicca ancora sulla la medesima, aggiunge altre righe che ovviamente sarebbero ripetute.

Questo fattore è molto importante: per sbaglio e pensando che tutto sia in quadro, si aggiungerebbero righe sbagliate (doppioni).

Ho anche provato (ero all’ultima estrazione) a riprendere un foglio salvato in precedenza alla 8757 per non tornare sempre alla 8750 e, nel lanciare la macro, ha aggiunto un bel po’ di righe doppioni.

Puoi gentilmente vedere se si riesce a risolvere?

Grazie e buona giornata.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 27/10/13 02:52

A me non risulta
se hai già processato il concorso 8751 e clicchi di nuovo non avverrà nulla
si avrà un nuovo aggiornamento solo se il concorso è superiore a 8751 e mai inferiore o uguale
quindi secondo me stai facendo un po' di confusione altrimenti dimostrami come accade ciò che dici

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 27/10/13 17:20

Flash30005 ha scritto:A me non risulta
se hai già processato il concorso 8751 e clicchi di nuovo non avverrà nulla
si avrà un nuovo aggiornamento solo se il concorso è superiore a 8751 e mai inferiore o uguale
quindi secondo me stai facendo un po' di confusione altrimenti dimostrami come accade ciò che dici

ciao



Infatti avevo affermato:

Orbene, questa condizione funziona solamente alla 8751; andando avanti e già dalla successiva, non funziona più. Infatti e dopo elaborazione, se si clicca ancora sulla la medesima, aggiunge altre righe che ovviamente sarebbero ripetute.


Supponiamo di essere andati avanti inserendo altre estrazioni e di essere arrivati alla 8754 che puntualmente abbiamo processato.
Orbene, cliccando ancora sulla macro non dovrebbe più implementare nulla ma non è così: inserisce ancora una volta le medesime righe di prima creando per l'appunto dei doppioni.

Sbaglio o non dovrebbe più ripartire, come nel caso della 8751?

Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 28/10/13 03:12

Si infatti ho notato questo inconveniente e capito il motivo
in "TrovaAgg" sostituisci questa riga codice
Codice: Seleziona tutto
If Ws2.Cells(RR1, 12).Value < Ws1.Range("A2").Value Then

con questa
Codice: Seleziona tutto
If Ws2.Cells(RR1, 12).Value < Ws1.Range("A2").Value And Trim(Ws2.Cells(RR1, 12).Value) = "Att" Then

Non dovresti avere più problemi

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 28/10/13 12:02

ORA SI DIREBBE CHE E' OK!
Grazie Flash, buona giornata.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 30/10/13 02:47

https://dl.dropboxusercontent.com/u/182 ... PROVE.xlsm

Ciao Flash, mi spiace importunare ancora ma con l'ultima stringa immessa

Codice: Seleziona tutto
If Ws2.Cells(RR1, 12).Value < Ws1.Range("A2").Value And Trim(Ws2.Cells(RR1, 12).Value) = "Att" Then   '<<< SOSTITUITA STRINGA - If Ws2.Cells(RR1, 12).Value < Ws1.Range("A2").Value Then


e aggiornando l'estrazione successiva la 8762,
non funziona più; rimane tutto fermo all'estrazione precedente.

Allego foglio prove.

Notte e grazie
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 31/10/13 02:36

Se mi dici così non capisco cosa intendi
Cosa dovrebbe aggiornare?
Se continui a mettere immondizia nel campo "Att"
controlla perché non è un semplice testo con spazi prima e dopo ma ben altro.
Un giorno mi spiegherai dove vai a prendere questi dati: non ho mai visto nulla di peggio!

Al momento puoi risolvere sostituendo quella riga codice con questa
Codice: Seleziona tutto
If Ws2.Cells(RR1, 12).Value < Ws1.Range("A2").Value And Trim(Trim(Ws2.Cells(RR1, 14).Value)) <> "Sto" Then

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 31/10/13 11:58

Buona giornata

Se mi dici così non capisco cosa intendi
Cosa dovrebbe aggiornare?


Perdona ma sono io che non capisco la tua domanda. Come sarebbe (cosa deve aggiornare?).
Quello che ha sempre aggiornato dalla 8750 alla 8761; vale a dire tutto il foglio. Con la 8762 (ultima inserita) e quindi dopo aver applicato l'ultima stringa, non ha più funzionato.


Se continui a mettere immondizia nel campo "Att"
controlla perché non è un semplice testo con spazi prima e dopo ma ben altro.
Un giorno mi spiegherai dove vai a prendere questi dati: non ho mai visto nulla di peggio!


Rispondo solamente dicendo che il foglio (ultimo inviato), non è altro che una copia dell'originale. Non ho aggiunto niente ne tanto meno fatto chissà cosa; mi sono limitato semplicemente a aggiornare le estrazioni e quindi lanciare le due macro.

Ok, sostituisco la stringa e vediamo come va. Grazie
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 31/10/13 12:26

Ciao Flash, per ora ha funzionato bene.
Ha aggiornato, inserendo quattro righe (nuove spie aggiunte) e quindi a anche aggiornato tutto il foglio come avrebbe dovuto fare alla 8761; sfaldando due ambi su Firenze e uno su Bari.
Ho anche provato a far ripartire la macro e, come giusto che sia, non ha processato nulla.

Stasera con la nuova estrazione vedrò cosa succede.
Grazie
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 31/10/13 13:17

Lucio Peruggini ha scritto:Rispondo solamente dicendo che il foglio (ultimo inviato), non è altro che una copia dell'originale. Non ho aggiunto niente ne tanto meno fatto chissà cosa; mi sono limitato semplicemente a aggiornare le estrazioni e quindi lanciare le due macro.

L'unica cosa che ho appurato è che la colonna N, che contiene la stringa "Att", in realtà contiene campi sporchi uno a sinistra e due a destra visivamente si rileva una stringa di questo tipo " Att " ma in realtà ai lati della stringa non ci sono spazi ovvero c'è uno spazio all'estrema destra mentre prima di "A" e dopo di "t" c'è il carattere Chr(160) che non è appunto uno spazio.
Avrei trovato anche la maniera di "ripulire" l'intera colonna ma prima vorrei sapere dove prendi i dati perché è possibile avere nuovi campi sporchi ad ogni aggiornamento.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 31/10/13 17:22

Ciao Flash e come sempre, i dovuti ringraziamenti per il grande aiuto che stai apportando a questa mia ricerca che, inizialmente sembrava una passeggiata ma andando avanti mi sono accorto della grande complessità intrinseca, nascosta.

Vi è però un passaggio o variante (non so come definirlo) nella macro “TrovaAgg” cui non avevo probabilmente posto la dovuta attenzione.

Si tratta della colonna “J”.
In pratica i valori che trattano la ripetizione della “Spia” e per l’esattezza i gruppi che strada facendo si formano oppure aumentano in quantità.

In realtà, il ritardo della prima spia deve rimanere invariato cioè fermo a quell’estrazione altrimenti il valore della colonna “U” che fa la differenza fra la prima e l’ultima spia uscita del gruppo restituisce sempre il medesimo risultato.

Dalle tre immagini allegate è facile comprendere quanto detto.

https://dl.dropboxusercontent.com/u/182 ... 208750.PNG

https://dl.dropboxusercontent.com/u/182 ... 208751.PNG

https://dl.dropboxusercontent.com/u/182 ... 208752.PNG


Cerco di spiegarlo con il primo gruppo (spia dieci su Bari).
La differenza fra la prima e la seconda spia (colonna U 9) è =11, estrazione 8750.
Orbene, alla 8751 questo valore e poiché nulla è successo, deve essere =12; e in quella successiva deve aumentare a =13 etc.

Questa postilla mi era proprio sfuggita; chiedo scusa!

Per quanto riguarda il foglio da cui attingo questi dati, è quello che hai nel file ultimo che ho inviato; (Prove).
Nominato come (Att. Originali 8750.) e dal quale sto sempre partendo per i vari passaggi e controlli da un’estrazione all’altra.
Anche ora, infatti, con l’ultima stringa corretta, sono tornato indietro a questa estrazione e, dalla successiva 8751 inizio le verifiche che per il momento sono corrette; tutto funziona bene.
Solamente mi sono accorto di questa mancanza, peraltro importantissima; perché definisce il ritardo massimo di un gruppo. A oggi, infatti (estrazione 8762) quel valore è rimasto sempre =11 ma deve essere =22. Questo per tutti i gruppi
(colonna R), prima spia.

Grazie Flash e buona serata
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 31/10/13 17:49

Ciao Flash, chiedo scusa non tener conto di quanto ho postato riguardo la colonna "U", ho preso una svista; è OK!

L'ultima parte invece, quella che riguarda il Foglio "attuali originali" e giusto quanto ti ho detto.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 31/10/13 22:21

Ok! Si direbbe tutto a posto. Ho aggiornato alla 8763 e non ha creato intoppi.
Ciao e ancora grazie
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "CORTESEMENTE - UNA MACRO":


Chi c’è in linea

Visitano il forum: Nessuno e 41 ospiti