Sviluppare funzionalita su Microsoft Office con VBA Comando Vba, scrivi dati alla fine delle celle evidenziate

LoginRegistrati
Stai vedendo 21 articoli - dal 1 a 21 (di 21 totali)
  • Autore
    Articoli
  • #23352 Risposta
    Dodi
    Dodi
    Partecipante

      Buona sera a tutti

      chiedo il vostro aiuto e se qualcuno è così gentile da darmi una mano, 

      sto creando un Cronoprogramma in excel 

      avrei  la necessità di associare una macro al tasto "copia dati"  presente sul foglio. 

      Quindi  in caso di necessità clicco sul tasto e mi riporta gli stessi dati a fine riga colorata per visionare l'attività di riferimento.

      In pratica quello che mi occorre è un codice che mi permette di  copiare i dati della colonna "C" a partire dalla riga "C10" e mi copia le descrizioni delle lavorazioni a fine barra colorata, 

      premetto che la barra colorata varia in funzione della data di inizio e fine attività, quindi  può essere sempre variabile. 

      Chiedo il vostro aiuto,  perchè non so come far capire al comando di copiare i dati alla fine di ogni singola riga  colorata. Se vi era un Numero o una lettera sapevo come far copiare i dati con un finalcol

      per farvi capire allego una foto di esempio, allego anche il file. 

      se qualcuno di voi e così gentile di aiutarmi. 

      ringrazio anticipatamente. 

       

      Allegati:
      You must be logged in to view attached files.
      #23355 Risposta
      Luca73
      Luca73
      Partecipante
        30 pts

        Ciao 

        hai allegato un filee xlsx senza macro. ma tu le barre come lo ottieni a mano o con una macro?

        Se usi una mcro la cosa più semplice sarebbe che alla fine di ogni riga lo scrivi diretttamente.

        Inoltre vedo che in alcune righe (la 21 o 10 del gant) c'è una cella bianca. è normaLE O C'è UN ERRORE?

        Ciao

        Luca

        #23356 Risposta
        Dodi
        Dodi
        Partecipante

          ciao Luca e grazie per la risposta.

          in pratica le celle si modificano in automatico in base alla data inizio e data fine. 

          le celle si colorano in automatico con la formattazione condizionale,

          ed  appunto mi occorreva un codice per una macro da applicare al tasto "Copia dati"  che mi permetteva di trascrivere  ogni singola riga alla fine della barra colorata come all'esempio dello screeshot allegato precedentemente.

          scriverle a mano come dici te  è un lavorone perchè  ho centinaia di righe e selezionarle una ad una e scrivere i dati della colonna C" a partire dalla cella C10 diventa un eterna vita. 

          per quello chiedevo il vostro prezioso aiuto per una formula Vba per la macro. (ammesso che si possa fare). questa funzione mi serve perchè se ho la necessità di sapere l'attività a fine riga colorata ci cliccavo sopra e mi veniva scritto in automatico senza percorrere la riga con il cursore.  

          spero di essere stato chiaro nell'esporre il problema. 

          intanto grazie mille per l'interessamento. 

          spero tanto che esiste un modo

          nelle riga che hai segnalato non c'e errore ma se vedi evidenzia la verticale riferita alla data odierna e quindi vedo sulla barra a che punto sono  

           

          #23358 Risposta
          albatros54
          albatros54
          Moderatore
            51 pts

            Dodi ha scritto:

            ed  appunto mi occorreva un codice per una macro da applicare al tasto "Copia dati"  che mi permetteva di trascrivere  ogni singola riga alla fine della barra colorata come all'esempio dello screeshot allegato precedentemente.

            scusate se mi intrometto, non ho capito quello che deve fare la macro,sara l'eta.

            @dodi :

            puoi descrivere a parole quello che deve fare la macro quando clicki sul tasto, perche io, effettivamente non ho capito cosa ti serve.

             

            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
            Sempre il mare, uomo libero, amerai!
            ( Charles Baudelaire )
            #23359 Risposta
            Dodi
            dodi

              Ciao Albatros

              in pratica la macro che mi serve deve ricopiare nient'altro che il contenuto di ogni singola riga a partire dalla cella "C10" e trascrivere il contenuto a fine barra colora. 

              ma come dicevo in pratica la barra colorata cambia al variare delle date inizio e fine attività. 

              quello che occorre se e possibile, avere un comando che copia i dati dalle celle da Sinistra , riconoscere fino a che punto le celle di destra sono colorate e solo allora a fine riga colorata deve trascrivere il contenuto presente nelle celle della colonna "C"

               

              ho allegato una foto per far capire il senso di quello che mi occorre. 

               

              grazie per l'interessamento spero davvero che esiste un modo. 

              saluti

              #23360 Risposta
              patel
              patel
              Moderatore
                40 pts

                e se cambi una data ? la scritta rimane dov'era.

                Da dove hai preso l'esempio ?

                #23362 Risposta
                Dodi
                Dodi

                  Ciao Pattel 

                  In effetti il comando tutte le volte che ci clicco sopra dovrebbe ripulire i dati nel grafico e riposizionarli alla fine delle celle colorate. Dovrebbe avere la doppia funzione. Ripulisce e riscrivi. In effetti doveva essere la seconda domanda se si riusciva, con un codice a risolvere il primo step. 

                  L'esempio l'ho visto sulle immagini di Google. 

                  Grazie intanto 

                  #23364 Risposta
                  Marius44
                  Marius44
                  Moderatore
                    28 pts

                    Ciao

                    Sarebbe sempre meglio allegare un file "completo" e, in questo caso, indicare il link da dove hai preso l'immagine.

                    Comunque un modo, se ho capito la richiesta, potrebbe essere questo codice da inserire nel Modulo del foglio interessato. Ovviamente può essere reso dinamico adattando l'intervallo. Basta un doppio click in una cella (attento, non tiene conto della colorazione!) ed io suggerirei la prima cella senza colorazione della banda colorata della riga).

                    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
                    If Not Intersect(Target, Range("BD10:FK41")) Is Nothing Then
                      Range("BD10:FK41").ClearContents
                      Cells(Target.Row, Target.Column) = Cells(Target.Row, 3)
                    End If
                    End Sub

                    Fai sapere. Ciao,

                    Mario

                    #23365 Risposta
                    Dodi
                    Dodi

                      Faccio seguito a quello che ho scritto appena s9pra,

                      Si potrebbe ipotizzare anche una routine che al variare delle date, e quindi di conseguenza il colore nelle celle, si sposta anche il testo. 

                       

                       

                      #23369 Risposta
                      Dodi
                      Dodi

                        Ciao Marius

                        Grazie per la soluzione. Al momento non ho modo di testarlo. Non appena provo ti faccio sapere. 

                        Il file d' incompleto perché lo sto elaborando. E in fase di studio. X ora sto schematizzando e man mano creò comandi. 

                        È cercando su google avevo visto quel esempio dello sceenshot e mi sembrava interessante come cosa. E per quello mi son rivolto a voi. 

                         

                        Grazie mille intanto. 

                        #23370 Risposta
                        Marius44
                        Marius44
                        Moderatore
                          28 pts

                          Ciao

                          Un errore di molti "principianti": creare il file sul campo!!   Non va bene.

                          Prima scrivi tutto su carta, pensando alle varie mosse e poi, alla fine, crei il codice.

                          Ciao,

                          Mario

                          #23374 Risposta
                          Dodi
                          dodi

                            ciao Marius

                            hai pienamente ragione su quello che dici. 

                            ma noi comuni mortali avvolte creiamo piccole formule per lo spirito di sopravvivenza sul lavoro, e cerchiamo di semplificare alcune funzioni per risolverci alcuni problemi. 

                            apprezzo cmq il suggerimento e te ne sono grato. 

                            ho avuto anche modo di provare il tuo codice, 

                            fa quello che hai scritto e cioè fare doppio clic a fine barra colorata e scrive in automatico il contenuto presente a sinitra. 

                            ma quello che mi occorreva era avere un comando che mi copiasse tutti i dati presenti nella colonna "C" a partire dalla cella "C10" e trascriverlo alla fine di tutte le barre colorate con un solo clic; e se cambio una data deve spostarsi anche il testo,

                            avevo suggerito magari con una routine che almvariare delle date si aggiornasse in automatico.

                            spero di cuore che esiste un modo e ringrazio anticipatamente.   

                            capisco che forse chiedo un qualcosa di difficile, ma vedendo lo screen allegato pensavo che voi in questo forum che siete molto preparati sapete come fare. 

                            Intanto grazie. 

                            spero che si possa trovare un modo, mi sarebbe di molto aiuto. 

                             

                             

                            #23376 Risposta

                            IvanPap
                            Partecipante

                              Io risolverei il problema scrivendo tramite formula un carattere qualsiasi (con lo stesso colore dello sfondo della cella) nell'ultima cella del GANNT poi basterebbe una riga di codice VBA per trovare l'ultima cella contenente dati della riga, applicare un offset di 1 e ritrovarsi alla fine del grafico.

                              #23377 Risposta

                              IvanPap
                              Partecipante

                                Attualmente la lunghezza delle barre è stabilita da una formula o tramite codice VBA?

                                 

                                #23379 Risposta
                                Marius44
                                Marius44
                                Moderatore
                                  28 pts

                                  Ciao

                                  Bisognerà "professionalizzarlo" ma intanto vedi se funziona.

                                  Assegna la prima macro ad un pulsante quando vuoi vedere il testo e assegna la seconda macro ad altro pulsante quando non vuoi vederlo.

                                  Sub testo()
                                  ur = Cells(Rows.Count, 1).End(xlUp).Row
                                  For i = 10 To ur
                                    For j = 167 To 56 Step -1
                                      If Cells(i, j).DisplayFormat.Interior.Color <> 16777215 Then
                                        Cells(i, j + 1) = Cells(i, 3).Value
                                        Exit For
                                      End If
                                    Next j
                                  Next i
                                  End Sub
                                  
                                  Sub cancella_testo()
                                  ur = Cells(Rows.Count, 1).End(xlUp).Row
                                  For i = 10 To ur
                                    For j = 167 To 56 Step -1
                                      If Cells(i, j).DisplayFormat.Interior.Color = 16777215 And Cells(i, j) <> "" Then
                                        Cells(i, j) = ""
                                        Exit For
                                      End If
                                    Next j
                                  Next i
                                  End Sub
                                  

                                  Fai sapere. Ciao,

                                  Mario

                                  #23380 Risposta
                                  Dodi
                                  Dodi

                                    Ciaoo ivan
                                    La tua soluzione non e banale. Ma rimane sempre il problema che al variare delle date il grafico si aggiorna. E quindi il carattere da te suggerito rimane sempre li.(oppure c'e una formula che permette di capire che il grafico si sposta?).

                                    Se hai letto tutte le discussioni capisci che il problema resta.
                                    In pratica cercavo un codice che riconosceva l'ultima cella colorata, (qualsiasi colore) e scrivere il contenuto delle celle della colonna "C" a partire dalla cella "C10" a fine celle colorate.
                                    E se cambio una data il contenuto si deve aggiornare e spostare in automatico in funzione delle nuove celle colorate.(che puo variare in piu o in meno) Quindi ci vorrebbe un codice di pulizia e riscrittura.

                                    Cmq grazie per il suggerimento
                                    Spero che qualcuno ha una soluzione.
                                    Ammesso che ai possa fare.
                                    Attualemnte il grafico si aggiorna con una formattazione condizionale.

                                    #23382 Risposta
                                    Dodi
                                    Dodi

                                      Ciao Marius
                                      Ho testato il tuo codice.
                                      Ci siamo quasi.
                                      O meglio dire
                                      Trascrive fino alla riga 31 e poi non piu. Considera che la lista puo contenere piu attivita. E per piu attivita intendo anche mille.
                                      Se si perfezione mi hai dato un gran aiuto. Poi una volta che ho il codice completo. Posso creare un modulo che richiama prima il comando cancella e poi attiva il comamdo testo.
                                      Cmq hai interpretato bene quello che mi serviva. Ci siamo quasi.
                                      Resto in attesa di soluzione finale. Intanto grazie. Per ripulire posso anche registrare una macro selection.clearcontents nel renge che mi interessa.
                                      Ma se mi perfezioni il codice per scrivere il testo ti ringrazio di cuore.

                                      #23385 Risposta
                                      Marius44
                                      Marius44
                                      Moderatore
                                        28 pts

                                        Ciao

                                        Entrambe le macro sono "tarate" sulla colonna A (la n. 1) che dovrebbe contenere il numero d'ordine. Non capisco perchè nel tuo file ti sei fermato alla riga 31 mentre la col,B (la n.2) arriva fino alla riga 41

                                        Questo codice ti dice quale è l'ultima cella piena della colonna A

                                        ur = Cells(Rows.Count, 1).End(xlUp).Row

                                        Cambia, ovviamente in entrambe le macro) il numero in rosso con la colonna dove leggere il numero massimo di righe.

                                        Ciao,

                                        Mario

                                        #23392 Risposta
                                        Dodi
                                        Dodi

                                          Buon giorno
                                          Marius. Volevo ringraziarti per il tuo preziosissimo aiuto.

                                          #23395 Risposta
                                          Marius44
                                          Marius44
                                          Moderatore
                                            28 pts

                                            Ciao

                                            Son contento di averti aiutato.

                                            Se hai risolto, come penso, modifica lo stato della discussione.

                                            Ciao,

                                            Mario

                                            #23403 Risposta
                                            Dodi
                                            Dodi
                                            Partecipante

                                            LoginRegistrati
                                            Stai vedendo 21 articoli - dal 1 a 21 (di 21 totali)
                                            Rispondi a: Comando Vba, scrivi dati alla fine delle celle evidenziate
                                            Gli allegati sono permessi solo ad utenti REGISTRATI
                                            Le tue informazioni:



                                            vecchio frac - 2750 risposte

                                            albatros54
                                            albatros54 - 1009 risposte

                                            patel
                                            patel - 975 risposte

                                            Marius44
                                            Marius44 - 839 risposte

                                            Luca73
                                            Luca73 - 716 risposte