Felipe Carvalho_748684
-
Posts
27 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Felipe Carvalho_748684
-
-
Bom dia pessoal,
Estou com uma planilha de controle de vencimento de documentações, preciso dinamizar ela com envio e-mails automáticos e tudo mais, mas estou parado na criação de um status dinâmico:
Cada linha traz uma "conta" e as colunas os tipos de contas (A,B,C...) onde cada um delas tem seu vencimento.
Primeiro, na coluna status (D) eu precisaria que informasse "Conforme" com todas datas OK e "Não conforme" se algumas das datas não estiver OK.
Segundo, na coluna Info (E) descreva qual linha de documentação está vencida A, B, C...
Consegui alguns embolsos para o primeiro pedido, mas o segundo eu nunca vi. Não sei se será possível.
A Planilha terá poucas formulas, então podem fazer VBA ou formulas mesmo.
Desde já obrigado.
-
Pessoal, já vasculhei a net, inclusive em sites gringos mas está osso.
Não consigo fazer funcionar.
Alguém tem uma luz?
-
Boa atrde pessoal,
Resolvido. Obrigado Mikel Silveira Fraga - TVForum
'Essas coordenadas correspondem a Range "B4:D1000".
If (Target.Row >= 4 And Target.Row <= 1000) And _
(Target.Column >= 2 And Target.Column <= 4) Then
Dim intLinha As Long
intLinha = Target.Row
Range("A" & intLinha).Value = Application.InputBox("Número de contato: " & _
Plan1.Range("H" & intLinha).Value & " ")
End If
End Sub -
Pessoal, arrumei metade da dúvida:
Falta agora fazer com que o texto que aparece da célula seja respectivo ao da linha modificada, e a entrada seja respectiva:
Exemplo: Se eu modifico a B20, na mensagem aparece a célula H20 e a entrada na célula A20 e assim por diante.
Vejam o código:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("B4:D1000")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Range("A4").Value = Application.InputBox("Número de contato: " & Plan1.Range("H5").Value & " ")
End If
End Sub -
Bom dia pessoal,
Tenho esse código VBA entre muitos outros em minha planilha, mas ainda sou aspirante e demoro a desenvolver.
Preciso trocar o final onde chama uma MsgBox para um ImputBox e o texto informativo aparecer um conteúdo de uma célula.
Ela faz basicamente isso:
1. Ao modificar o trecho B4:D10000 é ativada a MsgBox.
2. OK finaliza ela
Quero assim:
1. Ao modificar o trecho B4:D10000 é ativada a InputBox
2. Na input quero que apareça os dados da coluna "H" com um texto de introdução, tipo: "O pedido é: -dados da H"
3. Ao inserir uma anotação na caixa de texto, esse texto seja escrito na coluna A.
4. Botão OK aplica, botão cancelar não faz nada.
SENHA DO VBA: TAOSSO10
Dim KeyCells As Range
Set KeyCells = Range("B4:D1000")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
MsgBox "Cobrança feita!", vbInformation, "Status" -
Bom dia pessoal,
Me virei na aba DADOS e consegui usando a importação de dados simples.
-
Boa tarde,
Pessoal, tenho uma planilha de cobrança e preciso alimenta-la sempre. Esses dados vem de um sistema que gera outras planilhas, hoje eu vinculo as planilhas com "colar especial", mas assim ela sobrescreve e eu preciso que vá dando continuidade.
Eu anexei a planilha principal e as outras.
Explicando melhor, eu preciso que na aba preparação iniciando do B2 os itens das demais planilha sejam sendo importados. porém sem prescrever, sempre descendo a linha sem mexer na anterior, os numero de itens podem variar entre elas, uma pode ter 30, outra 60 e assim por diante.
A principal é a "Follow-up Inteligente - Auto - BW" e as outras são os bancos de dados.
-
-
Boa noite galera!
Não sou tão experiente em VBA, já pesquisei mas não achei, então lá vai.
Preciso de uma Macro assim:
1 - Ir ao Outlook.
2 - Pesquisar em todo o e-mail, não só na inbox
3 - Localizar uma mensagem ( Pelo email ou pelo Assunto)
4 - Abrir a Mensagem acima
Planilha modelo em anexo. O termo de pesquisa é a célula H, quero colocar um pequeno botão ao lado da célula H para ativar.
Eu tentei fazer mas não tive sucesso, o mais perto que cheguei está nesse Link http://comunidade.itlab.com.br/eve/forums/a/tpc/f/364609431/m/188602746
Desde já obrigado.
-
Os dois derão, mas já tinha aplicado e finalizado a planilha com a ajuda do @
minosoMuito Obrigado.
-
Olá pessoal, estou construindo uma planilha para cobranças (em anexo modelo) e surgiu alguns problemas.
A coluna D tem um PROCV que compara dados da coluna C com dados na Coluna A(FornecedoresEmail) e copia os respectivos da coluna B(FornecedoresEmail) para ela.
A Matriz de comparação (coluna C) é um resultado de EXT.TEXTO da coluna A onde ele puxa alguns numeros dela. Eu fiz em forma de formulas. porém, a PROCV não "entende" como um dado e não faz sua parte, quando digitado o mesmo número tudo funciona (exemplo na C6).
Como posso resolver?
Eu pensei em duas formas:
Criar VBA para fazer o papel do EXT.TEXTO ou algum modo que não conheço ainda onde seja resolvido o problema do excel não "usar dados para uma formula de outra formula".
SENHA VBA: TAOSSO10
-
Felipe, pelo método q lhe sugeri você pode selecionar a coluna H p/ somente ela ser pesquisada.
Te garanto q pode ser feito desta forma, mas se você realmente quer complicar sua vida...
Ficou perfeito com o VBA.
Veja a forma que o Basole sugeriu no anexo.
Obrigado pela ajuda.
Fiz algumas alteraçoes no codigo q postei anteriormente
Pois somente duplicados consecutivos estava sendo removidos:
Sub Proc_Dupli_Deleta()
' Macro identifica valores duplic. na coluna "H" e deleta a linha inteira
Dim cel As Variant
Dim rng As Range
Dim ws As Worksheet
Dim i, ul As Long
Application.ScreenUpdating = False
Set ws = Sheets("plan1") 'AQUI: Altere de acordo c/ nome sua plan
ul = ws.Cells(Rows.Count, 8).End(xlUp).row
Set rng = ws.Range("h4:h" & ul)
For Each cel In rng
If Application.WorksheetFunction.CountIf(rng, cel) > 1 Then
cel.Select
For i = ActiveCell.row + 1 To ul
If ws.Cells(i, "h").Value = cel Then
ws.Cells(i, "h").EntireRow.Delete ' del linha duplicada
i = ActiveCell.row
Else
End If
If Application.WorksheetFunction.CountIf(rng, cel) = 1 Then GoTo pxl
Next
Else
pxl:
End If
Next
Application.ScreenUpdating = True
End Sub
'Em anexo a planilha teste c/ a codificacao e a macro automatica.
'* Como o processo está automatico, ao digitar, ou colar um dado que já existe (na coluna H), ao piscar de olhos esse 'valor
'será deletado.
'Caso queira deixar manualmente, desabilite a macro no evento :Private Sub Worksheet_Change(ByVal Target As Range) 'e coloque um atalho de teclado ( Alt + F8 -> Em opções ), para executar a macro.
'abx.
Perfeito!
Obrigado, a planilha e o VBA está cada vez mais potente. kkkkkkkkkkkkk.
Automatizando!
-
Felipe, fiz uma sugestao:
A macro deleta a (s) linha(s) (inteira), caso o valor da celula (da coluna H), for igual a anterior, mantendo somente 1 (um) valor de (H) distinto.
Cole em um modulo:
Sub Proc_Duplicados()
Dim cel As Variant
Dim rng As Range
Dim ws As Worksheet
Set ws = Sheets("plan1") 'altere aqui de acordo c/ nome sua plan
Set rng = ws.Range("h4:h" & Cells(Rows.Count, 8).End(xlUp).Row)
For Each cel In rng
If Application.WorksheetFunction.CountIf(rng, cel) > 1 Then
cel.Select
bk:
If ws.Cells(ActiveCell.Row + 1, "h").Value = cel Then
ws.Cells(ActiveCell.Row + 1, "h").EntireRow.Delete
GoTo bk
Else
End If
End If
Next
End Sub
Pra ficar 'tomatico' quando. alterar alguma celula: chame a macro no evento:
Private Sub Worksheet_Change(ByVal Target As Range)
Call Proc_Duplicados
End Sub
abx.
Cara, pode aplicar o VBA na planilha teste e me enviar?
Não estou conseguindo juntar com os códigos já existentes.
Felipe, pelo método q lhe sugeri você pode selecionar a coluna H p/ somente ela ser pesquisada.
Te garanto q pode ser feito desta forma, mas se você realmente quer complicar sua vida...
Se selecionar só a H só apaga a H. E isso não adianta para mim.
Nunca duvide do VBA.
-
Basole
Era exatamente ISSo que estou querendo, kkkkkkkkkkk.
Não testei ainda porque não estou em casa.
Vou me enrolar um pouco, eu fiz aquela programação VBA acima e não vou conseguir encaixar essa junto.
Mas obrigado, assim que testar eu te retorno.
-
Vagner
Bom dia,
Ainda não está sendo entendido:
Veja cada linha dessa como 1 processo apenas cujo o numero de identificação de cada processo está na coluna H.
Quando esse numero de identificação da coluna H aparecer duas vezes, toda a linha dele também será idêntica, isso é uma regra. O que quero é eliminar a repetição, dessa forma "unificar" a duplicação, tornando uma só novamente. Isso tudo do jeito rápido e automático do Excel.
-
DJunqueira
Não serve, a eliminação é com seleção inteira, ele elimina outros dados.
Preciso que o dado levado em conta para eliminação da linha seja da coluna H.
Qualque outro dado pode ser duplicado que não atrapalha, mas se a H duplicar, toda a linha deve ser condenada.
-
Tenho uma planilha onde uso a formatação condicional de dados duplicados, sempre quando algum dado da coluna H está duplicado a fonte fica vermelha.
Para implementar eu preciso que sempre que os dados da H estejam duplicados (ou coloridos também serve), a linha inteira seja unificada em 1 só.
Olá, Felipe.
O que você quer dizer com o texto acima que pintei de azul?
Seria estender a Formatação Condicional para as demais colunas da tabela mantendo o critério de duplicidade na coluna "H" ?
você está ligado q o Excel tem o comando Remover Duplicadas na aba Dados?
Vamos esclarecer.
Cada LINHA é um ciclo de compras, tem um numero de pedido (que nunca em condiçõeos normais se repete) e os outros dados, material, datas, quantidades, nome de fornecedor.
O que quero: Quando esse numero de pedido repetir, todo o ciclo de compra (a linha) seja unificada em 1 novamebnte, ou eliminada a repetição, tanto faz. Sempre levando em consideração o numero que fca na coluna H.
-
-
Bom dia pessoal,
Tenho uma planilha onde uso a formatação condicional de dados duplicados, sempre quando algum dado da coluna H está duplicado a fonte fica vermelha.
Para implementar eu preciso que sempre que os dados da H estejam duplicados (ou coloridos também serve), a linha inteira seja unificada em 1 só.
Eu coloquei a planilha TESTE anexada aqui, não está com todos os dados porque contém informações comerciais, mas dá para ser um modelo.
-
Oi Felipe!
Notei que você envia os e-mails um a um, é isso mesmo?
Não seria melhor se você marcasse todas as linhas para enviar e-mail e depois disparasse de uma vez só?
O código abaixo faz isso, basta você passar os parâmetros necessários.
Ou faça download da planilha para usar como modelo!
Sub Enviar_Email(Dest As String, Copia As String, Nome As String, AnexItem As String) 'declara variaveisDim Assunto As String, Msg As String, AnexPath As String 'atribui assuntoAssunto = Range("assunto") 'atribui mensagemMsg = Range("mensagem") 'atribui caminhos dos anexosAnexPath = Range("anexos") & "\" & AnexItem 'verifica se o arquivo existe'Set fs = CreateObject("Scripting.FileSystemObject")'Set a = fs.fileexists(AnexPath) 'inclui o nome de destinatario na mensagemMsg = Replace(Msg, "<%Nome%>", Nome) 'inicia objeto de email do OutlookDim oApp As Outlook.ApplicationDim oMailItem As Outlook.MailItem Set oApp = CreateObject("Outlook.Application")Set oMailItem = oApp.CreateItem(olMailItem) With oMailItem .Subject = Assunto.Body = Msg.To = Dest.CC = CopiaIf Dir(AnexPath) <> "" Then .Attachments.Add (AnexPath).Send End With End Sub Sub Enviar_Tudo() x = 2Do Until Range("A" & x) = ""Enviar_Email Range("B" & x), Range("C" & x), Range("A" & x), Range("D" & x)x = x + 1Loop End Sub
Abraços
Isso, na minha macro eu vou verificando, digito X e vai enviando. Sem abrir tela no Outlook.
A escolha foi assim porque é necessaria uma avaliação no follow-up. obrigatóriamente tem que ser semi-automatico.
Mas obrigado, fica a dica para uma melhoria em outro caso.
-
Consegui, o código ficou bem grande, mas está funcionando:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then Cells(Target.Row, 5) = Date
If Target.Column = 3 Then Cells(Target.Row, 6) = Date
If Target.Column = 4 Then Cells(Target.Row, 7) = Date
Dim OutApp As Object
Dim OutMail As Object
Dim texto As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
linha = ActiveCell.Row - 1
If Target.Address = "$B$" & linha Then
If Plan1.Cells(linha, 2) = "X" Then
End If
With OutMail
.To = Plan1.Cells(linha, 1)
.CC = ""
.BCC = ""
.Subject = "Título do email"
.Body = "Prezado(a) " & Plan1.Cells(linha, 1) & "," & vbCrLf & vbCrLf & _
"A O.S. " & Plan1.Cells(linha, 7) & " aberta em " & _
Plan1.Cells(linha, 2) & " foi concluída." & vbCrLf & _
" Veja informações abaixo:" & vbCrLf & _
" Status: " & Plan1.Cells(linha, 6) & vbCrLf & _
" Ação tomada: " & Plan1.Cells(linha, 5) & vbCrLf & vbCrLf & _
"Atenciosamente," & vbCrLf & _
"Help Desk"
.Display 'Utilize Send para enviar o email sem abrir o Outlook
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End If
linha = ActiveCell.Row - 1
If Target.Address = "$C$" & linha Then
If Plan1.Cells(linha, 2) = "X" Then
End If
With OutMail
.To = Plan1.Cells(linha, 1)
.CC = ""
.BCC = ""
.Subject = "Título do email"
.Body = "Prezado(a) " & Plan1.Cells(linha, 1) & "," & vbCrLf & vbCrLf & _
"A O.S. " & Plan1.Cells(linha, 7) & " aberta em " & _
Plan1.Cells(linha, 2) & " foi concluída." & vbCrLf & _
" Veja informações abaixo:" & vbCrLf & _
" Status: " & Plan1.Cells(linha, 6) & vbCrLf & _
" Ação tomada: " & Plan1.Cells(linha, 5) & vbCrLf & vbCrLf & _
"Atenciosamente," & vbCrLf & _
"Help Desk"
.Display 'Utilize Send para enviar o email sem abrir o Outlook
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End If
linha = ActiveCell.Row - 1
If Target.Address = "$D$" & linha Then
If Plan1.Cells(linha, 2) = "X" Then
End If
With OutMail
.To = Plan1.Cells(linha, 1)
.CC = ""
.BCC = ""
.Subject = "Título do email"
.Body = "Prezado(a) " & Plan1.Cells(linha, 1) & "," & vbCrLf & vbCrLf & _
"A O.S. " & Plan1.Cells(linha, 7) & " aberta em " & _
Plan1.Cells(linha, 2) & " foi concluída." & vbCrLf & _
" Veja informações abaixo:" & vbCrLf & _
" Status: " & Plan1.Cells(linha, 6) & vbCrLf & _
" Ação tomada: " & Plan1.Cells(linha, 5) & vbCrLf & vbCrLf & _
"Atenciosamente," & vbCrLf & _
"Help Desk"
.Display 'Utilize Send para enviar o email sem abrir o Outlook
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End If
End Sub
-
Bom dia pessoal,
Tenho uma planilha de follow-up de pedidos com um VBA para registro de modificação de células com data e envio de e-mail automático pelo Outlook.
Hoje ela funciona assim:
Modifico a coluna B, C e D, a data vai para a E, F e G respectivamente.
Quando coloco o X e dou ENTER na coluna B, um e-mail aparece na tela (só com outlook). Esse e-mail pode ser enviado sem abrir a tela modificando um detalhe nela.
O que quero fazer é que na coluna C e D também envie e-mails. E que sejam independentes, o primeiro X (a primeira cobrança) vou fazer um aviso normal, a segunda um e-mail mais forte e a terceira um aviso de cancelamento.
A Macro está abaixo e um modelo da planilha (não é a original mas pode ser vista) está anexado.
Desde já obrigado.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then Cells(Target.Row, 5) = Date
If Target.Column = 3 Then Cells(Target.Row, 6) = Date
If Target.Column = 4 Then Cells(Target.Row, 7) = Date
Dim OutApp As Object
Dim OutMail As Object
Dim texto As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
linha = ActiveCell.Row - 1
If Target.Address = "$B$" & linha Then
If Plan1.Cells(linha, 6) = "Concluído" Then
End If
With OutMail
.To = Plan1.Cells(linha, 1)
.CC = ""
.BCC = ""
.Subject = "Título do email"
.Body = "Prezado(a) " & Plan1.Cells(linha, 1) & "," & vbCrLf & vbCrLf & _
"A O.S. " & Plan1.Cells(linha, 7) & " aberta em " & _
Plan1.Cells(linha, 2) & " foi concluída." & vbCrLf & _
" Veja informações abaixo:" & vbCrLf & _
" Status: " & Plan1.Cells(linha, 6) & vbCrLf & _
" Ação tomada: " & Plan1.Cells(linha, 5) & vbCrLf & vbCrLf & _
"Atenciosamente," & vbCrLf & _
"Help Desk"
.Display 'Utilize Send para enviar o email sem abrir o Outlook
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End If
End Sub -
Felipe
Para falar a verdade nem olhei na tua primeira postagem, porque normalmente, as pessoas anexam na mesma mensagem do aviso.
Vamos ver se eu entendi o que você deseja:
Copie e cole está fórmula célula R4 da Plan1 e arraste para as demais linhas da coluna.
=SEERRO(PROCV(Q4;Plan2!$A$1:$B$1000;2;0);"Não exsite Endereço")
Dê retorno.
Se a resposta foi útil, clique em Curtir.
[]s
Tranquilo, eu postei lá porque poderia ser que outra pessoa também tivesse uma ideia.
Em relação a macro, funcionou MUITO bem. A planilha original não foi postada porque tem muitos dados comerciais.
Funcionou perfeitamente!
Essa planilha tem muita macro e programação VBA, na verdade sou melhor nisso. Quando estiver pronta eu pretendo postar com os detalhes dela, na rede não tem uma planilha de follow-up de pedidos de compra tão detalhada e com tantas ferramentas quanto essa que estou fazendo.
Aqui tem alguma área para isso?
No mais, muito obrigado!
Att
Felipe Carvalho.
Felipe, apesar de solicitar uma formula, segue opção c/ macro:
Sub Busca()
Dim ws1, ws2 As Worksheet
Dim i As Long: i = 4
Dim ul, ul2 As Long
Dim o que As String
Set ws1 = Sheets("plan1")
Set ws2 = Sheets("plan2")
ul = ws1.Cells(Rows.Count, "q").End(xlUp).Row
ul2 = ws2.Cells(Rows.Count, "a").End(xlUp).Row
With ws2.Range("a1:a" & ul2)
For i = i To ul
o que = ws1.Range("q" & i)
Set C = Nothing
Set C = .Find(o que, , LookIn:=xlValues, lookat:=xlWhole)
If Not C Is Nothing Then
firstAddress = C.Address
Do
ws1.Range("r" & i) = C.Offset(0, 1).Value
Set C = .FindNext©
Loop While Not C Is Nothing And C.Address <> firstAddress
Else
ws1.Range("r" & i) = "Não existe endereço"
End If
Next
End With
End Sub
Editado: Nao havia entendido o que queria dizer c/ Bx, mas ja corrigi o codigo acredito q agora está de acordo.
Desconsidere o anexo, ou copie o codigo acima e cole no modulo1, substituindo o presente.
Também funcionou bem!
Mas vou ficar com a formula. A planilha original tem MUITO VBA, sei que não tem nada a ver uma coisa com a outra. Mas eu quebrei muito a cabeça fazendo VBA para envio automático de e-mail, letras maiúsculas, data e hora automática, importar exportar, não quero mais tocar nas linhas de cód.
Muito obrigado pela ajuda, tenho certeza que vai cair como uma luva em futuras plans e outras pessoas.
-
Está no primeiro POST abaixo das imagens. Eu fiz o download 2 vezes para testar.
Arquivo(s) anexado(s)- Teste 1.xlsx 18,56K 2 Downloads
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais
Controle de vencimento
em Microsoft Office e similares
Postado
Boa noite,
Perdão a demora, deixei esse projeto de lado um pouco.
Apliquei sua ideia na planilha. Eu tinha feito de um jeito, mas ficou MUITO grande a formula, e dessa maneira tem uma INFO a mais. hehe
Muito OBRIGADO!
Eu já quase conclui essa planilha, mas apareceu outra demanda para ela.... eu precisaria que de alguma forma ela marcasse de amarelo datas que faltam 10, 30, 120 dia para vencer... deve ter isso em formatação condicional mas não consegui.
Fiz um código VBA mas conflita muito.
Enfim, desde já obrigado.