Notifications
Clear all

Limpar dados e Enumerar

12 Posts
3 Usuários
0 Reactions
1,668 Visualizações
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Olá! Não entendo muito de VBA, mas explicarei o que eu preciso pra ver se isso é possível.
LIMPAR DADOS: Preciso de uma macro que possa apagar dados de colunas aleatórias (Colunas C,D,E,F,H e I)percorrendo e apagando até a linha 35. Mas, na seguinte condição, se toda o intervalo de A3:I35 estiver preenchido, ou não-vazio.
ENUMERAR: Daí, se essa tarefa for realizada, automaticamente a coluna A, seja numerada continuando a partir do último número dessa planilha, ou seja o valor encontrado em A35+1. Por exemplo: A planilha original, na coluna A, a numeração começa em A3 e vai do número 1 ao 33, terminando assim em A35. Então após LIMPAR DADOS, o que necessito é que em A3 passe a 34, A4= 35, A5= 36... até completar. Quando apagar novamente ele continue renumerar a partir do número existente em A35. :oops: :cry: :mrgreen:

Não sei se isso é possível, mas é exatamente isso que preciso.

Att.

Josy Martins ;)

 
Postado : 28/09/2015 8:01 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Josy, favor detalhar melhor :

apagar dados de colunas aleatórias (Colunas C,D,E,F,H e I)percorrendo e apagando até a linha 35.
Aleatórias quer dizer que pode ser a coluna C, E, H ou D, F, I ? Individuais ou ser fixa sempre de C a I ou de C até a ultima Coluna ?

Mas, na seguinte condição, se toda o intervalo de A3:I35 estiver preenchido, ou não-vazio
Acima citou a partir de "C", então entraria a coluna "A" tambem ? Se de "C até I" tem de estar todas preenchidas ou se tivermos uma celula em branco por exemplo na coluna "D" apagar só esta coluna ?

necessito é que em A3 passe a 34, A4= 35, A5= 36... até completar
É só capturar a ultima linha preenchida em uma variável e somar mais 1, mas o que quer dizer com o "Até completar" ?

[]s

 
Postado : 28/09/2015 8:49 am
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Olá, Mauro Coutinho!
Agradeço o seu contato. Vou deixar uma planilha de exemplo pra que vc possa visualizar melhor o que eu preciso.
Desculpe, se não me expressei bem :oops: :roll: ... Disse "aleatoriamente", pq sei que as macros em geral percorrem linhas e colunas. Mas, nessa plan(Folha), a Coluna B e G contém fórmulas, que necessito que permaneçam. Já a Coluna A, é uma numeração digitada, não tem problema ser apagada, desde que possa enumerar novamente continuando a partir do último número.
Se você puder ver o anexo, se tiver um tempo, talvez possa me entender. Desde já, agradeço seu contato.

Um abraço!

Att

Josy Martins ;)

 
Postado : 29/09/2015 4:58 am
(@mprudencio)
Posts: 0
New Member
 

Não me preocupei com declaraçao de variaveis isso vc pode ajustar de acordo com o seu projeto.

Ve se isso atende

 
Postado : 29/09/2015 7:39 am
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Olá!

Muito obrigada! Ficou perfeito!!!

 
Postado : 29/09/2015 8:12 am
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Não me preocupei com declaraçao de variaveis isso vc pode ajustar de acordo com o seu projeto.

Ve se isso atende

Existe uma forma dessa macro não rodar uma vez que não estiver preenchido totalmente de A3:I35, e não enumere a coluna A?

 
Postado : 29/09/2015 8:19 am
(@mprudencio)
Posts: 0
New Member
 

O que vc pode fazer é condicionar o preenchimento com base o preenchimento da planilha

A partir de A4

=se(b4="";"";a3+1)

Assim vai preencher somente as celulas que existir algum valor na coluna B

 
Postado : 29/09/2015 9:05 am
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Agradeço a sua ajuda, Marcelo! Ficou legal, mas ainda assim, apaga os dados independente do intervalo estar preenchido ou não.

Existe uma forma dessa parte da macro que apaga os dados, não rodar caso o intervalo não seja preenchido?

Desde já obrigada pela sua atenção!

Um abraço!

Att.

Josy Martins

 
Postado : 30/09/2015 6:26 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Josy, a rotina abaixo fará a verificação por Linhas e Colunas especificas se temos alguma celula vazia, e sai da rotina assim que encontrar a primeira ocorrencia, ja implementei conforme sua informação de linha e coluna, ela tem de ser rodada antes da rotina que Marcelo passou, veja se consegue adaptar com a dele, apesar que é só fazer a chamada a rotina dele se ao final não localizar nenhuma vazia.

Sub VerificaCelulaVaziaEmColunas()
Dim sEnd As String
Dim nRow As Integer

Dim ColunasSolicitadas As Variant
Dim Col

'Informa o numero de linhas
nRow = 35 'Qde de linhas

'Carregando Array das colunas C, D, E, F, G, H
ColunasSolicitadas = Array(3, 4, 5, 6, 8, 9)

    For Linha = 3 To nRow 'Iniciamos na linha 3
        
        For Each Col In ColunasSolicitadas 'Para cada coluna
                      
            If Cells(Linha, Col) = "" Then 'Verificamos em cada Linha de cada coluna se esta vazia
                sEnd = Cells(Linha, Col).Address(0, 0)
                
                MsgBox "Range:- " & sEnd & " Vazia"
                
                Exit Sub 'Se Vazia Saimos da rotina
                
            End If
            
        Next Col
        
    Next Linha

End Sub
 
Postado : 30/09/2015 8:17 am
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Olá, Mauro Coutinho!

Muito obrigada por sua disposição em ajudar! Gosto muito das suas respostas , pq vc explica o que a macro está realizando passo a passo. Pra quem, como eu tem dificuldade, ou aprende sozinho(a), é uma ótima maneira de ensinar/aprender.

 
Postado : 30/09/2015 8:37 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Josy, eu procuro sempre que possivel fazer de forma que fique bem claro, e no inicio eu havia lhe pedido um modelo, mas o tempo as vezes não ajuda e quando vi que já tinham respondido fiquei só acompanhando, e como hoje tive um tempinho, olhei melhor seu modelo agora, então ajustando a dica do Marcelo e esta minha em uma só rotina ela ficaria assim.

Sub VerificaCelulaVaziaEmColunas_V2()
Dim sEnd As String
Dim nRow As Integer
Dim sPreenchida As Boolean
Dim Ultnum As Long

Dim ColunasSolicitadas As Variant
Dim Col

'Informa o numero de linhas
nRow = 35 'Qde de linhas

'Carregando Array das colunas C, D, E, F, G, H
ColunasSolicitadas = Array(3, 4, 5, 6, 8, 9)

    For Linha = 3 To nRow 'Iniciamos na linha 3
        
        For Each Col In ColunasSolicitadas 'Para cada coluna
                      
            If Cells(Linha, Col) = "" Then 'Verificamos em cada Linha de cada coluna se esta vazia
                sEnd = Cells(Linha, Col).Address(0, 0)
                
                MsgBox "Range:- " & sEnd & " Vazia"
                sPreenchida = False
                Exit Sub 'Se Vazia Saimos da rotina
                
            End If
            sPreenchida = True
        Next Col
        
    Next Linha
    
    'Se tudo preeenchido limpa a planilha
    If sPreenchida = True Then
        
        Ultnum = Range("A35").Value
        Range("A3") = Ultnum + 1
        
        Range("C3:F35").ClearContents
        Range("H3:I35").ClearContents
        
    End If
    
End Sub
 
Postado : 30/09/2015 8:58 am
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Mauro, estou sem palavras... Na verdade, de queixo caído até agora. :oops: :oops: :oops: E só pra constar tb, envergonhada. :oops: :oops: Que nível de intelecto! Muito obrigada!!!
Depois disso tudo tem luzes piscando no meu cérebro, rsss... não sei se viajando em outra órbita ou fibrilando... espero q a primeira opção... :roll: kkkk :lol:

Parabéns!!!

 
Postado : 30/09/2015 10:35 am