Condividi:        

Click per copiare una riga tabella

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

Click per copiare una riga tabella

Postdi marte1503 » 27/12/22 21:03

Ciao a tutti

è possibile creare una macro che con un CLICK sulla riga che mi interessa copia l'intera riga di una tabella e la incolla in un altro foglio con il medesimo layout?

Preciso che la riga non sempre si trova nella stessa posizione, ma può trovarsi in un punto qualsiasi della tabella.

Grazie per l'aiuto
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Sponsor
 

Re: Click per copiare una riga tabella

Postdi Anthony47 » 28/12/22 00:49

Si, presumo si possa fare. Ma sarebbe opportuno avere più informazioni sul layout dei due fogli, almeno tramite una immagine, meglio ancora con un file dimostrativo.
Per le informazioni su come pubblicare una immagine o un file guarda qui: viewtopic.php?f=26&t=103893
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Click per copiare una riga tabella

Postdi marte1503 » 28/12/22 13:52

Ciao Anthony, come al solito grazie per l'aiuto

Anche nelle macro che ho creato sono presenti nomi che non mi sento autorizzato a postare, spero di poter contare lo stesso sul tuo aiuto, quindi cercherò di essere il più breve e chiaro possibile per non farti perdere (spero) troppo tempo.

- La Tabella ha una Larghezza di 15 colonne, ha origine in Cella B12 di foglio 1 e termina in Cella P12

- La lunghezza non è fissa perché tramite Macro aggiungo una nuova riga sotto al nome delle colonne ogni volta che archivio un nuovo macchinario, potenzialmente potrebbe avere anche un centinaio di righe.

- la mia intenzione sarebbe quella di posizionarmi su una riga qualsiasi di questa Tabella e con un click del mouse trasferire l'intera Riga in Foglio2 nell'intervallo B9:P9 eliminandola dalla Tabella

Grazie
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi marte1503 » 28/12/22 14:01

...Scusa, mi è appena venuto in mente un dettaglio che sarebbe bello poter inserire..

Prima che la macro parta nel suo ciclo, quindi appena dopo aver premuto il pulsante del mouse, sarebbe opportuno che lanciasse un messaggio di avviso, del tipo "Sicuro di aver selezionato la riga corretta?"
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi Anthony47 » 28/12/22 19:57

Humm... Mi sembra strano che la riga debba essere copiata in una posizione fissa di Foglio2 (così che la seconda riga spostata andrà a sovrapporsi alla prima, di fatto cancellandola).
Comunque si potrebbe usare l'evento Click-tasto-Destro per avviare l'operazione:
-tasto destra sul tab col nome del foglio di partenza; scegliere Visualizza codice per aprire l'editor delle macro nella posizione giusta
-copiare il seguente codice e incollarlo nell'are di codice "vuota" dell'editor delle macro (se e' presente altro codice allora pubblicalo per verificarne la compatibilità con questo nuovo)
Codice: Seleziona tutto
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'
If Target.Column > 1 And Target.Column < 17 Then
    Cells(Target.Row, "B").Resize(1, 15).Select
    Cancel = True
    rispo = MsgBox("Spostare la riga selezionata su Foglio2 e cancellarla da questa posizione?" & vbCrLf _
       & "OK per confermare, ANNULLA per annullare  ", vbOKCancel)
    If rispo <> vbOK Then
        Target.Select
        Exit Sub
    End If
    Selection.Copy
    Sheets("Foglio2").Range("B9").PasteSpecial xlPasteValues
    Sheets("Foglio2").Range("B9").PasteSpecial xlPasteFormats
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
End If
End Sub

Adesso torna su excel, fai click col tasto dx del mouse su una cella della tabella e vedi l'effetto che fa.
La macro copia su Foglio2 solo Valori e Formati; altre informazioni (formule, note, convalide, ...) verranno perdute.

Ricorda quanto ho detto prima sull'area di destinazione: poiche' tutto finisce in B9:P9 la seconda riga trasferita si sovrappone alla precedente, di fatto perdendola; quindi fai le prove su una copia del file e dimmi se e' giusto copiare sempre su B9:P9 o bisogna adottare una tattica diversa.

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

Re: Click per copiare una riga tabella

Postdi marte1503 » 28/12/22 21:31

Ciao Anthony,

l'intenzione di trasferire la riga sempre nello stesso posto è giusta per come ho impostato il mio lavoro, è solamente una posizione provvisoria, una volta RILAVORATI i dati nella riga di destinazione, costruirò un'altra macro con il registratore che sposterà nuovamente la riga (questa volta definitiva) in un'altra tabella (anch'essa definitiva) e terminerà l'operazione ripulendo i dati precedentemente spostati con la tua macro preparando la riga per il successivo ciclo.

veniamo alla tuo codice

- ho copiato la macro nel vba del foglio interessato, dove al momento non ci sono altre macro.

- Clickando in con il pulsante DX si attiva correttamente la finestra che mi avvisa come ti avevo chiesto, ma confermando :

- La riga viene incollata a destinazione senza riportare alcun tipo di valore, resta completamente vuota in tutto l'intervallo
- Cancella i bordi neri che circondano le celle interessate
- Cancella la formattazione condizionale presente nella Cella G8
- Rimuove la centratura dei dati all'interno delle celle

- Se riesci a risolvere il primo dei problemi che ti ho scritto, per gli altri dovrei cavarmela da solo registrando bordi formattazioni e centrature con il registratore di macro aggiungendo le informazioni alla fine del tuo codice.

Invece tornando alla tabella,

- Noto che la riga è ancora al suo posto e non è stata eliminata.
- Se provo a clickare nuovamente sulla stessa riga o su un'altra, la macro non si attiva più e compare il solito menù che si attiva premendo il tasto destro
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi Anthony47 » 29/12/22 13:12

Clickando in con il pulsante DX si attiva correttamente la finestra che mi avvisa come ti avevo chiesto, ma confermando :
- La riga viene incollata a destinazione senza riportare alcun tipo di valore, resta completamente vuota in tutto l'intervallo
- Cancella i bordi neri che circondano le celle interessate
- Cancella la formattazione condizionale presente nella Cella G8
- Rimuove la centratura dei dati all'interno delle celle

Ti avevo scritto che la macro copiava solo valori e formati numeri, mi sembrava l'ipotesi migliore da realizzare

Che non scriva niente mi lascia perplesso; così pure il fatto che non rimuova la riga dalla tabella originale (almeno senza nessun messaggio di errore), e che la macro (sul foglio di partenza) non si attivi piu'

Questa versione di codice fa la copia di tutto (quindi anche bordi, formattazioni condizionate e altro), ma incolla i valori e non le formule:
Codice: Seleziona tutto
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'
If Target.Column > 1 And Target.Column < 17 Then
    Cells(Target.Row, "B").Resize(1, 15).Select
    Cancel = True
    rispo = MsgBox("Spostare la riga selezionata su Foglio2 e cancellarla da questa posizione?" & vbCrLf _
       & "OK per confermare, ANNULLA per annullare  ", vbOKCancel)
    If rispo <> vbOK Then
        Target.Select
        Exit Sub
    End If
    Selection.Copy Sheets("Foglio2").Range("B9")
    Sheets("Foglio2").Range("B9").Resize(1, 15).Value = Selection.Value
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
End If
End Sub

Prova e vedi come si comporta...
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Click per copiare una riga tabella

Postdi marte1503 » 29/12/22 13:56

Ciao Anthony,
ho appena provato il tuo nuovo codice

Questa versione esegue quasi tutto in maniera corretta:

- Trascrive l'intera riga riportando correttamente tutti i valori e mantiene anche i bordi e le formattazioni.
- Avvisa con finestra di conferma
- Elimina la riga selezionata dalla Tabella
- A differenza di prima non termina nel Foglio di destinazione ma rimane nel Foglio della Tabella

- Unico grosso problema esegue la procedura una volta soltanto, come nella prima versione, se provo a cickare di nuovo con tasto DX
non riesegue la macro ma attiva come nella prima versione il classico menù del tasto DX del mouse
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi marte1503 » 29/12/22 13:58

Potrebbe dipendere da qualche impostazione strana che ho settato io nelle impostazioni?
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi marte1503 » 29/12/22 14:24

Guardando bene,
ho notato che il tasto dx del mouse funziona correttamente solo dopo aver attivato la tua macro e in un altro foglio che non ha nessun collegamento o similitudine con il foglio dove ho inserito la tua macro

Posto le macro presenti in quest'altro foglio dove il mouse funziona in maniera corretta

Codice: Seleziona tutto
Sub Inserisce_la_x_con_click_mouse()

'
'  Inserisce_la_x_con_doppioclick_mouse

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'  Inserisce_la_x_con_doppioclick_mouse
CheckareaC = "C17:C23,E17:E23,G17:G23,I17:I23"
If Not Application.Intersect(Target, Range(CheckareaC)) Is Nothing Then
    If Target = "" Then
        Target = "x"
    Else
        Target.ClearContents
    End If
End If
Cancel = True
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Area As String, inArea As Range, myC As Range
   
'Se modifico la cella B4, B7, D7 Cancella le altre celle di immissione dati


Application.EnableEvents = False
If Target.Address = "$B$7" Then
    Range("D7, F7, H7, J7, B10, D10, B13,D13,F13,H10:J13").ClearContents
ElseIf Target.Address = "$D$7" Then
    Range("F7, H7, J7, B10, B13, D10, B13, D13, F13, H10:J13").ClearContents
ElseIf Target.Address = "$B$4" Then
    Range("D4,F4,B7,D7, F7, H7, J7, B10, D10, B13,D13,F13,H10:J13").ClearContents
   
   
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<MODIFICA
      ElseIf Target.Address = "$B$13" Then
    Range("D13,F13").ClearContents
End If



Application.EnableEvents = True
'
Area = "B7"     '<<< l'area da convertire in maiuscolo
Set inArea = Application.Intersect(Target, Range(Area))
If Not inArea Is Nothing Then
    Application.EnableEvents = False
    For Each myC In inArea
        If myC.Value <> "" Then
            myC.Value = UCase(myC.Value)
        End If
    Next myC
    Application.EnableEvents = True
End If


Dim mySeq As String, mySplit, inList

'Stabilisce in quale ordine si attiveranno le celle dopo aver premuto il pulsante INVIO

mySeq = "B4,D4,F4,B7,D7,F7,H7,J7,B10,D10,B13,D13,F13,H10,H10"
mySplit = Split(Replace(mySeq, " ", "", , , vbTextCompare), ",", , vbTextCompare)
inList = Application.Match(Target.Cells(1, 1).Address(0, 0), mySplit, False)
If Not IsError(inList) Then
    Range(mySplit(inList + 0)).Select
End If
'
End Sub


Il problema del non funzionamento del tasto DX esiste anche se provo ad aprire un nuovo foglio di Excel completamente vergine

provo nel frattempo a dare un'occhiata nei settaggi se trovo qualcosa di strano...
se ti viene in mente qualcosa che potrebbe inibire il tasto DX avvisami

Grazie
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi Ricky0185 » 29/12/22 14:33

Con questa macro Anthony mi risolse lo stesso problema. solo che invece di cancellare la cella Target la inseriva in coda nel Foglio2. Inserirla come da sue istruzioni nel Foglio1. Doppio Click sulla cella di colonna B12:B100 di Foglio1 (quanto sarà lunga la tua lista) e ti ritrovi l'intera riga su Foglio2 riga B6. Così facendo ogni volta che clicchi su Foglio1colonna B ti ricopia l'intera riga sempre su Foglio2 riga B6. Se togli gli apostrofi sulle ultime due istruzioni ti cancella l'intera riga su Foglio1 della cella su cui hai Doppio Cliccato. Meglio però che su Foglio2 te le incolli in sequenza, poi se non ti servono le cancelli manualmente.
Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [B12:B100]) Is Nothing Then Exit Sub
Cancel = True
rispo = MsgBox("Spostare la riga selezionata su Foglio2 e cancellarla da questa posizione?" & vbCrLf _
       & "OK per confermare, ANNULLA per annullare  ", vbOKCancel)
    If rispo <> vbOK Then
        Target.Select
        Exit Sub
    End If
ActiveCell.EntireRow.Copy Destination:=Worksheets("Foglio2").Range("A6") '.End(xlDown).Offset(1, 0)-Se togli l'apostrofo te le incolla in sequenza
'Application.CutCopyMode = False
'Selection.Delete Shift:=xlUp
End Sub

Macro di Anthony, che saluto, sempre al bacio.
Se hai problemi ti mando un file.
Ciao
R
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Click per copiare una riga tabella

Postdi marte1503 » 29/12/22 16:46

Ciao Ricky
Grazie per il tuo contributo, ma visto che Anthony è a un passo dal risolvere tutte le mie richieste continuo con la sua macro che è già perfettamente funzionante se non fosse per il problema che non riesegue il ciclo, e spero che riesca contemporaneamente a capire il problema legato al mouse.

grazie e Buone Feste
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi Anthony47 » 29/12/22 17:18

Credo che il problema stia nel dove hai posizionato la macro...

Tu hai un foglio A, in cui e' presente una tabella con i dati di partenza, e un Foglio2.
Vuoi poter selezionare una riga su foglio A, copiarla in Foglio2, e rimuoverla da foglio A.

La macro devi inserirla nel modulo delle macro associato al foglio A. Per questo:
-selezioni foglio A
-fai click col tasto dx del mouse sut tab col nome di foglio A, scegli "Visualizza codice"; si aprira' l'editor delle macro nella pagina giusta
-incolli il codice sull'area di codice di questa pagina

Per informazioni di base, guarda qui: viewtopic.php?f=26&t=103893&p=647675#p647675
In particolare il paragrafo "Per inserire una macro in un Modulo di classe"

Poiche' e' probabile che ora il codice sia inserito nella posizione sbagliata, guarda "Concetti di base"; poi apri l'editor delle macro (da Excel, premi Alt-F11); identifica il frame "Progetto - VBAProject" e al suo interno i vari "Moduli di classe" del file (dovresti averne 1 per ogni foglio piu' un'altro chiamato o QuestaCartellaDiLavoro oppure ThisWorkbook); espandi ognuno di questi moduli (dovrebbe bastare il doppioclick sul suo nome) e cancella tutte le macro che cominciano con Private Sub Worksheet_BeforeRightClick.
Successivamente inserisci il codice nel modulo giusto seguendo la procedura che ti ho dato (tasto dx sul tab col nome foglio)
Il codice si attivera' solo se fai "tasto dx" sul foglio a cui hai associato la macro in una colonna tra la B e la P; fuori da queste colonne il codice interviene ma non fa niente (quindi ti lascia col normale comportamento del tasto dx su una cella), mentre sugli altri fogli il codice non interviene proprio.

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

Re: Click per copiare una riga tabella

Postdi marte1503 » 29/12/22 18:31

Anthony, il problema resta, non funziona..
E' che mi dispiace abbandonare la cosa, vorrei sistemare il problema..

- Ho controllato i Moduli di Classe dei Fogli, in nessuno è presente una macro che comincia per Private Sub Worksheet_BeforeRightClick a parte quello dove voglio che ci sia (cioè Foglio "Macchine Libere")

- Vuoto anche "Questa_cartella_di_lavoro"

- Ho controllato anche i moduli standard, non esiste nemmeno lì una macro che comincia come sopra detto

- quello che mi lascia perplesso, (non parlando del mio programma): come mai se apro un Nuovo Foglio di Lavoro, quindi con solo un Foglio e nessuna macro presente, nè il tasto dx del mouse, nè il tasto dx del tappetino sul pc aprono il classico menù, è come se fossero disattivati...

- in alternativa, visto che ci sono problemi con il tasto DX possiamo provare con il doppio click sinistro come diceva Ricky e lasciare invariato il resto della macro che sembra funzionare perfettamente?
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi Anthony47 » 29/12/22 20:04

Secondo me hai qualche macro che si conclude in modo erroneo lasciando gli "eventi" disabilitati.

Quindi proteggiamo il nostro codice da interferenze esterne e vediamo che succede: sostituisci tutto il codice con quest'altro
Codice: Seleziona tutto
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'
If Target.Column > 1 And Target.Column < 17 Then
    Cells(Target.Row, "B").Resize(1, 15).Select
    Cancel = True
    rispo = MsgBox("Spostare la riga selezionata su Foglio2 e cancellarla da questa posizione?" & vbCrLf _
       & "OK per confermare, ANNULLA per annullare  ", vbOKCancel)
    If rispo <> vbOK Then
        Target.Select
        Exit Sub
    End If
    Application.EnableEvents = False        '**
    Selection.Copy Sheets("Foglio2").Range("B9")
    Sheets("Foglio2").Range("B9").Resize(1, 15).Value = Selection.Value
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    Application.EnableEvents = True         '**
End If
End Sub

Ho aggiunto le due istruzioni marcate **

Se vuoi usare l'evento DoubleClick, visto che la gestione di DoubleClick e RightClick e' analoga, basta sostituire l'attuale prima riga del codice con:
Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)


Se non funziona allora o mandi il pc a Lourdes oppure ti rassegni a preparare un file dimostrativo su cui fare le stesse prove

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

Re: Click per copiare una riga tabella

Postdi marte1503 » 29/12/22 20:40

Se non funziona allora o mandi il pc a Lourdes oppure ti rassegni a preparare un file dimostrativo su cui fare le stesse prove

Ciao

:lol: :lol:

Cavolo, sei davvero un bel fenomeno, hai risolto anche questa volta!

funziona tutto a meraviglia :D

Grazie davvero Anthony! :)
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi marte1503 » 29/12/22 20:53

Cavolo Anthony,
ancora un problema che spero sia risolvibile:

- la tua macro come ti ho detto prima funziona, ma va in errore se prima applico un filtro per restringere la ricerca...
- con tabella non filtrata tutto ok
- con tabella filtrata va in errore questa riga
Codice: Seleziona tutto
 Selection.Delete Shift:=xlUp
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi marte1503 » 29/12/22 21:05

Trovato un altro problema:

- la macro si attiva anche se clicko in una delle celle esterne alla tabella

- se premo tasto dx ad esempio in D1 si attiva
- idem se clicko su E50 (considera che la mia Tabella al momento ha un intervallo B12:P19
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Click per copiare una riga tabella

Postdi Anthony47 » 29/12/22 23:09

Per il click fuori tabella allora invece di testare la colonna testiamo l'appartenenza al "DataBodyRange" della tabella.

Per la storia del filtro, come il messaggio di errore ti dice, non e' possibile rimuovere righe su un foglio filtrato.
Si potrebbe cercare di identificare le colonne filtrate e i relativi criteri, rimuovere i filtri, rimuovere la riga, riapplicare i filtri.
Ma mi richiede un po' di tempo per i test; al momento ti propongo solo la versione che rimuove i filtri prima di rimuovere la riga lasciandoti pero' la tabella non filtrata:
Codice: Seleziona tutto
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim NomeTab As String
'
NomeTab = "Tabella1"        '<<< il nome assegnato alla tua tabella
'
If Not Application.Intersect(Target, Me.ListObjects(NomeTab).DataBodyRange) Is Nothing Then
'If Target.Column > 1 And Target.Column < 17 Then
    Cells(Target.Row, "B").Resize(1, 15).Select
    Cancel = True
    rispo = MsgBox("Spostare la riga selezionata su Foglio2 e cancellarla da questa posizione?" & vbCrLf _
       & "OK per confermare, ANNULLA per annullare  ", vbOKCancel)
    If rispo <> vbOK Then
        Target.Select
        Exit Sub
    End If
    Application.EnableEvents = False        '**
    Selection.Copy Sheets("Foglio2").Range("B9")
    Sheets("Foglio2").Range("B9").Resize(1, 15).Value = Selection.Value
    Application.CutCopyMode = False
    csel = Selection.Address
    If Target.ListObject.AutoFilter.FilterMode Then Target.ListObject.AutoFilter.ShowAllData
    Range(csel).Select
    Selection.Delete Shift:=xlUp
'    Selection.ClearContents
    Application.EnableEvents = True         '**
End If
End Sub

Controlla il nome della tabella nella riga marcata <<<, che corrisponda a quello usato nel tuo foglio

Oppure si potrebbe cancellare il contenuto della riga (invece che rimuovere la riga); in questo caso basta sostituire, nel codice originale, la riga Selection.Delete Shift:=xlUp con
Codice: Seleziona tutto
    Selection.ClearContents

Di tanto in tanto potrai fare un Sort della tabella, per far spostare in coda le righe cancellate

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

Re: Click per copiare una riga tabella

Postdi marte1503 » 30/12/22 15:46

Ciao Anthony,
ho fatto un po' di prove.. Ho una notizia bella e una brutta :lol:

partiamo dalla bella:

- la tua macro ultimo aggiustamento funziona benissimo, elimina la riga dalla tabella e la incolla nel foglio destinazione, ho solo modificato l'attivazione con il doppio click e ho aggiunto un comando ai piedi del codice per terminare nel Foglio destinazione.

- Grazie alle modifiche aggiunte ieri sera funziona solo nell'intervallo della Tabella trascurando gli spazi esterni -Perfetto!
- Si riattiva ogni volta che faccio doppio click e non si interrompe più -Perfetto!
- Adesso funziona anche con il foglio filtrato -Perfetto anche questo punto.

Direi che questa parte di programma è risolta
allego la macro finale per chi volesse dare un'occhiata

Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim NomeTab As String

'Questa Macro seleziona una riga in Tabella213 (contenente i dati Macchina(es. tipo pistone, tipo verniciatura ecc.)
'e la incolla in Foglio1, lì i dati verranno corretti in base alle specifiche dell' Ordine Cliente

NomeTab = "Tabella213"
Application.ScreenUpdating = False
'
If Not Application.Intersect(Target, Me.ListObjects(NomeTab).DataBodyRange) Is Nothing Then

    Cells(Target.Row, "B").Resize(1, 15).Select
    Cancel = True
    rispo = MsgBox("Spostare la riga selezionata su Foglio Ordine Cliente e cancellarla da questa posizione?" & vbCrLf _
       & "OK per confermare, ANNULLA per annullare  ", vbOKCancel)
    If rispo <> vbOK Then
        Target.Select
        Exit Sub
    End If
    Application.EnableEvents = False
    Selection.Copy Sheets("Foglio1").Range("B9")
    Sheets("Foglio1").Range("B9").Resize(1, 15).Value = Selection.Value
    Application.CutCopyMode = False
    csel = Selection.Address
    If Target.ListObject.AutoFilter.FilterMode Then Target.ListObject.AutoFilter.ShowAllData
    Range(csel).Select
    Selection.Delete Shift:=xlUp

    Application.EnableEvents = True
    Range("A1").Select 'aggiunto per evitare che rimanesse selezionata la riga tabella sottostante a quella esportata
    Sheets("Foglio1").Select  'aggiunto per terminare in foglio destinazione
Application.ScreenUpdating = True
End If
End Sub


Veniamo al problema:
nello stesso Foglio dove ho inserito la Macro che ho postato sopra, ho inserito (prendendo spunto dalla tua macro perfettamente funzionante in Foglio3) quest'altra macro che mi avevi preparato per inserire la X con il doppio click, ovviamente ho riadattato i campi di intervento e funzionava perfettamente prima che installassi la macro che esporta la riga dalla tabella.

- Ora succede che se anche questa funziona una volta soltanto e poi va in blocco senza darmi errori, semplicemente non inserisce più la X al secondo tentativo di doppio click, con il risultato che la cella si attiva in modalità cursore come per lasciarmi inserire un valore

- a questo punto, se torno nel Foglio con la Tabella e provo a fare il doppio click su una riga non funziona più nemmeno la macro che trasferisce la riga.

posto anche le Macro inserite nel modulo di classe di Foglio1

Codice: Seleziona tutto
Sub Inserisce_la_x_con_click_mouse_bis()

'
'  Inserisce_la_x_con_doppioclick_mouse

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'  Inserisce_la_x_con_doppioclick_mouse
CheckareaF = "F22:F61"
If Not Application.Intersect(Target, Range(CheckareaF)) Is Nothing Then
    If Target = "" Then
        Target = "X"
    Else
        Target.ClearContents
    End If
End If
Cancel = True
End Sub



Private Sub Worksheet_Change(ByVal Target As Range)
Dim Area As String, inArea As Range, myC As Range

Application.EnableEvents = False

If Target.Address = "$B$17" Then 'Se modifico la cella B17 Cancella il contenuto di C17
    Range("C17").ClearContents
End If


If Target.Address = "$G$17" Then   'Se modifico la cella G17 Cancella il contenuto di H17, I17, J17
    Range("H17, I17, J17").ClearContents
   
    Application.EnableEvents = True
End If
   
End Sub


Comincio a pensare che sia il mio PC ad avere qualche strano problema, vorrei provare ad utilizzare il mio programma su un altro PC, ma al momento non posso farlo. Visto che questo ha gli anni di Noè magari domani vado a prenderne uno nuovo e provo a vedere se cambia qualcosa..

La Storia che il tasto DX del mouse sembri morto anche su un foglio nuovo e senza traccia di macro non mi convince...
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Click per copiare una riga tabella":


Chi c’è in linea

Visitano il forum: Nessuno e 21 ospiti