Ir ao conteúdo
  • Cadastre-se

edcronos

Membro Pleno
  • Posts

    265
  • Cadastrado em

  • Última visita

posts postados por edcronos

  1. como eu não sabia de onde você ia rodar a macro

    eu coloquei na 

    LISTAS DE CONTROLE (GERAL)

    no modulo1

    Sub Teste()' Workbooks.Open ("C:\Lista Certificados (GERAL).xlsm")    With ThisWorkbook.Sheets("PT-LC-001")        l = .Cells(Rows.Count, 2).End(xlUp).Row    ' ultima linha com dados da planilha        rane = "B6:S" & l    ' monta a range        Workbooks("Lista de Certificados (GERAL).xlsm").Sheets("Plan1").Range(rane).Value2 = .Range(rane).Value2        '  ActiveWorkbook.Close savechanges:=True 'salvar True    End WithEnd Sub
  2. a sua planilha está indo até a ultima linha de usada apesar de não estar preenchida

     

     

     

    eu posso sugerir uma serie de mudanças para melhorar a performance

     

    deixar toda a lista em uma aba sem formatação , sem formulas como banco de dados

    não use tabelas do excel, apenas os dados

    deixar uma aba para pesquisa e visualização do que se quer, essa sim pode se colocar as formulas e formatações, mas maneirando

     

    essa macro é muito fácil de se fazer, mas essa sua planilha vai agarrar qualquer coisa que colocar

  3. eu não sei o que é, mas tem algo estranho nessa macro e o fato de abrir o user form não funcionar

    mas quando uma macro está rodando prende o funcionamento tanto da planilha quanto do vba e isso inclui o userform

     

    mas tem coisa que pode ser melhorada

    usar range completa em vez de coluna por coluna

        ActiveWorkbook.Sheets("Plan1").Range("B6:K100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("B6:K100000").Value2        ActiveWorkbook.Sheets("Plan1").Range("M6:P100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("M6:P100000").Value2            ActiveWorkbook.Sheets("Plan1").Range("S6:S100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("S6:S100000").Value2

    e mais uma coisa, essa macro não devia demorar tanto para atuar assim

     

     

    quando você fala de uma planilha para outra você está falando de ABAS ?

     

    ActiveWorkbook =planilha ativa

    ThisWorkbook= planilha onde está a macro

     

    no caso você está chamando a macro de outra planilha para preencher a planilha ativa com os dados dela?

    se for isso, quando se executa o userfor da outra planilha a outra planilha passa a ser a ativa

     

    para isso funcionar você tem que referenciar o nome da planilha para onde vai os dados

     

    Workbook("nomeplanilhaNova").Sheets("Plan1").Range("B6:K100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("B6:K100000").Value2

     

    assim não importa qual planilha vai estar ativa e você pode fazer a operação a partir da planilha onde tem as macro e o usefor que você quer

    • Curtir 1
  4. não consegui me adaptar,

    tem tudo que eu não gosto,

    Sub BuscaPinta(ByVal Txtvall, ByVal CorN)  '  corN = wdBrightGreen    Dim Ring As Range    Application.ScreenUpdating = False    With ActiveDocument.Range        With .Find            .ClearFormatting            .Replacement.ClearFormatting            .Text = Txtvall            .Replacement.Text = ""            .Forward = True            .Wrap = wdFindStop            .Format = True            .Execute        End With        Do While .Find.Found            Set Ring = .Duplicate            '.Font.ColorIndex = wdAuto            Options.DefaultHighlightColorIndex = CorN    'wdYellow    '            .HighlightColorIndex = CorN    'wdYellow '            .End = Ring.End + 1            .Collapse wdCollapseEnd            .Find.Execute        Loop    End With    Application.ScreenUpdating = TrueEnd Sub

    o write do libre office parece ser mais fácil automatizar

     

    eu queria o wordpad, mas pelo que li não tem como fazer uma automatização nele

     

    vou acabar usando o excel como editor de texto :P 

  5. bom dia @Patropi

     

    é, isso de forum é um vicio,

    e olha que agora também estou tentando aprender C++

    apesar de eu estar mais calmo

     

    ----------------------------------------------------------
    eu procurei, mas só achei coisas limitadas, mesmo esse que você postou eu já tinha visto
     

    não sei se depois de mexer com o excel, o word parece bem limitado,

    ou melhor, totalmente diferente

     

    fiz uma macro aqui para localizar e pintar trechos de texto, como se fosse uma formatação condicional

    mas por algum motivo só funcionou 2 vezes, e agora não consigo descobrir o que fiz que fez parar de funcionar

     

    para mim servia até o word pad ou outro mais leve, mas tenho que automatizar algumas ações

  6. VEJA SE É ISSO
     

    não testei completamente , para falar a verdade nem sei se entendi

    Sub Baixa2()    Application.ScreenUpdating = False    With Sheets("Registro")    c = Cells(1, "J").Column    lf = .Cells(Rows.Count, c).End(xlUp).Row    l2 = Sheets("Pagos").Cells(Rows.Count, "b").End(xlUp).Row + 1    For L = lf To 3 Step -1        If .Cells(L, c).Value2 = "PAGO" Then            Sheets("Pagos").Range("B" & l2, "i" & l2).Value2 = .Range("B" & L, "i" & L).Value2           .Rows(L).EntireRow.Delete            l2 = l2 + 1        End If    Next    End With   MsgBox "Baixa de Pagamentos Realizada Com Sucesso", vbOKOnly, "Atenção"    Application.ScreenUpdating = True    'ActiveWorkbook.SaveEnd Sub
  7. eu também sou curioso e também já me ajudaram muito

    como você não postou uma planilha como o basole falou nao tem como adivinhar o que está acontecendo

     

    na sua macro não tem definição do que é entrada2

    poderia ser uma variavel publica definida em outra macro

    poderia ser o nome de um textbox, de combobox

     

    eu falei que para ser ajudado precisa passar o maximo de informação possivel
    eu por minha vez faço apenas perguntar confusas e não posto exemplos então tenho que me contentar com suposições e buscar minhas próprias soluções, "sou enrolado mesmo"

     

    mas já que você acha que estou sendo mau educado, me abstenho de tentar ajudar

     

    e somente posso falar poste uma planilha igual a que está usando para que outros possam solucionar o seu problema

  8. eu não consigo visualizar o que é  ENTRADA2

    quando você usou value deu erro porque não era um objeto

    sem value deu erro porque não tem um nome de sheet valido

     

    se for o nome de uma celula na planilha você tem que usar

     

    Sheets(range(ENTRADA2).Value).

     

    fora isso você tem que mostrar o que é ENTRADA2

     

    para ser ajudado você tem que primeiro se auto ajudar e dar o maximo de informação possivel,

    ou então apenas absorver o pouco de informação passada

     

    eu sou enrolado para pedir ajuda, muito mais que você,

    mas eu não fico na dependência e faço teste e pesquisas para saber onde estou errando

  9. aquilo la não é vba, é C++

     

    e é a minha linha de raciocínio que é enrolada para aprender, lá eu comecei com uma coisa e acabei em outra

    ano passado quando comecei com o vba foi a mesma coisa

     

    mas a respeito do novo problema, aconselho a abrir um novo topico

    algo como "separar valor moeda de texto"

     

    talvez alguem apareça com uma solução antes.

    e colocar o link desse aqui junto

    • Curtir 1
  10. tem

    mas para isso vou ter que ter mais detalhes de como está o texto

    e varios exemplos para identificar diferenças padrões


    prepare um exemplo com mais detalhes com as posições corretas

    s´não vou prometer para hoje nem amanha porque estou quebrando a cabeça com algo aqui

     

    mas basicamente a macro vai correr o texto procurando numeros

     

    algo como isso que eu fiz aqui

    só que em C++ "estou tentando aprender"

     

    http://forum.clubedohardware.com.br/forums/topic/1139109-char-qual-a-maneira-certa-de-usar/

    de uma olhada no final

  11. não é para colocar * no historico eu fiz isso na macro

    e o nome da macro tem que está igual

    aqui rodou


    como teste coloque a aba1 como Fornecedores e cole os nomes de fornecedores na cola A essa que você colocou como exemplo

    a aba 2 como HISTORICO DE RECEBIMENTO e cole o historico na coluna A


    ou troque os nomes da abas na macro

    pLf = "Fornecedores"

    pLh = "HISTORICO DE RECEBIMENTO"

     

     

     

    exemplo.rar

    • Curtir 1
  12. Estou fazendo uma macro aqui

    estou colocando para listar o nome do fornecedor ao lado do historico, vai fica mais rápido e você não vai ter duplicatas, podendo comparar direto com o banco atual de fornecedores ou algo assim

    Sub busca()'Cells(linha, coluna)='Cells(l, 1) = Cells(linha, "A")    pLf = "Fornecedores"    ' aba de nomes    lif = 2    'linha inicial    lff = Sheets(pLf).Cells(Rows.Count, 1).End(xlUp).Row    pLh = "HISTORICO DE RECEBIMENTO"   'aba de busca    lih = 2    lfh = Sheets(pLh).Cells(Rows.Count, 1).End(xlUp).Row    ' varre o histico    For h = lih To lfh        ' pega o texto do historico        hov = Sheets(pLh).Cells(h, 1).Value2        'varre a lista de fornecedores        For f = lif To lff            'compara as duas listas            t = UCase(hov) Like "*" & UCase(Sheets(pLf).Cells(f, 1).Value2) & "*"                        If t Then                ' se coincidir cola nome do fornecedo do lado e pula para o proximo                Sheets(pLh).Cells(h, 2).Value2 = Sheets(pLf).Cells(f, 1).Value2                Exit For            End If        Next    NextEnd Sub

    inicialmente ficou assim, o nome da aba tem que ser igual

    • Curtir 1
  13. não sei como tem a entrada de dados e nem como é o projeto no geral

    mas o ideal mesmo seria ter os dados já com entradas separadas,

     

    id. --- fornecedor ---endereço ---...

     

    e assim se ter toda a informação já pronta para ser usada em qualquer situação sem precisar ficar adaptando

     

    você pode ter um cadastro dos fornecedores com os quais trabalha com ID

     

    um cadastro de mercadorias com o id dos fornecedores

    e por aí vai

     

    mas como não sei qual a origem dos dados e a sua real necessidade ou possibilidade de implementação...

     

    ----------------------------------------------------------------------------------------------------------------

     

    você não precisa ter as duas informações na mesma aba

    já que vai se duplicado acho que o melhor é deixar em abas separadas

    • Curtir 1
  14. Eu desejo criar meu próprio compilador do 0, porém não acho nenhum lugar explicando minhas dúvidas:

    O mais perto que eu achei era um criando uma compilador usando C#, eu quero criar uma linguagem nova, do 0. 

    Por exemplo: Vamos supor que o C# não existe ainda, e eu vá cria-lo a partir do 0, em vez de eu criar uma linguagem a partir de uma que já existe

    Sei que é muito difícil, porém estou capacitado.

    Sei as fases do compilador, tipo, análise léxica, semântica, sintática, esse tipo de coisa. 

    Só que não sei como definir tipos de código da minha linguagem, não sei por onde começar, tipo:

    onde eu vou escrever a estrutura da minha linguagem;

    como eu vou definir as funções dos códigos e o resultado.

    Eu quero criar um linguagem imperativa, só que mais simplificado que essas que vemos por ai é claro. E junto criar minha plataforma onde essa minha linguagem pertencesse, assim como o .NET

     

     

    você pode fazer um plugin para o Netbeans

     

    https://platform.netbeans.org/tutorials/60/nbm-prolog.html

    https://netbeans.org/community/magazine/html/03/schliemann/

    http://wiki.netbeans.org/SchliemannNBSLanguageDescription

    https://platform.netbeans.org/tutorials/nbm-mfsyntax.html#gettingtoknowthesample

     

    https://sites.google.com/site/tecguia/home/crie-sua-propria-linguagem-seu-proprio-compilador

    • Curtir 1
  15. estou tentando me acostumar com a forma de escrever do c

    passo mais tempo ajeitando posição de {}, colocando ponto e virgula que esqueço, e == nos if

     

     

    a função ficou assim, tem algumas falhas como 2.000,50, eu não coloquei para pegar os centavos

    mas como não serviria para nada mesmo vou deixar assim mesmo

    o nome da função deveria ser separanum

    #include <cstdlib>#include <iostream>#include <string.h>using namespace std;int QLt(char* lt){  int t = 0;  while(*lt != '\0')  {    lt++;    t++;  }  return t;}//-----------------------------------------------------------------------------------------double convertNUM( char* StrNum, char* StrReferencia, int ocorrencia, int  quantidade = 0){  double valorX = 0;  int n = 0, L2 = 0, L = 0, C, t = 0, ts, tr;  ts = QLt(StrNum);  tr = QLt(StrReferencia);  int  d2, ic, pt = 0;  if(ocorrencia >= 0 )  {    L = 0;    d2 = ts + 1;    ic = 1;  }  else//if(ocorrencia < 0 )  {    L = ts;    d2 = -1;    ic = -1;  }  while(L != d2)  {    for (C = 0; C < tr; C++)    {      if (StrNum[L] == StrReferencia[C])      {        n = n + 1;        if (C < 10)        {          if(ic == 1)          {            valorX = valorX * 10 + C;            if (n == 1)            {              L2 = L-1;            }          }          else//  if(ic == -1)          {            if(n > 1)            {              valorX = ((C * pt) + valorX);              pt = pt * 10;            }            else            {              valorX = C ;              pt = 10;            }          }        }        goto prxL;      }    }//for StrReferencia    if (n > 0)    {      t += ic;      if (ocorrencia == t || ocorrencia == 0)      {        if (ic == -1)        {          L2 = L;        }        if(StrNum[L2] == '-')        {          valorX = -valorX;        }        return valorX;      }      else      {        valorX = 0;        n = 0;        pt=0;      }    }prxL:    ;    L += ic;  } //for StrNum  return 0;}//=========================================================================//========================================================================int main(){  char Arnut[] = "0123456789.";  char texto[100];  strcpy(  texto, "maria pagou R$2.000,00 na data 20/10/2015, 2 dias de atraso");    cout  << "valor pago: " << convertNUM(texto, Arnut, 1) << endl;  cout  <<"Dia: "<<  convertNUM(texto, Arnut, -4) << endl;  // aqui a função começa a ler o texto da direita  para a esquerda  cout  <<"mes: " <<  convertNUM(texto, Arnut, -3) << endl;  cout  << "Ano: "<< convertNUM(texto, Arnut, -2) << endl;  cout  << "dias de atraso: " << convertNUM(texto, Arnut, -1) << endl;  return  0;}

     

    depois de ajustar algumas coisas na IDE o codigo ficou melhor de postar, mas para escrever ainda tenho que afastar bem para não me perder

     

    vou escrever algo diferente para ir me acostumando com  as funções e não só com a escrita

     

    por motivo de comparação

    como ficaria a mesma coisa escrita de forma mais formal ?

  16. o post é bem antigo

    mas se você é iniciante pode tentar o Falcon

    eu me dei bem com ele, isso se for para C/C++

     

    é bem intuitivo de usar

    eu tenho o ms aqui mas nem usei

     

    mas tem um monte para escolher

    http://falconcpp.sourceforge.net/screenshots/
    https://www.facebook.com/falconcpp

    https://netbeans.org/
    http://www.codeblocks.org/
    http://www.geany.org/Main/HomePage

     

    se pegar o netbeans escolha a versão somente para C++

     a outra completa é bem estranha

  17. o objetivo do codigo é aprende e me acostumar com os {}

     

    mas já está todo bagunçado porque com o tira e bota no meio das {}

    o auto complete da ide me enrolou e eu perdi a sequencia do }

    #include <cstdlib>#include <iostream>#include <string.h>using namespace std;int QLt(char *lt){	int t = 0;	while(*lt != '\0')		{			lt++;			t++;		}	return t;}double convertNUM( char * StrNum, char * StrReferencia, int ocorrencia, int  quantidade = 0){	double valorX = 0;	int n = 0, L2 = 0, L = 0, C, t = 0, ts, tr;	ts = QLt(StrNum);	tr = QLt(StrReferencia);	int  d2, ic, pt = 0;	if(ocorrencia >= 0 )		{			L = 0;			d2 = ts;			ic = 1;		}	if(ocorrencia < 0 )		{			L = ts;			d2 = 0;			ic = -1;		}	while(L != d2)	//for (; L == d2; L+=ic)	//for ( L = 0; L <= ts; L++)		{			for (C = 0; C < tr; C++)				{					if (StrNum[L] == StrReferencia[C])						{							n = n + 1;							if (n == 1)								{									L2 = L;								}							if (C < 10)								{									if(ic == 1)										{											valorX = valorX * 10 + C;										}									else										{																							if(n > 1)													{														pt *= 10;														valorX = ((C * pt) + valorX);													}												else													{														valorX = C ;														pt = 10;													}										}								}							goto prxL;						}				}//for StrReferencia			if (n > 0)				{					t += ic;					if (ocorrencia == t || ocorrencia == 0)						{							if(StrNum[L2 - 1] == '-')								{									valorX = -valorX;								}							return valorX;						}					else						{							valorX = 0;							n = 0;						}				}prxL:			;			L += ic;		} //for StrNum	return 0;}int main(){	char Arnut[] = "0123456789.,";	char vkk[100] = "2maria pagou R$2.000,00  para joão com %20 de descont7o9";	int di = 1;	cout  <<  convertNUM(vkk, Arnut, di) << endl;	strcpy( Arnut, "0123456789.");//	char vkk = new *char;	strcpy(  vkk, "A data de pagamento é 20/10/20150, 2 dias de atraso");	di = -2;	cout  <<  convertNUM(vkk, Arnut, di) << endl;	return  0;}

    com o else no inicio as variaveis estava ficando com valo maluco, assim como você pode ver na imagem

     

    quando retornava alguma coisa que fazia sentido estava assim

    #include <cstdlib>#include <iostream>#include <string>using namespace std;const char Arnut[] = "0123456789-.,";int len(char * lt){	int t = 0;	while(*lt != '\0')		{			lt++;			t++;		}	return t;}double convertNUM( char * StrNum){	double valorX = 0;	int n = 0, L2 = 0, L, C, t;	t = len(StrNum);	for ( L = 0; L <= t ; L++)	  {			for (C = 0; C < 12; C++)				{					if (StrNum[L] == Arnut[C])						{							n = n + 1;							if (n == 1)	{L2 = L;}							if (C < 10){	valorX = valorX * 10 + C;}							goto prxL;						}				}			if (n > 0)				{										if (L2 > 0)						{							if(StrNum[L2] == '-')								{								valorX =-valorX;																	}						}					return valorX;//L2;//				}prxL:			;		}	return 0;}int main(){char * vkk = new char[100];		vkk = "aa -2.009ughjghjghjgjgh";	cout  <<  convertNUM(vkk) << endl;	return  0;}

    depois coloquei para pegar  as sequencias numericas

    "R$-2.009 , pago com %10"

    convertNUM(vkk,1)-->>2009

    convertNUM(vkk,2)-->>10

     

    aí tentei colocar para pegar os numeros em sentido inverso

    tipo vkk,-1 = ultma sequencia numerica

    tipo vkk,-2 = penúltima sequencia numerica

     

    primeiro foi com o for mesmo

     

    for (; L == d2; L+=ic)

    mas aí o L asumia de cara o valor de d2 e ic não ficava negativo, pensei que era o for e passei para o while

     

    mas as variaveis que eu já tinha setado como 0 no inicio apareceram com valores estranhos, como se pode ver na imagem

    depois que troquei o o ELSE por outro teste IF  já tinha bagunçado o codigo todo

     

    eu tenho uma macro parecida funcionando  na minha planilha " nem uso"

    ela é capaz de buscar sequencias

    é como um like, mas com a opção de quebra e numero mínimo de caracter encontrado, só não tem a questão de numeros

    tipo eu procuro algo mas não sei como se escreve então eu coloco mais ou menos e coloco o minimo de letras iguais

    pode colocar uma lista de ignorados,sobre pega do final para o inicio ajuda para buscar ultimas ocorrencias de grandes centenças

     

    se eu tiver animo vai ser capaz de pegar sequencias com tamanho definido também

     

    "552198980000"

    convertNUM(vkk,1,2)-->>55 --->=1ª sequencia de 2 letras

    convertNUM(vkk,2,2)-->>21--->=2ª sequencia de 2 letras

    convertNUM(vkk,2,4)-->>9898--->=2ª sequencia de 4 letras

    convertNUM(vkk,-1,4)-->>0000--->=1ª sequencia de 4 letras de traz para frente

     

    nesse caso ele somente reconhece sequencia numericas

    mas se trocasse para char poderia retornar qualquer tipo de sequencia "trabalhando a macro"

    é mais para estatisticas e buscar em listas inregulares

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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!