ricerca codice in area dinamica



  • ricerca codice in area dinamica
    di robybarc data: 11/09/2015 11:39:46

    Ciao a tutti,
    ho un problema con la ricerca di un codice in un'area dinamica ( che non è sempre la stessa ) nella colonna M inizialmente vuota.
    Nella colonna M, a partire dalla cella M31 fino a Mxx ( la lunghezza è variabile ) inserisco un codice "S" a fianco dei clienti che devo stampare.
    Quando trovo la "S" sovrascrivo una "X" e seleziono i dati alla sua destra, ( stessa riga 50 colonne a destra che copio in un'altro foglio in un'area di stampa ).
    Eseguo questo processo per ogni "S" che trova nell'area selezionata.
    Ho provato a stilare questo codice ma non riesco a completarlo.
    Grazie
    Roberto
     
    Sub StampaFatture()
    ' mi da il numero di "S" contenuti nell'area selezionata
    	Dim Rng As Range
    	Dim x As Long
    	Sheets("FT").Select
    	Range("M31", Range("M1048567").End(xlUp)).Select
    
    ' assegno il nome "AreaS" all'area selezionata che contiene le "S"
    	ActiveWorkbook.Names.Add Name:="AreaS", RefersTo:=Selection
    	Set Rng = Range("AreaS")
    	x = Application.CountA(Rng)
    ' il messaggio mi dice quante "S" trova
    ' ma purtroppo se erroneamente inserisco un altro carattere conteggia anche quello
    	MsgBox x
    ' se non trova fatture da stampare va alla fine
    If x = 0 Then
         GoTo FineStampaFatture
    End If
    
    
      For K = 1 To x ' esegue il ciclo di stampa fatture per il totale di "S" trovate
            Sheets("FT").Select
    ' da qui in poi non trovo la formula corretta per selezionare la cella
    ' che contiene la "S" e procedere
         If Cells("AreaS") = "S" Then
            ActiveCell.Select
            ActiveCell = "X"
            ActiveCell.Offset(0, 0).Select
            ActiveCell.Resize(1, 50).Select
    ' da qui in poi copio i dati in un'altra area e proseguo con altre istruzioni
    ' che non dovrei avere problema a compilare      
         End If
      Next
         GoTo FineStampa
    FineStampaFatture:
            MsgBox "NON HO TROVATO FATTURE DA STAMPARE"
    FineStampa:
    End Sub



  • di totygno71 data: 11/09/2015 12:06:27

    Perchè un ciclo?
    Non ti basterebbe un semplice filtro sulla colonna M utilizzando come criterio la lettera "S"?



  • di Albatros54 data: 11/09/2015 12:45:44

    Ho apportate alcune modifiche al tuo codice ,il codice gira , provalo.
    Albatros54
     
    Sub StampaFatture()
    ' mi da il numero di "S" contenuti nell'area selezionata
        Dim Rng As Range
        Dim x As Long
        Sheets("FT").Select
        Range("M31", Range("M1048567").End(xlUp)).Select
    
        ' assegno il nome "AreaS" all'area selezionata che contiene le "S"
        ActiveWorkbook.Names.Add Name:="AreaS", RefersTo:=Selection
        Set Rng = Range("AreaS")
        x = Application.CountIf(Rng, "S")    '<<<<==Modificato
        ' il messaggio mi dice quante "S" trova
        ' ma purtroppo se erroneamente inserisco un altro carattere conteggia anche quello
        MsgBox x
        ' se non trova fatture da stampare va alla fine
        If x = 0 Then
            GoTo FineStampaFatture
        End If
    
    
        For K = 1 To x    ' esegue il ciclo di stampa fatture per il totale di "S" trovate
            Sheets("FT").Select
            ' da qui in poi non trovo la formula corretta per selezionare la cella
            ' che contiene la "S" e procedere
            For Each cl In Rng    '<<<==MODIFICATO
                If cl = "s" Then  '<<<<==MODIFICATO
                    cl.Select
                    ActiveCell = "X"
                    'ActiveCell.Offset(0, 0).Select
                    ActiveCell.Resize(1, 50).Select
                    ' da qui in poi copio i dati in un'altra area e proseguo con altre istruzioni
                    ' che non dovrei avere problema a compilare
    
                End If
    
            Next
        Next
        GoTo FineStampa
    FineStampaFatture:
        MsgBox "NON HO TROVATO FATTURE DA STAMPARE"
    FineStampa:
    End Sub
    






  • di robybarc data: 11/09/2015 13:35:09

    Ciao totygno71
    purtroppo sono all'inizio della programmazione VBA e il tuo suggerimento non rientra nelle mie conoscenze, sto applicando alcuni criteri di ricerca che già conosco e li adatto alle mie esigenze ( anche se impropri od obsoleti ), magari quando capirò cosa si può fare con un ciclo e applicare un filtro sulla colonna M utilizzando come criterio la lettera "S" metterò in pratica il tuo suggerimento.
    Nel frattempo lo salvo nelle istruzioni da approfondire.
    Grazie per il supporto
    Roberto



  • di robybarc data: 11/09/2015 13:38:42

    Ciao Albatros54,
    il tuo codice soddisfa le mie esigenze, studierò le modifiche apportate per imparare la logica del tuo codice e per applicarlo in ricerche simili nel mio programma.
    Grazie infinite
    Roberto