Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

SCRITTURA AUTOMATICA

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

SCRITTURA AUTOMATICA

Postdi teampenning » 24/04/12 16:15

Ed eccoci di nuovo quì
Diciamo che ho un foglio (1)con una lunghissima lista di nomi
anna
angela
fabio
marco
mauro.....
Vorrei che nel foglio 2, in una determinata cella, quando comincio a scrivere le iniziali, mi si proponesse tutti i nomi che iniziano con la stessa lettera, ad esempio scrivo M e vorrei visualizzare solo (marco e mauro), lasciando sempre il modo per inserirne di nuovi in caso nella lista del foglio 1 non fossero presenti.
Attualmente uso la convalida dati, ma se nella mia lista ho 1000 nomi, la ricerca diventa lunghissima
So che probabilmente è un argomento già trattato, eventualmente vi sarei grata se poteste indicarmi il topic?
Grazie mille a tutti
teampenning
Utente Junior
 
Post: 27
Iscritto il: 15/04/12 13:12

Sponsor
 

Re: SCRITTURA AUTOMATICA

Postdi Anthony47 » 24/04/12 23:24

Su una richiesta analoga, tempo fa suggerii l' uso di un"ComboBox" o Casella combinata, la versione disponibile nella barra degli Strumenti di controllo.
Sul "controllo" vanno impostate le seguenti proprieta':
-Linked cell: la cella in cui sara' rilasciato il valore (probabilmente quella dove ora c' e' la convalida)
-ListFillRange: le celle che contengono l' elenco delle voci tra cui scegliere
-volendo si puo' aumentare ListRows, es da 8 a 20, per avere visibile una parte piu' lunga dell' elenco
-MatchEntry: suggerisco 1, MatchEntryComplete
-MatchRequired: True
-Style: 2, StyleDropDownList

Per queste operazioni devi essere in modalita' "Progettazione" e poi visualizzare le "proprietà" del controllo.

Chiudi la modalita' progettazione e verifica l' effetto, che dovrebbe essere:
-si clicca nel combobox o nella freccina di selezione; si apre l' elenco completo; digitando una o piu' lettere l' elenco si posiziona sulle voci che iniziano con quanto digitato; si completa la digitazione oppure si seleziona dall' elenco.

Volendo affinare, si puo' inserire una macro di SelectionChange che, se viene selezionata la cella dove va inserita la voce, rende "visibile" il controllo; es.
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$E$1" Then ComboBox1.Visible = True
End Sub

Questo rende visibile il combobox quando si seleziona E1; adatta per le tue coordinate

Ovviamente serve anche il codice per farlo scomparire; es.
Codice: Seleziona tutto
Private Sub ComboBox1_LostFocus()
ComboBox1.Visible = False
End Sub
Il combobox scompare quando si seleziona una cella (non E1)

Queste ultime parti sono ovviamente opzionali; il codice va inserito tutto sul "Modulo codice" del Foglio su cui si lavora.

Prova, e se serve aiuto ulteriore siamo qua.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: SCRITTURA AUTOMATICA

Postdi Flash30005 » 25/04/12 01:05

Ottima la soluzione di Anthony postata qui sopra

Se vuoi continuare ad usare una convalida "particolare (autoaggiornante)
puoi usare questo codice da inserire nel "Foglio2" (non modulo)
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Dim Ws1, Ws2 As Worksheet
Set Ws1 = Worksheets("Foglio1")
Columns("AA:AA").ClearContents  '<<<<<<<<<<<<<<<<< la colonna Appoggio viene cancellata
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
StrA = [A1]
LStrA = Len(StrA)
Application.EnableEvents = False
For RR1 = 2 To UR1
    If UCase(Mid(Ws1.Range("A" & RR1).Value, 1, LStrA)) = UCase(StrA) Then
        UR2 = Range("AA" & Rows.Count).End(xlUp).Row + 1  '<<<<<<<<< scrive nella colonna Appoggio
        Range("AA" & UR2).Value = Ws1.Range("A" & RR1).Value
    End If
Next RR1
[A2].Clear
[A2].Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=$AA$2:$AA$" & UR2 '<<<<<<< crea la convalida della colonna Appoggio
[A2] = [AA2]  '<<<<<<<< scive in A2 il primo nome della colonna Appoggio
[A2].Select
Application.EnableEvents = True
End Sub


Funzionamento:
Ho supposto che nel "Foglio1" Colonna "A" ci sia l'elenco dei nomi (i 1000 nomi)
Scrivendo uno o più caratteri nella cella A1 del foglio2 avrai la convalida dei soli nomi corrispondenti al/ai caratteri digitati.
Ho utilizzato una colonna appoggio in AA che potrai nascondere, cambia la colonna nella macro nel caso fosse occupata dai tuoi dati, in quanto quella colonna sarà cancellata ogni volta.

Download file

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: SCRITTURA AUTOMATICA

Postdi wallace&gromit » 25/04/12 21:36

a) non sono sicuro di avere capito la domanda di teampenning
b) di sicuro non ho capito le vostre risposte!

Io ho capito la domanda in questo modo: quando sto inserendo un nome in fondo ad una colonna, mano a mano che digito delle lettere excel mi propone come potrebbe essere la parola completa, e io posso accettare la proposta abbreviando il tempo di inserimento. Ho pensato che la domanda fosse eseguire questa stessa operazione ma in una casella di un altro foglio, giusto teampenning?

Se anche voi, Anthony e Flash, l'avete capita come me e le vostre risposte dovessero fare questo, beh allora non sono riuscito a metterle in pratica (e forse come me altri avranno difficoltà) quindi vi chiederei di precisare un po' meglio.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: SCRITTURA AUTOMATICA

Postdi Anthony47 » 26/04/12 01:50

Io ho capito che oggi teampenning usa una convalida con 1000 nomi e vorrebbe un aiutino a scegliere il nominativo; quello che ho descritto e' quindi una alternativa alla Convalida che facilita la scelta da elenco.
Giocando sulla Proprieta' MatchRequired si puo' forzare la "scelta dall' elenco" (MatchRequired: True) oppure poter inserire un nominativo nuovo (MatchRequired: False).

Ciao a tutti.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: SCRITTURA AUTOMATICA

Postdi teampenning » 26/04/12 15:11

Giusto Anthony, visto che mi si apre un menù a tendina con circa 1000 nomi, ci metto molto tempo a cercare il nominativo giusto, quindi mi serve qualcosa per velocizzare. Ad esempio se cerco il nome di Massimiliano, vorrei che non appena digito la M, il menu a tendina mi mostrasse solo i nomi che iniziano con la m.
Tornando alla proposta di Anthony, mi sorge un dubbio, se io inserisco in una cella una casella combinata, mi farà poi riordinare tutto il foglio? Calcolando inoltre, che avendo 3 cavalieri per ogni squadra + 3 cavalli per un totale di circa 100 squadre, riempirei il foglio di caselle combinate, forse si addice di più la proposta di Flash, anche se ci stò ancora lavorando su.
Se non ho capito male, l'idea di Flash è quella di mettere in cima al foglio una convalida dati, ma a me serve per ogni cella che conterrà nomi di cavalieri e di cavalli. La lista da cui attingere si trova in un'altro foglio.
Diciamo che la lista cavalieri si trova in un foglio denominato "cavalieri" a partire da B2 fino a B.......
La lista dei cavalli di trova in un foglio denominato "cavalli" a partire da B2 fino a B.....
In un'altra pagina, ad esempio denominata Tappa1, nella colonna C, da C3 in poi devo inserire i nomi dei cavalieri, mentre in colonna F, a partire da F3, devo inserire i nomi dei cavalli.
Spero di essere riuscita a spiegarmi, senza incasinare ulteriormente le idee
teampenning
Utente Junior
 
Post: 27
Iscritto il: 15/04/12 13:12

Re: SCRITTURA AUTOMATICA

Postdi teampenning » 26/04/12 15:17

Inserisco il programma quasi definitivo, in modo che possiate capire meglio

http://uploading.com/files/2693e1ma/pro ... orum.xlsm/
prog. gare per forum.xlsm - 1.0 MB
teampenning
Utente Junior
 
Post: 27
Iscritto il: 15/04/12 13:12

Re: SCRITTURA AUTOMATICA

Postdi teampenning » 26/04/12 15:18

Inoltre devo poter inserire un nome anche se non è presente nella lista
teampenning
Utente Junior
 
Post: 27
Iscritto il: 15/04/12 13:12

Re: SCRITTURA AUTOMATICA

Postdi Anthony47 » 26/04/12 23:19

Una volta che hai gli spunti tocca a te scegliere quello che piu' si adatta al tuo caso.
Ovviamente non hai bisogno di inserire cento caselle combinate, al massimo ne crei una e la fai comparire (non contemporaneamente) in cento posizioni diverse; al contrario del menu a tendina della convalida, che e' ancorato alla cella, la casella combinata puo' essere infatti posizionata a piacere sul foglio.
Quindi ...buona meditazione.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: SCRITTURA AUTOMATICA

Postdi Flash30005 » 27/04/12 09:15

Ho imbastito una macro di questo tipo da inserire nel foglio
e sembra funzionare.
Richiede una colonna di appoggio (AA)
La pubblico perché potrebbe essere utile anche a altri utenti
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
AreaC = "C3:C305"
If Not Application.Intersect(ActiveCell, Range(AreaC)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
    If Target <> "" And Len(Target) < 5 Then
Application.EnableEvents = False
RC = 27
ActiveCell.Offset(-1, 0).Validation.Delete
Dim Ws1, Ws2 As Worksheet
Set Ws1 = Worksheets("Cavalieri")
Columns(RC).ClearContents
UR1 = Ws1.Range("B" & Rows.Count).End(xlUp).Row
StrA = Target
LStrA = Len(StrA)

For RR1 = 2 To UR1
    If UCase(Mid(Ws1.Range("B" & RR1).Value, 1, LStrA)) = UCase(StrA) Then
    Cells(Rows.Count, RC).End(xlUp).Offset(1, 0).Value = Ws1.Range("B" & RR1).Value
    End If
Next RR1
ActiveCell.Offset(-1, 0).Validation.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:="=$AA$2:$AA$" & Cells(Rows.Count, RC).End(xlUp).Row
ActiveCell.Offset(-1, 0).Validation.ShowError = False
        Application.CutCopyMode = False
Application.EnableEvents = True
End If
End If
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: SCRITTURA AUTOMATICA

Postdi teampenning » 27/04/12 10:39

Vi ringrazio infinitamente tutti quanti, direi che ho parecchio materiale su cui lavorare. Fine settimana di fuoco. Appena ho terminato, vi faccio sapere l'esito. Grazie mille a tutti
A presto
teampenning
Utente Junior
 
Post: 27
Iscritto il: 15/04/12 13:12

Re: SCRITTURA AUTOMATICA(RISOLTO)

Postdi teampenning » 27/04/12 14:07

Allora alla fine ho usato la convalida dati e ho inserito la macro di Flash su ogni pagina.
Tutto funziona alla perfezione.
Come sempre grazie a tutti per gli aiuti
Ciao :)
teampenning
Utente Junior
 
Post: 27
Iscritto il: 15/04/12 13:12


Torna a Applicazioni Office Windows


Topic correlati a "SCRITTURA AUTOMATICA":


Chi c’è in linea

Visitano il forum: Nessuno e 18 ospiti

cron