Inserimento pulsante seleziona in un inventario

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
FraMartino
Messaggi: 6
Iscritto il: domenica 5 giugno 2022, 16:42

Inserimento pulsante seleziona in un inventario

Messaggio da FraMartino »

Ciao a tutti.
Ho un inventario di prodotti (su fogli diversi, nell'esempio allegato "Filtri abitacolo"-...-"Filtri olio") e vorrei creare dei preventivi su un nuovo file di lavoro ("Output") selezionando i prodotti che mi interessano. In pratica, invece di utlizzare Copia e incolla, vorrei un pulsante nella colonna E di tutti i fogli che mi permetta in automatico di inserire il prodotto (compresi tutti i dati relativi a quel prodotto da Colonna A-D) nella lista "Output".

Inoltre nel foglio Output vorrei inserire un Menu a tendina con ricerca dei clienti dal foglio "Lista Clienti".

Poi più avanti affronterò il discorso dei prezzi.

Intanto grazie in anticipo,
Francesco
Allegati
FM_Esempio lista prodotti.ods
(15.44 KiB) Scaricato 70 volte
Ultima modifica di FraMartino il lunedì 13 giugno 2022, 7:38, modificato 1 volta in totale.
OpenOffice 4.1.12 su Windows 10
Avatar utente
gioh66
Volontario
Volontario
Messaggi: 1721
Iscritto il: lunedì 31 luglio 2017, 14:57
Località: Friuli

Re: Inserimento pulsante seleziona in un inventario

Messaggio da gioh66 »

Ciao. C'è un motivo per cui usi un file xlsx invece di un ods se usi openoffice?
...se sei soddisfatto delle risposte ricevute metti il [Risolto] https://forum.openoffice.org/it/forum/v ... f=9&t=5661

Libreoffice 6/7 Ubuntu 22.04 - PcLinuxOS - LinuxMint 21
FraMartino
Messaggi: 6
Iscritto il: domenica 5 giugno 2022, 16:42

Re: Inserimento pulsante seleziona in un inventario

Messaggio da FraMartino »

gioh66 ha scritto: domenica 12 giugno 2022, 14:04 Ciao. C'è un motivo per cui usi un file xlsx invece di un ods se usi openoffice?
Ciao, no in realtà solo casualità
OpenOffice 4.1.12 su Windows 10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Inserimento pulsante seleziona in un inventario

Messaggio da charlie »

Per cortesia sostituisci il file con uno in formato .ods. Grazie.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
FraMartino
Messaggi: 6
Iscritto il: domenica 5 giugno 2022, 16:42

Re: Inserimento pulsante seleziona in un inventario

Messaggio da FraMartino »

charlie ha scritto: lunedì 13 giugno 2022, 7:35 Per cortesia sostituisci il file con uno in formato .ods. Grazie.
Fatto
OpenOffice 4.1.12 su Windows 10
Muset
Messaggi: 124
Iscritto il: lunedì 29 marzo 2021, 14:35
Località: Fagagna UD

Re: Inserimento pulsante seleziona in un inventario

Messaggio da Muset »

Se ti può andare bene inserire i codice Tecnocar ne preventivo per selezionare l'articolo puoi usare più cercavert per ogni colonna assieme a SINISTRA per selezionare il foglio da cui pescare i dati. E' diretto senza pulsanti, ovviamente stampi il preventivo e poi cancelli i codici Tecnocar e le quantità
Allegati
FM_Esempio lista prodotti2.ods
(37.22 KiB) Scaricato 68 volte
LibreOffice 7.3.4.2 (x64) Windows 11
FraMartino
Messaggi: 6
Iscritto il: domenica 5 giugno 2022, 16:42

Re: Inserimento pulsante seleziona in un inventario

Messaggio da FraMartino »

Grazie. E' un buon inizio. Ma quello che io vorrei principalmente è andare ad esempio sul foglio "Filtri olio" e selezionare una riga, in modo da inserirla automaticamente nel preventivo "Output". Mi sono fatto capire? Grazie
OpenOffice 4.1.12 su Windows 10
Muset
Messaggi: 124
Iscritto il: lunedì 29 marzo 2021, 14:35
Località: Fagagna UD

Re: Inserimento pulsante seleziona in un inventario

Messaggio da Muset »

Aggiungendo 2 colonne 1 per definire il tipo di filtro(in quale foglio crecare) e 1 per la selezione, il risultato dovrebbe soddisfare il tuo quesito utilizzando solo SE e CERCAVERT annidati
Allegati
FM_Esempio lista prodotti2.ods
(25.94 KiB) Scaricato 79 volte
LibreOffice 7.3.4.2 (x64) Windows 11
Muset
Messaggi: 124
Iscritto il: lunedì 29 marzo 2021, 14:35
Località: Fagagna UD

Re: Inserimento pulsante seleziona in un inventario

Messaggio da Muset »

Aggiungerei anche un Validità in Qtà per non preventivare ciò che non hai in magazzino
LibreOffice 7.3.4.2 (x64) Windows 11
FraMartino
Messaggi: 6
Iscritto il: domenica 5 giugno 2022, 16:42

Re: Inserimento pulsante seleziona in un inventario

Messaggio da FraMartino »

Muset ha scritto: lunedì 13 giugno 2022, 19:19 Aggiungerei anche un Validità in Qtà per non preventivare ciò che non hai in magazzino
Grazie, è interessante.

Il problema è che io ho a che fare con un inventario di prodotti molto più ampio (anche 100 fogli) e questa soluzione non mi sembra applicabile in questa situazione.

Pensavo ci fosse una qualche macro per poter inserire il Pulsante seleziona in tutti i fogli. Non esiste una soluzione del genere?
OpenOffice 4.1.12 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Inserimento pulsante seleziona in un inventario

Messaggio da patel »

Codice: Seleziona tutto

Sub CreateMultiButtons
  oDoc = ThisComponent
  for i=0 to oDoc.Sheets.Count - 1
    oSheet = oDoc.Sheets.getByIndex(i)
    oDrawPage = oSheet.DrawPage  'Was oDrawPage = oDoc.getDrawPage()
    rng = oSheet.getCellRangeByName("C4") ' posizione pulsante
    sScriptURL = "vnd.sun.star.script:Standard.Module1.ButtonPushEvent?language=Basic&location=document"
    nomepulsante = "Pulsante" & i
    labelpulsante = "SELEZIONA"
    oButtonModel = AddNewButton(nomepulsante, labelpulsante, oDoc, oDrawPage, rng)
    oForm = oDrawPage.getForms().getByIndex(0)
  ' find index inside the form container
    nIndex = GetIndex(oButtonModel, oForm)
    AssignAction(nIndex, sScriptURL, oForm)
  next
End Sub

' assign sScriptURL event as css.awt.XActionListener::actionPerformed.
' event is assigned to the control described by the nIndex in the oForm container

Function AddNewButton(sName As String, sLabel As String, oDoc As Object, oDrawPage As Object, rng As Object) As Object
  oControlShape = oDoc.createInstance("com.sun.star.drawing.ControlShape")

  aPoint = CreateUnoStruct("com.sun.star.awt.Point")
  aSize = CreateUnoStruct("com.sun.star.awt.Size")
  aPos = rng.Position
  aPoint.X = aPos.X
  aPoint.Y = aPos.Y
  aSize.Width = rng.Size.Width
  aSize.Height = rng.Size.Height
  oControlShape.setPosition(aPoint)
  oControlShape.setSize(aSize)
  oButtonModel = CreateUnoService("com.sun.star.form.component.CommandButton")
  oButtonModel.Name = sName
  oButtonModel.Label = sLabel

  oControlShape.setControl(oButtonModel)
  oDrawPage.add(oControlShape)

  AddNewButton = oButtonModel
End Function

Sub AssignAction(nIndex As Integer, sScriptURL As String, oForm As Object)
  aEvent = CreateUnoStruct("com.sun.star.script.ScriptEventDescriptor")
  With aEvent
    .AddListenerParam = ""
    .EventMethod = "actionPerformed"
    .ListenerType = "XActionListener"
    .ScriptCode = sScriptURL
    .ScriptType = "Script"
  End With

  oForm.registerScriptEvent(nIndex, aEvent)
End Sub

Function GetIndex(oControl As Object, oForm As Object) As Integer
  Dim nIndex As Integer
  nIndex = -1
  For i = 0 To oForm.getCount() - 1 step 1
    If EqualUnoObjects(oControl, oForm.getByIndex(i)) Then
      nIndex = i
      Exit For
    End If
  Next
  GetIndex = nIndex
End Function

REM QUESTA E' LA MACRO ASSEGNATA AI PULSANTI
Sub ButtonPushEvent(ev as com.sun.star.awt.ActionEvent)
  msgbox "pulsante creato" 
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Rispondi