Página 1 de 2

Gestão da afetação de recursos a uma tarefa

Enviado: 02 Ago 2019 às 11:08
por JCabral
Boa tarde

Antes de mais, não estou a conseguir colocar aqui uma imagem - http://gurudoexcel.com/forum/viewtopic.php?f=13&t=10066 para ajudar à explicação da minha duvida , usando o Snaggy, pelo que optei por gerar um ficheiro word, já que não é permitido um PDF, e colocar aqui juntamente com o Excel de exemplo.

Caso não seja permitido fazer isto peço que me avisem.

Obrigado
Jorge Cabral

Gestão da afetação de recursos a uma tarefa

Enviado: 02 Ago 2019 às 13:42
por eduardogrigull
E se quando voce adiciona um DF ou FO eles fossem pra outra Listbox, com duas colunas, uma delas mostrando a %. E um botão do lado pra "mover" um registro pra cima ou pra baixo, assim como excluir. Daí a IstbDF ficaria só pra adição de novos registros... Trabalhar com uma Listbox só fica bem complicado

Gestão da afetação de recursos a uma tarefa

Enviado: 02 Ago 2019 às 14:00
por JCabral
Eduardo

Obrigado pela resposta.
E como ficaria o layout do Userform?
Como seria a introdução da percentagem de afetação?

Gestão da afetação de recursos a uma tarefa

Enviado: 02 Ago 2019 às 15:34
por eduardogrigull
É verdade... Talvez então com 2 ComboBox, e 2 Textbox ao lado com a porcentagem. Ai pra modificar o registro basta abrir o combobox e selecionar outro registro. E pra excluir, talvez com o RightClick nele, seria uma boa opção

Gestão da afetação de recursos a uma tarefa

Enviado: 02 Ago 2019 às 16:38
por JCabral
E quais as vantagens em ter 6 combobox (2DF+4FO)?

A minha duvida mante-se, como programar essa gestão?

Re: Gestão da afetação de recursos a uma tarefa

Enviado: 03 Ago 2019 às 12:21
por eduardogrigull
Consegui bolar um código, mas como da muito trabalho nao acabei em todos botoes.
Fiz uma nova planilha só para ter como base a "lógica" que pensei... Só está funcionando a funcao atualizar no primeiro ComboBox DF. Ele chama uma Sub chamada Atualizar, na qual voce ja manda junto o nome do botao, e se é pra excluir ou nao (0,1).

Re: Gestão da afetação de recursos a uma tarefa

Enviado: 03 Ago 2019 às 15:38
por osvaldomp
Olá, Cabral.

Em relação a este seu comentário " É esta gestão de selecionar/desseleccionar/gravar que não estou a conseguir programar.", veja abaixo se entendi corretamente as duas primeiros demandas.
desmarcar item ~~~> o primeiro código abaixo desmarca na lstbDF o segundo item marcado, ou o único.
marcar item ~~~> o segundo código percorre os itens não marcados na lstbDF e pede confirmação para marcar via MsgBox

Se o resultado for o desejado, similarmente os códigos poderão ser aplicados na lstbFO. Em ambos os casos será preciso acrescentar comandos para que o código verifique se os itens antes marcados já atingiram o limite. No seu projeto já há um código que faz essa contagem que poderá servir de base, é o Private Sub lstbDF_Change().
Código: Selecionar todos
Private Sub CommandButton1_Click()
 Dim i As Long
  For i = lstbDF.ListCount - 1 To 0 Step -1
   If lstbDF.Selected(i) = True Then lstbDF.Selected(i) = False: Exit For
  Next r
End Sub
Código: Selecionar todos
Private Sub CommandButton2_Click()
 Dim i As Long
  For i = 0 To lstbDF.ListCount - 1
   If lstbDF.Selected(i) = False Then
    lstbDF.Selected(i) = True
    If MsgBox("DESEJA MANTER ESTE ITEM SELECIONADO?", vbYesNo + vbQuestion) = vbYes Then Exit Sub
    lstbDF.Selected(i) = False
   End If
  Next i
End Sub


Gestão da afetação de recursos a uma tarefa

Enviado: 03 Ago 2019 às 16:52
por JCabral
Boa tarde Osvaldo

Obrigado pela sua resposta, mas não está a fazer o que pretendo, assim:
1) Se eu não selecionar uma tarefa, Listbox1, não devia permitir eu escolher nada em lstbDF
2)Quando eu seleciono NOME_DF_3, pex., ele marca sempre o primeiro da lstbDF
3)Se não está nenhum marcado, quando eu seleciono 2 Nomes, é marcado mais, o primeiro, e depois fica em loop continuo com a mensagem que "Só é possível escolher 2 NOMES";
4)Ou seja devia ser possível escolher dois nomes, carregar em CommandButton2 e aparecer o nome em lblRec1 e lblRec2 para ser possível colocar as percentagens e depois gravar na BD de BDBACK.

Obrigado
Jorge Cabral

Re: Gestão da afetação de recursos a uma tarefa

Enviado: 03 Ago 2019 às 16:59
por JCabral
eduardogrigull escreveu:Consegui bolar um código, mas como da muito trabalho nao acabei em todos botoes.
Fiz uma nova planilha só para ter como base a "lógica" que pensei... Só está funcionando a funcao atualizar no primeiro ComboBox DF. Ele chama uma Sub chamada Atualizar, na qual voce ja manda junto o nome do botao, e se é pra excluir ou nao (0,1).
Eduardo

Tenho que ver a implicação que esta grande alteração tem no resto código, que está praticamente pronto, só me faltando esta parte dos recursos que não estou a conseguir.
Fica mais fácil manter tudo o que já fiz e adaptar o código da gestão de recursos, do que alterar todo o outro código para adaptar a esta nova forma.

Obrigado
Jorge Cabral

Re: Gestão da afetação de recursos a uma tarefa

Enviado: 03 Ago 2019 às 17:51
por osvaldomp
Além do seu comentário que eu reproduzi no post anterior você ainda comentou: "A minha dificuldade está na programação dos botões para selecionar/desseleccionar DF/FO e depois gravar na BD em BDBACK".
Então eu postei uma sugestão para resolver as duas primeiras demandas dos seus comentários, aí você respondeu que não é isso que você quer e colocou outras 4 demandas que aparentemente não tem qualquer relação com as primeiras.
Entendi nada ! :?: ;)

Sugestão: elabore uma sequência lógica das ações que o usuário irá executar e das ações requeridas dos códigos.
Algo assim:
1. após carregar o Form o usuário seleciona 1 item na ListBox1
2. após a seleção acima os códigos deverão lançar na ... e ou deverão selecionar na ... (e aí informe origem e destino dos dados). Exemplo: lançar na Label30 (destino) o valor 36,25% (informe qual a origem desse valor)
3. aí o usuário irá selecionar ... blá blá blá
4 . após, os códigos ... blá blá blá
5. ...
6. ...

Gestão da afetação de recursos a uma tarefa

Enviado: 03 Ago 2019 às 17:56
por JCabral
Caro Osvaldo

Não sei se leu o ficheiro Word que anexei, lá expliquei tudo direito.
Não coloquei aqui porque não consigo colocar a imagem do userform, dá erro, para explicar direito o que pretendo.

Re: Gestão da afetação de recursos a uma tarefa

Enviado: 03 Ago 2019 às 18:04
por osvaldomp
Sim, eu li, e foi de lá que copiei os seus comentários.

Como com base nos seus comentários no Word eu não consigo lhe ajudar, pois a parte que está mais clara e direta lá não bate com o que você quer, então para tentar entender o que você ainda precisa no seu projeto foi que sugeri a lista com a sequência lógica.

Gestão da afetação de recursos a uma tarefa

Enviado: 03 Ago 2019 às 18:11
por JCabral
Osvaldo, o que se passa é que o seu código quando eu seleciono um DF, o três por exemplo, ele escolhe automaticamente o primeiro, e no ficheiro word eu, pelo menos tentei, já fazer um fluxo do que deve acontecer, vou replicar aqui.

A minha dificuldade está na programação dos botões para selecionar/desseleccionar DF/FO e depois gravar na BD em BDBACK;
Para não estar sempre a falar em DF e FO, vou-me só referir aos DF’s sendo que a única diferença é que num posso escolher até 2 (DF) e noutro posso escolher até 4(FO), assim, os critérios são:
1) Tenho sempre que escolher em primeiro lugar uma tarefa para fazer a afetação de um DF; ou seja se selecionar um DF e não tiver uma tarefa selecionada gera mensagem para selecionar primeiro uma tarefa e volta tudo ao principio;
2) Depois de selecionar uma tarefa pode acontecer o seguinte:
a. Se já tenho DF’s escolhidos é mostrado o nome nas label’s e a respetiva % de afetação e posso alterar com as setas, (<-) para desseleccionar e (->) para selecionar , tendo sempre em atenção que , no caso de ter dois DF’s selecionados o primeiro a desseleccionar é sempre, do segundo selecionado para o primeiro , no caso dos FO’s desselecciono primeiro o Nome_FO_4, depois o Nome_FO_3 e por ai fora…, com esta ação tenho que apagar o highlight na respetiva listbox e só depois posso gravar se tiver valor na % de afetação;
b. Caso não haja nenhum DF selecionado, posso escolher o nome na lstbDF digito a respetiva %de afetação e só com este dois “campos” preenchidos é que posso gravar na BD de BDBACK, colunas “O” a “Z”;
3) Ao gravar tenho que fazer também a gestão da gravação ou seja se desseleccionei um DF vou ter de apagar na BD; a escrita também será sempre por ordem ou seja
a. NOME_DF_1 escrevo na Coluna “O” de BDBACK;
b. % de Afetação de NOME_DF_1 escrevo na Coluna “P” de BDBACK;
c. ….e assim sucessivamente.
4) Nunca haverá um NOME_DF_2 sem haver um NOME_DF_1.


Estou a tentar refazer este fluxo de uma forma mais clara

Re: Gestão da afetação de recursos a uma tarefa

Enviado: 03 Ago 2019 às 18:37
por JCabral
Osvaldo

Não se assim fica mais claro:

1) Após carregar o Userform RECURSOS, tenho que escolher uma tarefa na Listbox1 – Os dados da Listbox1 são carregados da BD em BDBACK – não sendo permitido escolher nenhum DF/FO (tudo disable).

2) Depois de escolher uma tarefa, duas coisas podem acontecer:
a. Ou já existem DF’s escolhidos (1 ou 2);
b. Ou não está nada escolhido.

3) Se já existem DF’s escolhidos, aparece em lblRec1 o nome e em txtPerc1 a percentagem, para o caso de haver dois DF’s, aparece também o nome e a percentagem em lblRec2 e em txtPerc2;

Posso depois alterar o nome e/ou a percentagem de afetação, ou remover DF’s, apagando-se ou aparecendo o nome e a percentagem na respetiva labels e textbox
a. Para adicionar tenho que escolher um DF em lstbDF e depois carregar na seta (->), sendo que no máximo posso escolher dois, o que já está a fazer
b. Para remover um DF, temo sempre que começar pelo segundo nome e só depois se remove o primeiro (No caso dos FO removo primeiro o Nome4 e depois o Nome3 e assim sucessivamente) bastando para tal carregar na seta (<-);

4) O mesmo procedimento se aplica aos FO;

5) Depois de estarem definidos os DF e FO ao carregar no "cmdGravar" tenho que verificar se existe percentagem de afetação para todos os DF’s e FO’s selecionados e em caso afirmativo então gravar na BD de BDBACK, sendo que a gravação é feita a partir da coluna “O” e nesta ordem DF1, PERCDF1, DF2, PERCDF2, FO1, PERCFO1,…,FO4,PERCFO4, até à coluna “Z”

6) Sempre que houver um DF ou FO tem que haver obrigatoriamente uma afetação;

7) Não é obrigatório haver simultaneamente DF's e FO's, ou seja pode(m) haver só DF's ou só FO's

Se não estiver claro em algum ponto me diga
Obrigado
Jorge Cabral

Re: Gestão da afetação de recursos a uma tarefa

Enviado: 04 Ago 2019 às 08:54
por osvaldomp
Cabral, faltou informar qual a ajuda que você precisa em cada item.
Você escreveu, por exemplo:
6) Sempre que houver um DF ou FO tem que haver obrigatoriamente uma afetação; ~~~> o que você deseja que a macro faça neste item ?
Essa minha pergunta vale para todos os itens que você relacionou.

Re: Gestão da afetação de recursos a uma tarefa

Enviado: 04 Ago 2019 às 09:55
por JCabral
Osvaldo
Julgo que assim ficou mais claro o que se pretende para cada ponto.
Só não acrescentei nada no ponto 3 porque acho que já está claro.

1. Após carregar o Userform RECURSOS, tenho que escolher uma tarefa na Listbox1 – Os dados da Listbox1 são carregados da BD em BDBACK – não sendo permitido escolher nenhum DF/FO (tudo DISABLE)
1.1.1.Tudo DISABLE com exceção da Listbox1 e botão para SAIR;

2. Depois de escolher uma tarefa, duas coisas podem acontecer:

2.1. Ou já existem DF’s escolhidos (1 ou 2);
2.1.1.Faz o highlight dos DF’s escolhidos; Escreve os nome(s) e percentagem na Label(s) / Textbox(s); Coloca tudo ENABLE

2.2. Ou não está nada escolhido.
2.2.1.Coloca tudo ENABLE

3. Se já existem DF’s escolhidos, aparece em lblRec1 o nome e em txtPerc1 a percentagem, para o caso de haver dois DF’s, aparece também o nome e a percentagem em lblRec2 e em txtPerc2
Posso depois alterar o nome e/ou a percentagem de afetação, ou remover DF’s, apagando-se ou aparecendo o nome e a percentagem na respetiva labels e textbox
3.1. Para adicionar tenho que escolher um DF em lstbDF e depois carregar na seta (->), sendo que no máximo posso escolher dois, o que já está a fazer
3.2. Para remover um DF, tenho sempre que começar pelo segundo nome e só depois se remove o primeiro (No caso dos FO removo primeiro o Nome4 e depois o Nome3 e assim sucessivamente) bastando para tal carregar na seta (<-)

4. Depois de estarem definidos os DF e FO ao carregar no cmdGravar tenho que verificar se existe percentagem de afetação para todos os DF’s e FO’s selecionados e em caso afirmativo então gravar na BD de BDBACK, sendo que a gravação é feita a partir da coluna “O” e nesta ordem DF1, PERCDF1, DF2, PERCDF2, FO1, PERCFO1,…,FO4,PERCFO4, até à coluna “Z”
4.1.1.Verifico se para cada DF selecionado existe um percentagem, caso não existe, abro uma mensagem a dizer que falta a percentagem e coloco o foco na respetiva Textbox; Se está tudo OK gravo na respetiva linha da BD em BDBACK e de acordo com a sequência referida; Apago todos os highlight; Label’s; Textbox’s e coloco tudo DISABLE exceto Listbox1 e Botão de Sair (O procedimento volta ao principio)

5. Sempre que houver um DF ou FO tem que haver obrigatoriamente uma afetação;
5.1.1. É apenas para reforçar o que se disse no ponto anterior; Não havendo sai mensagem e é colocado o foco na respetiva Textbox;

6. Não é obrigatório haver DF's e FO's, simultaneamente, ou seja pode(m) haver só DF's ou só FO's

7. O mesmo procedimento se aplica aos FO

Se não estiver claro em algum ponto me diga
Obrigado
Jorge Cabral

Re: Gestão da afetação de recursos a uma tarefa

Enviado: 05 Ago 2019 às 12:30
por osvaldomp
Olá, Cabral.

No arquivo anexo acrescentei alguns itens da sua relação, outros dependem de você.
Coloquei na Plan1 os comentários sobre o que fiz e sobre o que falta fazer.

Gestão da afetação de recursos a uma tarefa

Enviado: 05 Ago 2019 às 13:43
por JCabral
Boa tarde Osvaldo,

Antes de mais obrigado mais uma vez pela sua ajuda.

Relativamente ao ponto 3), e ao seu comentário "Na minha opinião colocar um botão para selecionar é menos prático do que selecionar diretamente, mas ...", eu estou 100% aberto a sugestões para simplificar todo o processo; Por certo da forma que você está a pensar a parte de aparecer o nome e a introdução da percentagem também vai simplificar, assim como a escrita na BD em BDBACK

Continuo a verificar um problema e que é o seguinte, quando abro o userform e carrego p.ex. na "NOME da TAREFA_5" e depois seleciono em lstbDF qualquer nome, com exceção do primeiro, p.ex. NOME_DF_7, é selecionado sempre o primeiro nome, ou seja ficam logo dois selecionados, ou seja o primeiro item da lstbDF fica sempre escolhido.

Vou aguardar o seu comentário, porque se for alterado a forma de selecionar os DF/FO talvez o ponto 4) fique mais simples de implementar.

Obrigado
Jorge Cabral

Re: Gestão da afetação de recursos a uma tarefa

Enviado: 05 Ago 2019 às 14:25
por osvaldomp
JCabral escreveu: "... colocar um botão para selecionar é menos prático do que selecionar diretamente ..."
Eu coloquei um código atrelado ao botão conforme você solicitara, aí fica a critério do usuário selecionar manualmente ou via botão/código.

Por certo da forma que você está a pensar a parte de aparecer o nome e a introdução da percentagem também vai simplificar, assim como a escrita na BD em BDBACK
Repetindo o que comentei na Plan1: no item acima você precisa ajustar os seus códigos, após isso eu farei o código para replicar os dados do Form na planilha BDBACK.

Continuo a verificar um problema ...
Esse problema é uma nova demanda, você não relatou antes. E, como a seleção é feita pelos seus códigos, então eu sugiro que você faça os ajustes que desejar. A propósito, não entendo porque você reporta esse problema ao invés de corrigi-lo, pois os códigos que você elaborou no seu projeto apresentam complexidade bem maior do que a complexidade requerida para efetuar essa correção. Quero dizer que você tem conhecimentos mais que suficientes para efetuar essa correção.
Resumindo, após você efetuar os ajustes nos seus códigos, conforme comentei acima e conforme comentei na Plan1, então disponibilize o arquivo, aí farei o código para replicar os dados do Form na planilha BDBACK. É o que resta fazer de minha parte.

Gestão da afetação de recursos a uma tarefa

Enviado: 05 Ago 2019 às 14:54
por JCabral
Boa tarde Osvaldo

Em primeiro lugar esclarecer que a maior parte do código, senão a totalidade, que apresento não foi desenvolvido por mim, mas sim por colegas aqui do forum, julgo que o Babdallas, se eu tivesse o nível de conhecimento para desenvolver aqueles códigos não estaria aqui a pedir ajuda para este caso.

Quanto ao problema que reporto eu já tinha referido ele no post #46465, mais acima, não é um nova demanda, apenas implementei os seus códigos do post #46462 e apareceu aquele problema;

Quanto ao botão para selecionar é certo que foi uma forma minha de pensar o problema; Certamente não foi a melhor opção pelo que você disse, que tem muita mais experiência do que eu, razão pela qual eu disse que estava aberto a sugestões da sua parte para simplificar o problema.

Vou tentar ajustar os códigos do Babdallas.

Obrigado mais uma vez.
Jorge Cabral