Jump to content
Gabriel Darin verga

Preenchimento ao escrever um nome

Recommended Posts

Gabriel Darin verga

Boa Tarde,

Estou tentando criar um código que, ao colar um nome na coluna D, percorra a coluna D e procura esse valor nas celulas anteriores, depois copie os valores das celulas da mesma linha da celula encontrada para a linha que está o nome que eu colei inicialmente. 
Por exemplo, eu digito o nome "João" na celula D100, o programa procura o nome da celula D1 até a ultima celula. Supondo que ele encontrou o nome na celula D35, ele copia a celula I35 e P35 e cola nas celulas I100 e P100

Aqui está o que eu tentei, mas não tive sucesso:

Dim UltCel As Range
Dim lastcel As Range
Dim Nome As String
Dim Area As String
Dim Nome2 As String


Range("A37").Select
Selection.End(xlUp).Select

'Loop principal
'percorrer os nomes

Do While ActiveCell.Value <> "CLIENTE"

    'guardar o nome
    Nome = ActiveCell.Value
    Set UltCel = ActiveCell
    

    Range("A1").Select
    'repetição
    Do While ActiveCell <> "CLIENTE"
        Nome2 = ActiveCell.Value
        Set lastcel = ActiveCell
        
        If Nome2 = Nome Then
        
            'If ActiveCell.Offset(0, 1).Value <> "" Then
            
            ActiveCell.Offset(0, 2) = Nome
            
            
            
            'End If
            
        
        End If
        ActiveCell.Offset(1, 0).Select
        
    Loop
    Exit Do
    UltCel.Offset(-1, 0).Select

Loop

 

Share this post


Link to post
Share on other sites
antseq

Viva,

Está a tentar criar o código porque necessita dessa funcionalidade? ou é um "trabalho-de-casa" académico que tem de resolver?

Pergunto porque o Excel, já tem o "VLOOKUP" que "basicamente" faz o que pretende, a menos que já tenho tentado e não resolve totalmente o seu caso.

cps.

 

Share this post


Link to post
Share on other sites
Gabriel Darin verga
15 horas atrás, antseq disse:

Viva,

Está a tentar criar o código porque necessita dessa funcionalidade? ou é um "trabalho-de-casa" académico que tem de resolver?

Pergunto porque o Excel, já tem o "VLOOKUP" que "basicamente" faz o que pretende, a menos que já tenho tentado e não resolve totalmente o seu caso.

cps.

 

Na verdade, é pra melhorar minha planilha no trabalho. Eu ja tentei usar o VLOOKUP, mas eu não consigo copiar uma informação da mesma coluna que a formula se encontra. Por isso queria uma rotiina que toda vez que eu colocasse um nome ela faria uma varredura por alguma repetição e copiaria os valores pra linha atual.

Share this post


Link to post
Share on other sites
Gnrtuga

Ora boas,

Eu penso que percebi o que queres, queres preencher a célula com o nome do cliente e que automaticamente sejam preenchidas outras células, que vou supor que correspondem por exemplo à morada e ao código postal.

Ora aqui vão as minhas observações, primeiro no teu código dá-me a impressão que se não houver nenhum cliente com o nome pretendido que ele não vai sair do loop, depois 

a procura por nome pode ser um bocado inglória, porque pode haver um espaço entre nomes e já não te vai encontrar.


Em relação a possíveis soluções:

- Ligar o excel ao acess e procurar na base de dados os clientes (sei que não será o ideal, mas já usei e foi útil)

- Talvez o antseq tenha razão e o VLookup seja uma boa opção, já usei num formulário e vou colar o código e explicar.

nomeautuantef = Application.WorksheetFunction.VLookup(CDbl(cbautuante), Folha12.Range("I1:J100"), 2, 0)

em que nomeautuantef era o nome do campo no formulário onde iria aparecer o resultado da pesquisa, depois vem a função VLookup (essa parte percebe-se bem) onde estou a converter para double o texto do campo do formulário (cbautuante) que é o valor que estou a pesquisar, folha12 é o local onde tinha a lista a ser pesquisada, com o range I a J, neste range tinha o número do autuante na coluna I e o nome na coluna J, o 2 serve para dizer que quero o valor que está na coluna 2 do meu range (neste caso o nome) e o 0 serve para dizer que procuro o valor exacto.

Deixo-te aqui o link para esta função em VBA

https://docs.microsoft.com/en-us/office/vba/api/excel.worksheetfunction.vlookup

Boas sorte


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Share this post


Link to post
Share on other sites
antseq
Em 22/03/2019 às 12:26, Gabriel Darin verga disse:

Na verdade, é pra melhorar minha planilha no trabalho. Eu ja tentei usar o VLOOKUP, mas eu não consigo copiar uma informação da mesma coluna que a formula se encontra. Por isso queria uma rotiina que toda vez que eu colocasse um nome ela faria uma varredura por alguma repetição e copiaria os valores pra linha atual.

Para usar o VLOOKUP (PROCV):

- supondo que em "D100" digitas "João"
- em "I100" colocas a fórmula "=PROCV($D100;$D$1:$P$99;6;VERDADEIRO)"
- em "P100" colocas a fórmula "=PROCV($D100;$D$1:$P$99;13;VERDADEIRO)"

* a matiz de procura e obtenção de resultados é $D$1 até $P$99
* para o resultado encontrado em "D?" queres no primeiro caso/fórmula a 6ª coluna => DEFGH(I)
* para o resultado encontrado em "D?" queres no segundo caso/fórmula a 13* coluna => DEFGHIJKLMNO(P)

* não estou certo, mas penso que a matriz deverá estar ordenada por "D"

cps,

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.