Sviluppare funzionalita su Microsoft Office con VBA Cerca foglio ed inserisci dati di altro foglio

Login Registrati
Stai vedendo 25 articoli - dal 1 a 25 (di 45 totali)
  • Autore
    Articoli
  • #9193 Score: 0 | Risposta

    tacchino82
    Partecipante

      Salve a tutti,

      in allegato ho inserito un file dove spiego quello che vorrei realizzare.

      Mastico un pò di vba ma ho bisogno di un aiutino.

      Devo fare la ricerca di un foglio, e quando trovo il foglio riportare dei dati inseriti su un' altro foglio.

      nel file c'è la spiegazione (foglio3),spero di essere stato chiaro.

      Grazie

      A.

      Allegati:
      You must be logged in to view attached files.
      #9200 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        238 pts

        Ho letto e riletto più volte anche il file delle istruzioni ma sinceramente non ho capito niente dello scenario di partenza e dei dati coinvolti. Nè il risultato atteso 🙁

        Non capisco cosa scrivo dove, e cosa l'eventuale codice deve fare per riportare cosa e dove.

        Ho cercato di interpretare le tue istruzioni ma non sono sicuro di aver capito. 
        Anzitutto, devi cercare un foglio o dei dati contenuti in un foglio?

         

         

        #9234 Score: 0 | Risposta

        tacchino82
        Partecipante

          Allego nuovo file.

          spero di essere stato più chiaro.

          grazie

          #9235 Score: 0 | Risposta

          tacchino82
          Partecipante

            nuovo file spero di essere stato + chiaro

             

            grazie

            #9248 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              238 pts

              Strano che il sistema rifiuti i file xls. Devo far intervenire il nostro admin.

              #9265 Score: 0 | Risposta

              tacchino82
              Partecipante

                 non riesco a pubblicare il file:

                ho fatto lo screenshot della pagina dove ho aggiornato..... la descrizione di quello che vorrei fare.

                help me 

                 

                thanks

                Allegati:
                You must be logged in to view attached files.
                #9283 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  238 pts

                  Ho contattato il nostro Admin, sembra che il forum non abbia problemi, per cui rimane questo mistero. Prova ad inviarmi i file alla casella della redazione (redazione@excelvba.it) e poi ci penso io ad allegare qui.

                  #9292 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    238 pts

                    Intanto sto leggendo le tue (nuove) istruzioni e forse riesco a seguire il flusso logico 🙂

                    Quello che ho capito è che nel foglio "prova" tu inserisci (manualmente?) le prime quattro colonne: barcode, numero foglio, numero in verde, codice in arancione; cercando e incrociando questi dati nel file "prova2" (che contiene i dati) si riesce a ottenere delle somme da mettere in colonna azzurra. 

                    Proverò a reinventare uno scenario.

                     

                    #9310 Score: 0 | Risposta

                    vecchio frac
                    Senior Moderator
                      238 pts

                      Per essere chiari, la base dati (l'elenco dei barcode) si trova su un file diverso da quello che contiene i diversi fogli 1, 2 ,3 ecc.?

                      #9311 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        238 pts

                        Provo intanto ad allegare la mia proposta, così puoi fare qualche test. Ho reinserito nel foglio3 le tue informazioni così le avevo sott'occhio 🙂 

                        I dati sono naturalmente di prova.

                        Mi sembra che tutto funzioni come da richiesta (quindi occorre decidere se ho capito la richiesta) 😀

                        Allegati:
                        You must be logged in to view attached files.
                        #9328 Score: 0 | Risposta

                        tacchino82
                        Partecipante

                          Ok grande vecchio frac.

                          inizialmente avevo intenzione di usare sue file, ma come l' hai strutturato te penso che sia meglio quindi correggo io da altra parte.

                          Se invece che sommare ad H il contenuto di E volessi trovare la prima cella libera su quel rigo (corrispondente ad esempio ad a26)  successiva alle prime 5 (quindi da f26 in poi), leggere il dato e sottrarre il contenuto di E ?

                          Grazie in anticipo.

                          #9330 Score: 0 | Risposta

                          vecchio frac
                          Senior Moderator
                            238 pts

                            tacchino82 ha scritto:

                            Se invece che sommare ad H il contenuto di E volessi trovare la prima cella libera su quel rigo (corrispondente ad esempio ad a26)  successiva alle prime 5 (quindi da f26 in poi), leggere il dato e sottrarre il contenuto di E ?

                            Preferirei che ti spiegassi meglio... in quale colonna vorresti trovare la cella libera? e di quale foglio? se è successiva alle prime 5 come può essere F26? Sottrarre il contenuto di E ma in quale foglio? --> quello dei dati presumo, cioè il "foglio prova 2" nel nostro ultimo esempio...

                            Chiarito questo, il resto è solo un semplice giro di istruzioni.

                             

                            #9334 Score: 0 | Risposta

                            tacchino82
                            Partecipante

                              Preferirei che ti spiegassi meglio... in quale colonna vorresti trovare la cella libera

                              ....................

                              Non voglio fare confusione ( in questo sono bravo).....

                              Al momento tramite il riferimento di cella nella colonna A ( esempio a26) trova la riga corrispondente e nella colonna H fa la somma, vorrei che invece di assegnare la colonna H statica ,cercasse la prima cella libera dopo f26 ( quindi la 5 dopo la a26) e trovata la cella libera, faccia la sottrazione del valore trovato meno quello del valore nel foglio prova corrispondente ad E.

                              Quindi ok quello che fa adesso ma invece di attribuire scrivi in H, fargli trovare la cella libera in corrispindenza della  ricerca e fare la sottrazione e non l addizione come già hai creato.

                              Grazie

                              #9339 Score: 0 | Risposta

                              vecchio frac
                              Senior Moderator
                                238 pts

                                Ma scusa non c'è forse un problema qui?

                                tacchino82 ha scritto:

                                trovata la cella libera, faccia la sottrazione del valore trovato meno quello del valore nel foglio prova

                                La prima cella libera avrà sempre valore zero, quindi otterresti sempre 0 - (valore della cella E).

                                Fammi un esempio del risultato atteso sulla base dell'ultimo file postato (devi dirmi proprio: scrivi questo valore in questa cella e voglio che in quest'altra cella compaia questo risultato).

                                #9340 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  238 pts

                                  Vabbè intanto facciamo che ti allego una nuova versione. Ovviamente i valori risultanti sono tutti negativi, stante l'osservazione che ho fatto sopra.

                                   

                                  Allegati:
                                  You must be logged in to view attached files.
                                  #9349 Score: 0 | Risposta

                                  tacchino82
                                  Partecipante

                                    Ho inserito dei commenti nel foglio 1 e descrizione nel foglio prova 2

                                    Grazie

                                    Allegati:
                                    You must be logged in to view attached files.
                                    #9393 Score: 0 | Risposta

                                    tacchino82
                                    Partecipante

                                      ho provato ad adattare il tuo codice ma mi va in errore su sheets(ac.value) perchè

                                      La cartella di lavoro non ha il numero di fogli da 1 a x.... a mano a mano vengono tolti quindi non ho la sequenza da 1 fino a x mapossono essere saltati anche molti numeri  (esempio 1,5,10,15,16,17,18  etc)

                                      Alessio

                                      #9394 Score: 0 | Risposta

                                      vecchio frac
                                      Senior Moderator
                                        238 pts

                                        Oggi non ho potuto prendere in mano il tuo file. Spero domani.

                                        Per quanto riguarda l'errore, dimmi che valori ci sono in colonna B dello Sheet "foglio prova2".

                                        Devi curare che i nomi dei fogli siano scritti esattamente in questa colonna B.

                                        #9395 Score: 0 | Risposta

                                        tacchino82
                                        Partecipante

                                          ad esempio ho il numero fogli 392 (scritto anche in riferimento colonna b) e con quello mi dà l'errore, come ti ho già detto non ho i numeri in sequenza ma sono sparsi e non consecutivi.

                                           

                                          Ho capito il tuo codice indica la posizione numerica del file e non del nome assegnato...giusto? mi occorre che trovi il nome assegnato al foglio in qualsiasi posto della cartella sia, all'inizio o alla fine.

                                          #9396 Score: 0 | Risposta

                                          vecchio frac
                                          Senior Moderator
                                            238 pts

                                            tacchino82 ha scritto:

                                            indica la posizione numerica del file e non del nome assegnato...giusto?

                                            Sbagliato, o almeno io volevo che fosse così.

                                            ac.Value restituisce il valore della cella ma disgraziatamente essendo un numero probabilmente Excel tenta di interpretarlo come indice.

                                            Domani comunque faccio dei test più accurati e vedrà di aggiustare il tiro.

                                            #9398 Score: 0 | Risposta

                                            tacchino82
                                            Partecipante

                                              Premetto che i dati da scaricare (nella pagina foglio prova 2 ) potrebbero essere anche 100 e più una volta al giorno,
                                              il giorno dopo pulirò lo schema e ripartirà ad essere compilato da b2 in poi.

                                              E' importante che cerchi e trovi il nome del foglio anche perchè sono più di 100 e non ordinati.

                                              Grazie

                                              #9418 Score: 0 | Risposta

                                              vecchio frac
                                              Senior Moderator
                                                238 pts

                                                vecchio frac ha scritto:

                                                ac.Value restituisce il valore della cella ma disgraziatamente essendo un numero probabilmente Excel tenta di interpretarlo come indice.

                                                Infatti è così e la soluzione è semplice: convertire il valore in stringa:

                                                With Sheets(CStr(ac.Value))
                                                #9427 Score: 0 | Risposta

                                                vecchio frac
                                                Senior Moderator
                                                  238 pts

                                                  Ecco qui la revisione della procedura, conforme alle istruzioni. Fai qualche prova e poi dimmi. Se ottieni errori riportami la riga su cui si verifica e la descrizione dell'errore. Se non ottieni il risultato voluto allora fammi una descrizione dell'intoppo.

                                                  Option Explicit
                                                  
                                                  Sub search_go()
                                                  Dim ac As Range
                                                  Dim c As Range
                                                  Dim r As Range
                                                  Dim i As Long
                                                  
                                                      Sheets("foglio prova2").Select
                                                      i = 2
                                                      For Each ac In Range("B2:B" & [COUNTA(B:B)])
                                                          If Trim(ac) = "" Then Exit For
                                                          If Not sheet_exists(ac.Value) Then
                                                              ac.Offset(, 4) = "Il foglio " & ac.Value & " non esiste"
                                                          Else
                                                              With Sheets(CStr(ac.Value))
                                                                  .Cells(Application.CountA(.Range("F2:F21")) + 2, "F") = ac.Offset(, -1).Value
                                                                  .Cells(Application.CountA(.Range("E2:E21")) + 2, "E") = ac.Offset(, 1).Value
                                                                  .Columns(6).AutoFit
                                                                  
                                                                  Set c = .Range("A:A").Find(ac.Offset(, 2), LookAt:=xlWhole)
                                                                  If c Is Nothing Then
                                                                      ac.Offset(, 4) = "Il valore " & ac.Offset(, 2) & " non esiste sul foglio " & ac.Value
                                                                  Else
                                                                      Set r = c.EntireRow.Find(What:="*", After:=c, SearchDirection:=xlPrevious)
                                                                      r = r - Sheets(CStr(ac)).Cells(i, "E")
                                                                     
                                                                  End If
                                                              End With
                                                          End If
                                                          i = i + 1
                                                      Next
                                                      
                                                      MsgBox "Operazioni concluse.", vbInformation
                                                      
                                                  End Sub
                                                  
                                                  
                                                  Private Function sheet_exists(sheet_name As String) As Boolean
                                                      On Error Resume Next
                                                      sheet_exists = Sheets(sheet_name).Index > 0
                                                  End Function
                                                  
                                                  #9511 Score: 0 | Risposta

                                                  tacchino82
                                                  Partecipante

                                                    Grazie mille
                                                    funziona la prima parte della ricerca del foglio e trascrizione dei dati ma mi va in debug qui
                                                    r = r - Sheets(CStr(ac)).Cells(i, "E") 

                                                    é possibile copiare ed incollare come dati  dopo questa parte di codice i due range corrispondenti sotto??
                                                    .Cells(Application.CountA(.Range("F2:F21")) + 2, "F") = ac.Offset(, -1).Value  '  .Cells(Application.CountA(.Range("E2:E21")) + 2, "E") = ac.Offset(, 1).Value .Columns(6).AutoFit

                                                    Esempio: nella cella F2 ed E2 vengono scritti i dati è possibile sullo stesso rigo fare un copia ed incolla dati dalla cella A2 a H2 corrispondente alla ricerca effettuata?

                                                     

                                                    grazie

                                                     

                                                    #9528 Score: 0 | Risposta

                                                    vecchio frac
                                                    Senior Moderator
                                                      238 pts

                                                      tacchino82 ha scritto:

                                                      mi va in debug qui

                                                      Che tipo di errore ricevi?

                                                      tacchino82 ha scritto:

                                                      è possibile sullo stesso rigo fare un copia ed incolla dati dalla cella A2 a H2 corrispondente

                                                      suppongo di sì... è una richiesta nuova o è alternativa alla soluzione già adottata?

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 45 totali)
                                                    Rispondi a: Cerca foglio ed inserisci dati di altro foglio
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: