[Risolto] Macro: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
arckborg
Messaggi: 29
Iscritto il: domenica 18 dicembre 2022, 22:13

[Risolto] Macro: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Messaggio da arckborg »

Salve a tutti, amici del Forum.
Ho un nuovo problemino da risolvere: mi servirebbe una Macro, da attivare tramite il pulsante “Sorteggia” (presente nel Foglio “GIOCATA”), che andando ad operare nel Foglio “SORTEGGIO” andasse ad inserire nella Colonna D7:D30 3 degli 8 Numeri (sorteggiandoli a caso) che sono presenti nella colonna C7:C30.
Spero di essere stato sufficientemente chiaro nell'esplicitare le mie necessita', tuttavia, onde evitare eventuali disguidi e fraintendimenti allego alla presente anche il File in oggetto.

Un cordiale saluto.
Arch. A. Borghini
Allegati
GIOCATA.ods
(30.02 KiB) Scaricato 41 volte
Ultima modifica di arckborg il sabato 21 gennaio 2023, 11:50, modificato 2 volte in totale.
- La versione di Libre Office che attualmente uso è la 7.3.5.2 (per Mac)
- Sistema operativo: MAC OS High Sierra v. 10.13.6
- installato su di un MacBook Pro (15" 2011) con processore da 2,2 GHz INTEL Core i7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8805
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: MACRO: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Messaggio da charlie »

arckborg ha scritto: giovedì 19 gennaio 2023, 16:36Salve Gaetano
Nel forum ci si rivolge a tutti i potenziali aiutanti.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
arckborg
Messaggi: 29
Iscritto il: domenica 18 dicembre 2022, 22:13

Re: MACRO: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Messaggio da arckborg »

Hai perfettamente ragione. Chiedo umilmente scusa.
- La versione di Libre Office che attualmente uso è la 7.3.5.2 (per Mac)
- Sistema operativo: MAC OS High Sierra v. 10.13.6
- installato su di un MacBook Pro (15" 2011) con processore da 2,2 GHz INTEL Core i7
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: MACRO: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Messaggio da patel »

Puoi sempre correggere il tuo primo post
-------------------
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
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Messaggio da Gaetanopr »

Codice: Seleziona tutto

Sub Sorteggio
Dim Doc As Object
Dim Sh As Object
If MsgBox("Sei sicuro di voler sorteggiare i nuovi numeri???", 64+4, "SORTEGGIO")  = 7 Then EXIT SUB
Doc = ThisComponent
Sh = Doc.Sheets.GetByName("SORTEGGIO")
Range = Sh.getCellRangeByName("C7:C30")
Sh.getCellRangeByName("D7:D30").clearContents(1)
  
Dati = Range.GetDataArray
X = Ubound(Dati)
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary") 

Do While A < 3
   Numero = Dati(Int((X * Rnd) ))(0)
   If Numero <> 0 Then
      If Dic.Exists(Numero) = False Then
         Dic.Add Key:= Numero , Item:= Numero
         A = A + 1
         oDescriptor = Range.createSearchDescriptor()
         With oDescriptor
             .SearchString = Numero
             .SearchWords = True
             .SearchType = 1  ' cerca nei valori
             .SearchCaseSensitive = False
         End With
         oFound = Range.findFirst(oDescriptor)
         If Not IsNull(oFound) Then
            r=oFound.getCellAddress.Row
            Sh.getCellByPosition(3, r).Value = Numero
         End If
 
      End If
   End If      
   
Loop

End Sub
Ultima modifica di Gaetanopr il sabato 21 gennaio 2023, 10:09, modificato 1 volta in totale.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
arckborg
Messaggi: 29
Iscritto il: domenica 18 dicembre 2022, 22:13

Re: MACRO: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Messaggio da arckborg »

Salve Gaetano, grazie infinite per il tuo cortese aiuto, tuttavia c'e' qualcosa nella routine che non funziona. Forse e' colpa mia perche' nel frattempo ho leggermente modificato ed aggiunto alcune cose. Tuttavia non penso che sia il nome del foglio su cui deve operare la Macro dato che ho provveduto anche a cambiare il suo nome all'interno della stessa.
Per maggiore sicurezza, comunque, in allegato alla presente ti invio sia il nuovo file modificato che lo screenshot relativo al messaggio di errore in questione.

Di nuovo grazie ed un cordiale saluto.
Arch. A. Borghini
Allegati
Giocata.ods
(37.46 KiB) Scaricato 36 volte
Screenshot.jpg
Screenshot.jpg (119.44 KiB) Visto 827 volte
- La versione di Libre Office che attualmente uso è la 7.3.5.2 (per Mac)
- Sistema operativo: MAC OS High Sierra v. 10.13.6
- installato su di un MacBook Pro (15" 2011) con processore da 2,2 GHz INTEL Core i7
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Messaggio da Gaetanopr »

Dall'immagine già si vede che qualcosa non va, fai coesistere macro scritte in VBA per Excel e in basic per openoffice, devi togliere 'Option VBASupport 1, anzi togli tutto il VBA, nel tuo precedente post avevo già convertito una macro che cancellava il contenuto delle celle, quindi dovresti sapere come fare.
Pure in Basic si usa il metodo ClearContents, in questa macro c'è una riga che cancella i numeri delle celle "D7:D30"

Codice: Seleziona tutto

Sh.getCellRangeByName("D7:D30").clearContents(1)
Saluti
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
arckborg
Messaggi: 29
Iscritto il: domenica 18 dicembre 2022, 22:13

Re: MACRO: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Messaggio da arckborg »

Caro Gaetano, anche dopo aver seguito il tuo consiglio ed aver eliminato dalla MACRO tutta la parte in VBA, anche questa volta mi da errore (vedi file e screenshot allegati). A questo punto non so piu' a che "Santo votarmi"; non mi resta che "affidarmi alle tue prodigiose mani".

Un cordiale saluto.
Arch. A. Borghini
Allegati
Screenshot_02.jpg
Screenshot_02.jpg (116.81 KiB) Visto 784 volte
Giocata.ods
(39.05 KiB) Scaricato 33 volte
- La versione di Libre Office che attualmente uso è la 7.3.5.2 (per Mac)
- Sistema operativo: MAC OS High Sierra v. 10.13.6
- installato su di un MacBook Pro (15" 2011) con processore da 2,2 GHz INTEL Core i7
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Messaggio da Gaetanopr »

Non avevo letto la tua firma, il tuo SO non riconosce gli Oggetti Dictionary, cambiamo sistema.

Codice: Seleziona tutto

Sub Sorteggio
Dim Doc As Object
Dim Sh As Object
If MsgBox("Sei sicuro di voler sorteggiare i nuovi numeri ???", 64+4, "SORTEGGIO")  = 7 Then EXIT SUB
Doc = ThisComponent
Sh = Doc.Sheets.GetByName("SORTEGGIO_1")
Range = Sh.getCellRangeByName("C7:C30")
Sh.getCellRangeByName("D7:D30").clearContents(1)
  
Dati = Range.GetDataArray
X = Ubound(Dati)

Do While A < 3
   Numero = Dati(Int((X * Rnd) ))(0)
   If Numero <> 0 Then
         oDescriptor = Range.createSearchDescriptor()
         With oDescriptor
             .SearchString = Numero
             .SearchWords = True
             .SearchType = 1  ' cerca nei valori
             .SearchCaseSensitive = False
         End With
         oFound = Range.findFirst(oDescriptor)
         If Not IsNull(oFound) Then
            r=oFound.getCellAddress.Row
            If Sh.getCellByPosition(3, r).String = "" Then
                Sh.getCellByPosition(3, r).Value = Numero
                A = A + 1
            End If
         End if
      End If

Loop
End Sub

LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
arckborg
Messaggi: 29
Iscritto il: domenica 18 dicembre 2022, 22:13

Re: [RISOLTO] MACRO: sorteggio casuale di 3 degli 8 numeri presenti in una colonna.

Messaggio da arckborg »

Perfetto, ora la Macro funziona perfettamente.
Grazie infinite Gaetano.

Un cordiale saluto.
Arch. A. Borghini
- La versione di Libre Office che attualmente uso è la 7.3.5.2 (per Mac)
- Sistema operativo: MAC OS High Sierra v. 10.13.6
- installato su di un MacBook Pro (15" 2011) con processore da 2,2 GHz INTEL Core i7
Rispondi