You are here:--[RISOLTO] Cerca corrispondente
[RISOLTO] Cerca corrispondente 2018-08-08T16:37:09+00:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Cerca corrispondente

  • Autore
    Articoli
  • luigi.castoluigi.casto
    Partecipante
      Post totali: 53
      #6441 |

      http://www.filedropper.com/esempio_9

      Buongiorno a tutti ,

      il file esempio allegato per far capire meglio la mia esigenza che espongo di seguito.

      Quello che non riesco ad ottenere è : selezionando nella combobox un nome e nella textbox inserire un articolo , in base al nome selezionato , nel foglio1 vorrei trovare il nome corrispondente nella riga 2 e nella colonna a dx del nome inserire il testo della textbox.

      Ovviamente essendo un file di esempio , al suo interno ci sono pochi dati e quindi i nomi nella riga 2 possono essere in numero maggiore ma non definito e gli articoli da inserire per ogni nome anche.

      Gli articoli potrebbero essere inseriti in più volte quindi avrei bisogni di poter richiamare lo stesso nome più volte.

      Vi ringrazio dell’aiuto che riceverò :good:

      • Questo argomento è stato modificato 4 mesi, 1 settimana fa da sid sid.
    • sidsid
      Moderatore
        Post totali: 511

        Ciao
        I nomi in riga 2 sono univoci o possono essere ripetuti?
        Se scelgo “pippo” che si trova in A2, in B2 inserisco il valore che sta nella textbox; se poi scelgo di nuovo “pippo”, sovrascrivo il valore in B2 oppure accodo i dati nella riga successiva per ogni inserimento?

      • luigi.castoluigi.casto
        Partecipante
          Post totali: 53

          ciao sid , innanzi tutto grazie per il tuo intervento .

          i nomi non vengono ripetuti quindi ad ogni inserimento in textbox i dati vanno accodati nella colonna a dx del nome .

          scusa ho riletto quanto hai scritto e ho visto che avevi già capito l’esigenza.

          grazie

        • sidsid
          Moderatore
            Post totali: 511

            Un esempio sicuramente migliorabile:

            Private Sub CommandButton2_Click()
            Dim ws As Worksheet
            Dim rng As Range, rCliente As Range
            Dim nRiga As Long
            Set ws = Sheets("Foglio1")
            Set rng = ws.Range("A2:O2") ' range di ricerca in riga 2...da adattare al tuo file
            
            With rng
                Set rCliente = .Find(Me.ComboBox1.Value, rng(.Rows.Count, .Columns.Count), xlValues, xlWhole)
            End With
            
            If Not rCliente Is Nothing And Me.ComboBox1.Value <> vbNullString And Me.TextBox1.Value <> vbNullString Then
                With rCliente.Offset(0, 1)
                    nRiga = IIf(.Value = vbNullString, 0, ws.Cells(Rows.Count, .Column).End(xlUp).Row - 1)
                End With
                rCliente.Offset(nRiga, 1).Value = Me.TextBox1.Value
                Set rCliente = Nothing
                Unload Me
            Else
                MsgBox "Combo e/o textbox vuote", vbExclamation, "ATTENZIONE"
            End If
            Set ws = Nothing
            Set rng = Nothing
            
            End Sub

            Un consiglio: invece di inserire un range a caso nel nome definito “nome”, rendilo flessibile, inserendo solo i valori senza celle vuote, a prescindere se togli o aumenti i nomi in colonna A del foglio2
            Nel nome definito in “Riferito a:” inserisci
            =SCARTO(Foglio2!$A$1;0;0;CONTA.VALORI(Foglio2!$A:$A);1)

          • sidsid
            Moderatore
              Post totali: 511

              Per rendere flessibile anche il range in riga2, e quindi non mettere più le mani nel codice fai le modifiche dell’immagine sottostante:
              Le istruzioni sottolineate in rosso sono da aggiungere, quelle in blu da modificare

            • luigi.castoluigi.casto
              Partecipante
                Post totali: 53

                Perfetto , grazie mille sid , stasera lo provo a casa e ti do riscontro.

                Quindi la riga sottolineata in blu devo cancellarla e sostituirla con quella in rosso giusto ?

              • sidsid
                Moderatore
                  Post totali: 511

                  “Quindi la riga sottolineata in blu devo cancellarla e sostituirla con quella in rosso giusto ?”
                  NO!!!!
                  ci devi sostituire la vecchia istruzione

                  vecchia istruzione
                  Set rng = ws.Range("A2:O2") ' range di ricerca in riga 2...da adattare al tuo file
                  sostituita da
                  Set rng = ws.Range(ws.Cells(2, 1), ws.Cells(2, nColonna)) ' range di ricerca in riga 2

                • sidsid
                  Moderatore
                    Post totali: 511

                    Per sicurezza ti passo il codice nuovo ;)

                    Private Sub CommandButton2_Click()
                    Dim ws As Worksheet
                    Dim rng As Range, rCliente As Range
                    Dim nRiga As Long, nColonna As Long
                    Set ws = Sheets("Foglio1")
                    
                    nColonna = ws.Cells(2, Columns.Count).End(xlToLeft).Column
                    Set rng = ws.Range(ws.Cells(2, 1), ws.Cells(2, nColonna)) ' range di ricerca in riga 2
                    With rng
                        Set rCliente = .Find(Me.ComboBox1.Value, rng(.Rows.Count, .Columns.Count), xlValues, xlWhole)
                    End With
                    
                    If Not rCliente Is Nothing And Me.ComboBox1.Value <> vbNullString And Me.TextBox1.Value <> vbNullString Then
                        With rCliente.Offset(0, 1)
                            nRiga = IIf(.Value = vbNullString, 0, ws.Cells(Rows.Count, .Column).End(xlUp).Row - 1)
                        End With
                        rCliente.Offset(nRiga, 1).Value = Me.TextBox1.Value
                        Set rCliente = Nothing
                        Unload Me
                    Else
                        MsgBox "Combo e/o textbox vuote", vbExclamation, "ATTENZIONE"
                    End If
                    Set ws = Nothing
                    Set rng = Nothing
                    
                    End Sub
                  • luigi.castoluigi.casto
                    Partecipante
                      Post totali: 53

                      ciao sid , grazie mille , ancora una volta sei stato indispensabile alla risoluzione di un mio problema, funziona perfettamente  :yahoo:   :bye:

                      Anche questo codice finisce nel mio archivio  ;-)    così sempre meno dovrò disturbare

                      :bye: :bye:

                    • sidsid
                      Moderatore
                        Post totali: 511

                        Grazie a te per il riscontro

                      • luigi.castoluigi.casto
                        Partecipante
                          Post totali: 53

                          http://www.filedropper.com/esempio_10

                          Visto che siamo in tema evito di aprire un nuovo post ,

                          nel foglio1 ho 2 pulsanti , “Inserisci” e “Registra” .

                          Il primo ,”Inserisci” , fa quanto dovuto grazie all’aiuto di sid ma ora quello che vorrei ottenere è premendo il pulsante “Registra” , cercare nel foglio1 il nome corrispondente alla selezione in combobox , prelevare tutti gli articoli corrispondenti allo stesso che si trovano nella prima colonna a dx al nome , aprire il foglio avente lo stesso nome  ed incollare l’elenco di articoli prelevato , nella collonna B a partire dalla seconda riga “B2”.

                          Ho iniziato a scrivere il codice che cerca il foglio con lo stesso nome e lo apre ma non riesco a prelevare ed incollare gli articoli .

                          Un’altro aiutino per favore  :wacko:

                          grazie

                        • sidsid
                          Moderatore
                            Post totali: 511

                            Il pulsante registra apre sempre una form?
                            Posta il file di esempio

                          • luigi.castoluigi.casto
                            Partecipante
                              Post totali: 53

                              ciao sid ,scusa il ritardo ma ho avuto un infortunio e sono stato immobilizzato per qualche giorno.

                              si il pulsante registra apre una form e il file l’ho pubblicato nel messaggio precedente in alto , 1^ riga

                            • sidsid
                              Moderatore
                                Post totali: 511

                                Il file che hai mandato nel foglio1 ha solo il pulsante “Inserisci”

                              • luigi.castoluigi.casto
                                Partecipante
                                  Post totali: 53

                                  http://www.filedropper.com/esempio_11

                                  opss  credevo fosse esatto , guarda questo !!!

                                • sidsid
                                  Moderatore
                                    Post totali: 511

                                    Scusa ma non avevo fatto caso al link…non fare caso al mio messaggio precendente

                                  • sidsid
                                    Moderatore
                                      Post totali: 511

                                      Quindi mi sembra di capire che con la stessa form vuoi usare il “CommandButton2” per eseguire 2 distinte operazioni: “Registra” e “Inserisci”; corretto?

                                    • luigi.castoluigi.casto
                                      Partecipante
                                        Post totali: 53

                                        si esatto , in base alla scelta cambia la caption del commandbutton .

                                        Le due operazioni avvengono dalla stessa userform

                                      • luigi.castoluigi.casto
                                        Partecipante
                                          Post totali: 53

                                          Ovviamente i nomi presenti nel foglio1 riga 2 a colonna alternata (ogni 2 colonne) , non hanno un numero prestabilito ma potrebbero aumentare quindi ho bisogno che il codice lavori dinamicamente .

                                          L’unica cosa certa è che per ogni nome presente c’è un foglio con lo stesso nome

                                        • sidsid
                                          Moderatore
                                            Post totali: 511

                                            Spero di aver capito bene la tua esigenza

                                            https://app.box.com/s/12zq3ekjxgwx2vvqklis0qelq1zyb75v

                                            Fa sapere, ciao

                                          • luigi.castoluigi.casto
                                            Partecipante
                                              Post totali: 53

                                              Grazie mille sid , lo provo e ti faccio sapere.

                                            • luigi.castoluigi.casto
                                              Partecipante
                                                Post totali: 53

                                                Ciao sid , scusa per il ritardo nella risposta ma non trovandomi a casa ho difficoltà di connessione.

                                                Il codice fa esattamente quello che chiedevo , ma non avevo dubbi  :yahoo: .

                                                Ancora grazie mille del supporto .

                                                :bye: :bye:

                                              • sidsid
                                                Moderatore
                                                  Post totali: 511

                                                  Grazie a te per il riscontro; alla prox, ciao

                                                La discussione ‘[RISOLTO] Cerca corrispondente’ è chiusa a nuove risposte.

                                                Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                                                Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                                                Chiudi