Domanda Ricerca in più Sheet e compilazione di altro sheet e stampa pdf

AlexNeo1983

Nuovo utente
21 Novembre 2020
5
1
Office 365
0
Buona sera, non so se riuscirò a spigare esattamente cosa sto provando a fare.
Ho un listino prezzi dove compilando una colonna Quantià mi si genera il prezzo, questo si moltiplica per più sheet.
Vorrei:
Dove compilo la colonna quantità la riga venga Esportata in un'altro sheet che ha una determinata struttura e poi che tutto questo possa essere stampato in PDF.

Spero che mi possiate aiutare
 

giulianovac

Access/VBA Expert
Staff
9 Giugno 2018
4.027
145
Italy
2019
306
Si può fare.
Inizia da questo tutorial:
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
32.323
1.845
67
Napoli
2019 Pro Plus
934
A @AlexNeo1983

Allega un file di esempio (strutturalmente uguale al tuo originale? con dati e risultato desiderato inserito a mano.

Per la creazione del pdf puoi fare le operazioni manualmente attivando il registratore di macro e al termine avrai il codice.
 

AlexNeo1983

Nuovo utente
21 Novembre 2020
5
1
Office 365
0
Forse come immaginavo non sono riuscito a spiegarmi.
Ti allego il file, compilando la colonna quantità nel listino 1 e listino 2, dovrei riuscire ad esportare la riga nello sheet PDF con la formattazione che possiede. Poi fare altra macro per stampare in PDF.
Sullo sheet PDF le righe se c'è necessita si dovrebbero aggiungere
Ho cambiato il file esmpio
 

Allegati

Ultima modifica:

AlexNeo1983

Nuovo utente
21 Novembre 2020
5
1
Office 365
0
chiedo scusa, non riesco a scrivere il comando per l'importazione delle righe in nessun modo,
ho meglio:
faccio il filtro di tutte le pagine a secondo delle quantità inserite in tutti gli sheet.
ma non riesco a scrivere prendi quelle righe e importale nelo sheet del pdf in quella posizione e con altra formattazione
riuscite ad aiutarmi?
 

AlexNeo1983

Nuovo utente
21 Novembre 2020
5
1
Office 365
0
Non riesco a capire come dirgli di copiare da una riga in poi e non infondo al foglio
Visual Basic:
Public Sub copia2()

Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim lRiga1 As Long
Dim lRiga2 As Long
Dim lng As Integer

With ThisWorkbook
Set sh1 = .Worksheets("Listino PRFII.ADG.032020")
Set sh2 = .Worksheets("PDF")
End With

Application.ScreenUpdating = False
With sh1
lRiga1 = sh1.Range("A" & sh2.Rows.Count).End(xlUp).Row + 1
For lng = lRiga1 To 9 Step -1
If .Range("J" & lng).Value = "SI" Then
.Range("A" & lng & ":I" & lng).Copy
lRiga2 = sh2.Range("A" & .Rows.Count).End(xlUp).Row + 1
sh2.Range("A" & lRiga2).PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End If
Next

End With

Application.ScreenUpdating = True

Set sh1 = Nothing
Set sh2 = Nothing

End Sub
 
Ultima modifica di un moderatore:

ges

Excel/VBA Expert
Amministratore
21 Giugno 2015
28.361
1.865
Como
2011MAC 365WIN
851
Ciao A @AlexNeo1983 il codice va messo nei TAG (stavolta l'ho messo io, per come fare leggi gli Avvisi dello staff)
 

giulianovac

Access/VBA Expert
Staff
9 Giugno 2018
4.027
145
Italy
2019
306
Non riesco a capire come dirgli di copiare da una riga in poi e non infondo al foglio
Prima di tutto, il codice va indentato correttamente, vedi sotto.

Nonostante tutto mi pare che tu te la stia cavando. ';)
Ecco alcuni suggerimenti:

1) sh1.Range("A" & sh2.Rows.Count).End(xlUp).Row + 1
Per ottenere la riga il foglio deve essere lo stesso, così:
sh1.Range("A" & sh1.Rows.Count).End(xlUp).Row + 1
(lo stesso errore lo fai anche in lRiga2)

2) stai usando WITH / END WITH, allora non serve il nome del foglio vedi (<<<)

3) Perché esegui un ciclo dalla fine a ritroso?
In questo modo la sequenza delle righe verrà invertita. O sbaglio?

4) in (^^^) stai esaminando il foglio sh2, quindi devi specificarlo ANCHE in .Rows.Count, ovvero: sh2.Rows.Count (idem nella riga successiva)

5) per la copia (invece di fare Copy e poi Paste) puoi anche fare più semplicemente così:
cella_SU_cui_copiare = cella_DA_cui_copiare

Visual Basic:
With sh1
    lRiga1 = .Range("A" & .Rows.Count).End(xlUp).Row + 1 '(<<<) non si usa il nome del foglio
    For lng = lRiga1 To 9 Step -1
        If .Range("J" & lng).Value = "SI" Then
            .Range("A" & lng & ":I" & lng).Copy
            lRiga2 = sh2.Range("A" & .Rows.Count).End(xlUp).Row + 1 (^^^)
            sh2.Range("A" & lRiga2).PasteSpecial (xlPasteValues)
            Application.CutCopyMode = False
        End If
    Next
End With
Correggi e prova a vedere come va...
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!