Excel e gli applicativi Microsoft Office cella per ricerca e selezione elenco

Login Registrati
Stai vedendo 19 articoli - dal 1 a 19 (di 19 totali)
  • Autore
    Articoli
  • #34612 Score: 0 | Risposta

    nicopana
    Partecipante

      Buongiorno al forum.

      Vi allego un esempio, dove da C4 in giù ho un elenco di nomi.

      Nella cella J1 vorrei che iniziando a scrivere le lettere che compongono un nome, l'elenco nella colonna C4 iniziasse a ridursi fino a che tutte le alternative, mano a mano che inserisco nuovi caratteri in J1, non si esauriscono e rimane quindi la scelta, sempre che la trovi. Sarebbe possibile?

      Allegati:
      You must be logged in to view attached files.
      #34614 Score: 0 | Risposta

      PMC77
      Partecipante
        18 pts

        Ciao #nicopana

        Credo che il risultato che vorresti sia ottenibile con una macro (nemmeno così banale)!

        Ciao

        Paolo

        #34615 Score: 0 | Risposta

        nicopana
        Partecipante

          Capisco, allora non posso che appellarmi alla bontà di qualcuno perchè non so scrivere molto bene in VBA. Esiste magari un esempio che potrei ad esempio riadattare in maniera semplice al mio foglio?

          #34618 Score: 0 | Risposta

          PMC77
          Partecipante
            18 pts

            Ciao #nicopana

            Come già detto più volte, la soluzione è mettersi lì e studiare il VBA!

            Le anime buone ormai scarseggiano...

            Ciao

            Paolo

            #34622 Score: 0 | Risposta

            gianfranco55
            Partecipante
              91 pts

              Ciao

              prova questa

              Private Sub Worksheet_Change(ByVal Target As Range)
              If Not Intersect(Target, Range("j1")) Is Nothing Then
              Dim strCriteria As String
              strCriteria = Cells(1, 10)
              If Len(Trim(strCriteria)) > 0 Then
              strCriteria = strCriteria & "*" 'criterio contiene
              Else
              Range("$c$4:$c$7000").AutoFilter Field:=1
              Exit Sub
              End If
              Range("$c$4:$c$7000").AutoFilter Field:=1 ' toglie il criterio se c'è
              Range("$c$4:$c$7000").AutoFilter Field:=1, Criteria1:=strCriteria, _
              Operator:=xlAnd
              End If
              End Sub

              #34623 Score: 0 | Risposta

              nicopana
              Partecipante

                gianfranco55 ha scritto:

                Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("j1")) Is Nothing Then
                Dim strCriteria As String
                strCriteria = Cells(1, 10)
                If Len(Trim(strCriteria)) > 0 Then
                strCriteria = strCriteria & "*" 'criterio contiene
                Else
                Range("$c$4:$c$7000").AutoFilter Field:=1
                Exit Sub
                End If
                Range("$c$4:$c$7000").AutoFilter Field:=1 ' toglie il criterio se c'è
                Range("$c$4:$c$7000").AutoFilter Field:=1, Criteria1:=strCriteria, _
                Operator:=xlAnd
                End If
                End Sub

                grazie innanzitutto. Non riesco a capire però come lanciarla e tenerla attiva: l'ho registrata in un nuovo modulo del file in VBA, ma non mi da segni di vita se scrivo qlc in J1

                #34626 Score: 0 | Risposta

                gianfranco55
                Partecipante
                  91 pts

                  ciao

                  Private Sub Worksheet_Change(ByVal Target As Range)

                   

                  va sul foglio non su un modulo

                  #34629 Score: 0 | Risposta

                  nicopana
                  Partecipante

                    Fantastica veramente, grazie

                    #34630 Score: 0 | Risposta

                    nicopana
                    Partecipante

                      Ho provato ad esportare la macro su un altro file. La struttura dei dati è pressocchè simile, volevo spostare la cella di ricerca in J4 (da J1), e quindi ho cambiato il riferimento nel testo della macro.

                      Lasciandolo per in J1, nel nuovo file non mi trova nessuno dei riferimenti relativi alle lettere che ho isnerito, anzi, mi crea una selezione, chiaramente vuota, che si chiude sempre al rigo 973, e non capisco il perchè

                      #34632 Score: 0 | Risposta

                      nicopana
                      Partecipante

                        Allego qui il file originale dove mi succede quello che ho scritto nel post appena sopra

                        Allegati:
                        You must be logged in to view attached files.
                        #34634 Score: 0 | Risposta

                        nicopana
                        Partecipante

                          nicopana ha scritto:

                          Ho provato ad esportare la macro su un altro file. La struttura dei dati è pressocchè simile, volevo spostare la cella di ricerca in J4 (da J1), e quindi ho cambiato il riferimento nel testo della macro.

                          ho risolto il fatto di spostare il riferimento di cella in cui scrivere le lettere che mi interessano, quindi nel caso dell'esempio, spostarlo da j1 a j4 senza più problemi.

                          Non riesco invece a risolvere il fatto che mi riduce la selezione dal rigo 972 in poi, quindi è come se non mi trova nulla

                          Allegati:
                          You must be logged in to view attached files.
                          #34636 Score: 0 | Risposta

                          Raffaele53
                          Partecipante
                            23 pts

                            A me sembra che il filtro debba essere in colonna 3.... Range("$c$4:$c$1000").AutoFilter Field:=3

                            #34637 Score: 0 | Risposta

                            gianfranco55
                            Partecipante
                              91 pts

                              punto A

                              hai J3 non j4

                               

                              a me funziona

                              se proprio vuoi

                              metti sopra alla macro

                              Option Compare Text

                              Private Sub Worksheet_Change(ByVal Target As Range)

                              ecc.....

                              e ascolta

                              nel tuo file metti

                              metti field 3

                              #34641 Score: 0 | Risposta

                              nicopana
                              Partecipante

                                nella parte superiore alla tua macro, e nera una precedente che mi permetteva, alla scrittura di un valore nella colonna L (quindi quando acquistavi un giocatore), di formattare di colore grigio e barrato la riga corrispondente, quindi per escludere il giocatore a vista dalla lista.

                                Se per caso commetto un errore, e cancello solo il valore economico nella colonna L tutto ok, la riga ritorna con la formattazione normale. Se per caso invece per velocità cancello entrambi i valori, cioè nella colonna L e K (quindi anche la squadra aggiudicataria dell'acquisto), parte il debug della macro, e mi evidenzia in giallo la riga Case is <> ""

                                Come mai secondo te?

                                #34642 Score: 0 | Risposta

                                gianfranco55
                                Partecipante
                                  91 pts

                                  ciao

                                  prova così

                                  Private Sub Worksheet_Change(ByVal Target As Range)
                                  On Error GoTo E
                                  If Not Intersect(Target, Range("L4:L1000")) Is Nothing Then
                                  If Target.Rows.Count > 1 Then Exit Sub
                                  Select Case Target.Value
                                  Case Is <> ""
                                  Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).Interior.ColorIndex = 16
                                  Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).Font.Strikethrough = True
                                  Case Is = ""
                                  Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).Interior.ColorIndex = xlNone
                                  Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).Font.Strikethrough = False
                                  End Select
                                  E:
                                  Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).Interior.ColorIndex = xlNone
                                  Exit Sub
                                  End If
                                  If Not Intersect(Target, Range("j3")) Is Nothing Then
                                  Dim strCriteria As String
                                  strCriteria = Cells(3, 10)
                                  If Len(Trim(strCriteria)) > 0 Then
                                  strCriteria = strCriteria & "*" 'criterio contiene
                                  Else
                                  Range("$c$4:$c$1000").AutoFilter Field:=3
                                  Exit Sub
                                  End If
                                  Range("$c$4:$c$1000").AutoFilter Field:=3 ' toglie il criterio se c'è
                                  Range("$c$4:$c$1000").AutoFilter Field:=3, Criteria1:=strCriteria, _
                                  Operator:=xlAnd
                                  End If
                                  End Sub

                                   il

                                  If Not Intersect(Target, Range("

                                   

                                  non permette cancellazioni multiple

                                  le devi gestire

                                  ma io il VBA

                                  lo conosco poco

                                  sono un formuladipendente

                                  #34643 Score: 0 | Risposta

                                  nicopana
                                  Partecipante

                                    No cosi, no, la riga non resta grigia ma solo con il barrato del testo.

                                    #34644 Score: 0 | Risposta

                                    gianfranco55
                                    Partecipante
                                      91 pts

                                      ciao

                                      senti mica ho capito cosa vuoi fare

                                      primo consiglio non cancellare due celle assieme.

                                       

                                      secondo gestire l'errore

                                      On Error GoTo E

                                       

                                      E:
                                      ........................................................

                                      Exit Sub

                                       

                                      su puntini metti cosa vuoi che succeda al colore

                                      oppure lascia che esca dalla macro e il colore rimane

                                       

                                       

                                      devi anche metterci del tuo eh!

                                      #34645 Score: 0 | Risposta

                                      nicopana
                                      Partecipante

                                        diciamo che quando faccio la doppia selezione e cancello, il testo dovrebbe ritornare pulito, quindi non grigrio e non barrato.

                                        ho provato anche da solo a mettere dopo la E queste due stringhe:

                                        Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).Interior.ColorIndex = xlNone
                                        Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).Font.Strikethrough = False

                                        ma sembra che la macro vada subito a finire come se stesse facendo girare il controllo dopo la E, anche se io non cancello. quindi se inserisco i due valori in L e K, la riga resta normale, quindi nè grigia ne barrata

                                        #34665 Score: 0 | Risposta

                                        nicopana
                                        Partecipante

                                          Il fatto che ogni volta che lancio la macro la selezione mi porti via un pò di tempo, in base al pc su cui uso il file excel, esce sotto "calcolo in corso.." a 4 o 8 thread, dipende dalle potenzionalità del pc? O si riesce per caso a snellire la macro per evitare questi secondi di attesa? In effetti me lo chiedevo anche perchè già la macro non mi sembra per niente complicata, è già di per se snella, e non mi spiegavo questa attesa.(è anhce vero che il mio pc su cui gira non è il massimo)

                                        Login Registrati
                                        Stai vedendo 19 articoli - dal 1 a 19 (di 19 totali)
                                        Rispondi a: cella per ricerca e selezione elenco
                                        Gli allegati sono permessi solo ad utenti REGISTRATI
                                        Le tue informazioni: