Condividi:        

perfezionare questa 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

perfezionare questa macro

Postdi papiriof » 25/02/23 19:02

Vorrei perfezionare questa macro nella prima parte dove ripeto 90 volte l'operazione di selezionare mi spiego( spero :( )

Adesso seleziono l'intervallo A2:F2 che è parte dell'intervallo (denominato:pippo)A2:F91 e clicco sul bottone per avviare la macro
' il resto penso sia leggibile
' poi ripeto : seleziono l'intervallo A3:F3 e riclicco sul bottone della macro
'.... e cosi via fino all'intervallo A91:F91
Na bella rottura di ......
chiedo come completare con un ciclo for in modo che cliccando sul bottone mi accodi tutte e 90 selezioni in una Volta ??
Chiedo scusa per non allegare il file , ma ogni volta vado in crisi ad es ho provato il primo suggerimento ma l'anti virus ha detto che il sito mi danneggiava seriamente il computer!!! Un altro sito che non bisognava registrarsi non era vero ci mancava che mi chiedesse pure se ero vaccinato!! Prima lo facevo adesso (per me scarso) è diventato tutto più invadente.
Sub Copia6()
'
' Copia6ina Macro
'
Selection.Copy 'seleziono una riga es : A2:F2 appartenente all'intervallo (nominat:pippo)A2:F91
Range("o1").Select 'mi sposto su O1 dove come si vede nell'istruzioni seguenti incollerò l'intervallo che ho precedentemente 'selezionato
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'in N1 è presente un dato
Range("N1:T1").Select ' seleziono l'intervallo completo N,O,P,Q,R,S,T 1
Selection.Copy 'quell'intervallo che ho precedentemente selezionato lo faccio accodare su quello che poi diventera....
Range("x65000").End(xlUp).Offset(1, 0).Select 'il database dei risultati
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

End Sub
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Sponsor
 

Re: perfezionare questa macro

Postdi Anthony47 » 26/02/23 09:14

Almeno una "immagine" dei dati? La procedura: viewtopic.php?f=26&t=103893&p=605488#p605488
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: perfezionare questa macro

Postdi papiriof » 26/02/23 14:50

ecco a te il lik per l'immagine:

https://postimg.cc/K45Gpmzd

Grazie mille
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: perfezionare questa macro

Postdi Anthony47 » 26/02/23 19:22

Sperando di aver capito bene, prova
Sub Copia666()
Dim I As Long
'
For I = 1 To Range("pippo").Rows.Count
Range("O1:T1").Value = Range("pippo").Cells(I, 1).Resize(1, 6).Value
Cells(Rows.Count, "X").End(xlUp).Offset(1, 0).Resize(1, 7).Value = Range("N1:T1").Value
Next I
End Sub
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: perfezionare questa macro

Postdi papiriof » 26/02/23 20:51

Perfetto!! Ho solo aggiunto all'izio la cancellazione dell'intervallo x2:ad94 dove si vanno ad accodare le 90 selezioni perchè se cambio intervallo da esaminare temevo che accodava a partire da x93 .
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: perfezionare questa macro

Postdi papiriof » 27/02/23 12:15

Anthony47 ha scritto:Sperando di aver capito bene, prova
Sub Copia666()
Dim I As Long
'
For I = 1 To Range("pippo").Rows.Count
Range("O1:T1").Value = Range("pippo").Cells(I, 1).Resize(1, 6).Value
Cells(Rows.Count, "X").End(xlUp).Offset(1, 0).Resize(1, 7).Value = Range("N1:T1").Value
Next I
End Sub

La macro suddetta suggeritomi da Lei l'ho trasformata così come detto in precedenza ho aggiunto la cancellazione dei dati
E IN UN SECONDO MOMENTO HO AGGIUNTO LA POSSIBILITàDI ORDINARE DAL PIU GRANTDE AL PIù PICCOLO LA PRIMA COLONNA
LA MACRO ADESSO PUR FACENDO IL DOVUTO è LENTISSIMA !NELL'ORDINE DI UNA DECINA DI SECONDI MENTRE FINO ALLA PRIMA CORREZIONE ERA ISTANTANEA!!! DOVE HO SBAGLIATO??
Sub Copia666()
Dim I As Long
Range("X2:AD94").Select
Selection.ClearContents

For I = 1 To Range("pippo").Rows.Count
Range("O1:T1").Value = Range("pippo").Cells(I, 1).Resize(1, 6).Value
Cells(Rows.Count, "X").End(xlUp).Offset(1, 0).Resize(1, 7).Value = Range("N1:T1").Value
Next I
Range("X2:AD94").Select
ActiveWorkbook.Worksheets("Foglio1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Foglio1").Sort.SortFields.Add2 Key:=Range("X2:X94" _
), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Foglio1").Sort
.SetRange Range("X1:AD94")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply

End With

End Sub
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: perfezionare questa macro

Postdi Anthony47 » 27/02/23 17:36

Ma se l'ordinamento lo fai a mano, quanto dura?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: perfezionare questa macro

Postdi papiriof » 27/02/23 18:21

Anthony47 ha scritto:Ma se l'ordinamento lo fai a mano, quanto dura?

Scusa non capisco, quei 2 pezzi di codice (in rosso) io li ho inglobati nella tua macro "Copia666" .
Li ho generati coni il registratore : ora mentre per le prime 2 righe di codice (in rosso) una volta aggiunte girava velocemente ma naturalmente non ordinava allora ho registrato un'altra macro per l'ordinameto della colonna "X",automaticamente (Macro1) le istruzioni ovvero il codice l'ho copiato e aggiunto (quello in rosso)in fondo alla tua macro "Copia666" . Aquesto punto faccio girare la macro e va lenta. Ho provato da poco invece di aggiungere tutto le istruzioni della Macro1 di toglierle e mettere direttamente Macro1.....
E va velocissima !!! :o :o , non ho capito, non dovrebbe essere la stessa cosa???
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: perfezionare questa macro

Postdi Anthony47 » 27/02/23 18:58

Ho provato da poco invece di aggiungere tutto le istruzioni della Macro1 di toglierle e mettere direttamente Macro1.....
E va velocissima !!! :o :o , non ho capito, non dovrebbe essere la stessa cosa???

Si, anche a me sembra che dovrebbe essere la stessa cosa; ma a volte devi prendere atto che "dovrebbe essere così ma per funzionare bisogna fare cosà"

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

Re: perfezionare questa macro

Postdi papiriof » 27/02/23 19:25

:) :) Come si dice il computer ha sempre ragione!!
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23


Torna a Applicazioni Office Windows


Topic correlati a "perfezionare questa macro":


Chi c’è in linea

Visitano il forum: Nessuno e 47 ospiti