Autocompletar com lista suspensa no Calc

@olivier ocorre que eu tenho uma planilha em que preciso entrar nomes de bairro. Para evitar erros de grafia coloquei em lista suspensa. Mas como sao mais de 300 bairros não é muito produtivo navegar pelos itens da lista suspensa. No excel consegui fazer com que, ao digitar, ocorresse o efeito mencionado na pergunta. Mas no calc tentei de varias maneiras, mas sem resultado.

— O que vc quer fazer é isso aqui no excel:

Mas não é possível fazer no Calc, porque no Excel pode-se usar

=CÉL(“conteúdo”)

sem especificar uma célula

no Calc é obrigatório definir uma celula

=CÉL(“contents”; D7)


Eu também tentei migrar minhas planilhas pro Calc, mas infelizmente acabei desistindo.
Os recursos do Excel ainda são melhores. Nao gosto de usar macros, e o excel permite maior usabilidade sem macros. E o funcionamento das “Tabelas” do Excel também facilitam mais a automação

O jeito foi instalar o Microsoft Office via Playonlinux, para manter a produtividade.

https://www.youtube.com/watch?v=-38DbdbOJFk

Ola @mrkalvin, sobre a função CÉL, o LibreOffice Calc utilizará a posição da célula na qual esta fórmula está localizada. O Microsoft Excel utiliza a referência da célula na qual o cursor está posicionado.

@mrkalvin obrigado por contribuir. Era justamente isso que eu queria.n E, @Gilberto Schiavinatto confirma o que @mrkalvin disse sobre a impossibilidade de se conseguir isso co calc?

@Francys , Inspirado na resposta do @Gilberto Schiavinatto fiz uma proposta de Lista suspensa dinâmica com código direto no validação. Partindo da premissa que basta digitar na célula auxiliar três letras para que a escolha dos dados que as tenham na inicial sejam selecionados em célula de validação. Mas claro, é possível utilizar somente uma letra inicial também.

Sem usar o desloc. Assim, na lista suspensa é possível ao digitar numa célula auxiliar qualquer letra ou letras mudar a ordem da validação automaticamente sem deixar espaços em branco.
Basta usar um código na validação e definir um intervalo de células (onde ficam os seus dados). Aqui o arquivo para você testar se quiser.

Postei no meu blog uma solução com um vídeo. Ao artigoo título exatamente de “Lista suspensa dinâmica”. Quem quiser dar uma olhada e baixar o arquivo.

Ola @Francys, segue uma sugestão, não é exatamente o que necessita, mas fica perto.

Consegui com a ajuda do @Grafeno Como executar uma macro no Calc ao selecionar uma célula de uma área?

Usei Eventos de planilha… / Conteúdo alterado.

Arquivo teste


Complemento

Arquivo com alteração, observações no arquivo .


Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.

Parabéns, esse recurso ficou muito interessante.

Como vc inseriu esse recurso de ao terminar sair da celula ele já abre a lista?

Obrigado

Fiz um relatório da forma como uso:
https://drive.google.com/open?id=1_03izB75NmTNtnDAE60JhGTJLQhcVI22

  1. Teria como o conteúdo da coluna E em laranja ficar na coluna A ? Pra eu não ter que ocultar a coluna E.

  2. Como eu adiciono esse efeito que ao sair da digitação da celula, no meu caso da coluna F, ela já exibe a lista de opções?

  3. O primeiro item da lista sempre está em branco, teria como remover esse item em branco?

Vide Complemento na Resposta acima.

obrigado pela ajuda!

Estou adaptando o seu exempo ao meu uso, mas ainda não consegui fazer a lista aparecer automaticamente assim que digito o texto e aperto enter.
Do mesmo modo do seu exemplo.
O que devo fazer pra ter esse efeito?

No seu exemplo, quando eu recorto o conteudo as duas colunas A e B, colo em outra coluna qualquer. Eu perco esse efeito em que a lista aparece automatico ao digitar e apertar enter.
Obrigado

Recortei a coluna E colei em A

Deletei a coluna E

Acertei a Macro. (Column = 4)

Em Programação.G1 acertei a formula.

Ligar a macro a Eventos de planilha: 1- Na aba Base, clique direito, selecione Eventos de planilha: 2- Na lista Evento selecione Conteúdo alterado; 3- Clique botão Macro, 4- Selecione seu arquivo e a macro ConteudoAlterado, OK OK.

Arquivo em devolução com acerto.

Fantástico ficou muito bom mesmo.
Agora estou em outro pc, alterei as configurações de segurança da Macro. E funcionou do jeito que eu precisava.

Vc é muito bom, uma injeva boa dos seus conhecimentos em Calc.
Parabéns e obrigado pela paciência em ajudar.
Um ótimo ano pra vc!

Fico feliz que te serviu.

Por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.

Ola @mrkalvin,

Sobre o item 3) O primeiro item da lista sempre está em branco, teria como remover esse item em branco?

Em Dados validação esta Lista, troque por esta formula DESLOC(Lista;0;0;MAIOR(A7:A27;1);1)

O primeiro item branco deixa de aparecer.

eu tentei mudar e não funcionou, será que alterei o local certo?

exemplo : imagem da tela

[arquivo exemplo:]
https://drive.google.com/open?id=1WejMeGHX8zlxBCse_Sh0JTrfezBBSJ-7

Falha minha, altere para

DESLOC(Lista;0;0;MAIOR(Programacao.A4:Programacao.A28;1);1)

Lembrando se alterar a área do arquivo, altere a validação.

Está ficando sensacional.
eu travei as celulas pra poder carregar pras linhas de baixo:

DESLOC(Lista;0;0;MAIOR(Programacao.$A$4:Programacao.$A$28;1);1)


Mais uma coisa.

Quando aperto a tecla “DEL” ou na “Linha de entrada” eu apago o conteúdo da coluna E na celula Base.
o Calc exibe a lista de sugestões mesmo não tendo o que sugerir (na primeira linha aparece ‘Erro:502’ e nas outras linhas aparece a última sugestão feita).

  1. Teria como alterar a macro pra quando esta celula estiver vazia não exibir a lista de sugestões e também quando eu digito algo na celula e aperto a tecla pra cima ou pra baixo, também teria como não exibir a lista de sugestão?

Muito obrigado mais uma vez!

Sobre o acerto da formula ok, havia esquecido do detalhe.

Quanto a célula estiver vazia, acho que da para acertar, vou dar uma pensada, mas o teclar para cima/baixo não imagino como…

Não sei se é possivel capturar o evento do teclado no visual basic pra usar antes de chamar ‘AbrirListaSelecao’

       Sub ConteudoAlterado( oCelula )
rem por Grafeno ask.177787
    ' Testar se o objeto selecionado é uma célula individual '
    If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub
    ' Endereço da Célula '
    oEnd = oCelula.CellAddress    
    ' Celula no intervalo f7:f27 '
    ' Coluna 5 e linha entre 1 e 21 '
    If oEnd.Column = 4 Then
      If oEnd.Row >= 1 And oEnd.Row <= 21 Then

        'Não sei seria possível alterar algo aqui e capturar a tecla e verificar se a tecla é diferente de "tecla para cima" e "tecla para baixo" então chamar a lista de sugestão

        Call AbrirListaSelecao 
      End If
    End If
End Sub

@mrkalvin, altere a macro conforme abaixo: a parte incluída esta entre os traços.

Sub ConteudoAlterado( oCelula )
rem por Grafeno ask.177787
    ' Testar se o objeto selecionado é uma célula individual '
    If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub
'====================================
Dim oSel as Object
Dim Var1 as String
	oSel = ThisComponent.getCurrentSelection()
'	MsgBox oSel.getString()
	Var1 = oSel.getString()
	If Var1 = "" Then Exit Sub
'====================================    
    ' Endereço da Célula '
    oEnd = oCelula.CellAddress    
    ' Celula no intervalo B7:B27 '
    ' Coluna 1 e linha entre 6 e 26 '
    If oEnd.Column = 1 Then
      If oEnd.Row >= 6 And oEnd.Row <= 26 Then
        ' Chamar a macro desejada '
        Call AbrirListaSelecao 
      End If
    End If
End Sub

Se der Enter com a célula em branco, nada acontece.