Composizione automatica di sigla alfanumerica



  • Composizione automatica di sigla alfanumerica
    di bcgeppo data: 15/03/2014 06:51:14

    Buongiorno Forum, vorrei implementare un mio foglio con una cosa carina che ho trovato nel forum qualche giorno fà, si tratta di una macro che inserisce in automatico il numero aggiunto a una sigla selezionabile da una casella combinata, premetto che non conosco il VB, il problema è che non riesco ad adattare tale macro alle mie esigenze e cioè vorrei mettere la sigla seguita da 4 numeri anzi la sigla seguita da "-" e 3 numeri, inoltre non riesco a capire perche non si posiziona nella prima cella disponibile della colonna della tabella, inoltre funziona solo con la sigla "PRO" che non ha ancora nessun articolo mentre per le altre sigle che hanno gia degli articoli non funziona.
    Allego file di esempio:"Articoli.xlsm"
    Buona giornata



  • di Raffaele_53 (utente non iscritto) data: 15/03/2014 13:06:35

    Se vai in ThisWorkbook e modifichi tutte le stringhe da
    Sheets(1).ComboBox1.AddItem "CAM" in Sheets("Articoli").ComboBox1.AddItem "CAM"

    Poi Cancelli tutta la tabella tranne una riga VUOTA (un domani non potrai mai cancellare una riga)
    Nel codice elimina l'attuale ed inserisci questo
    Salva e riapri il files

    Ps il codice precedente va bene ma se ci sono miglia di record diventa pesante
     
    Private Sub CommandButton1_Click()
    Dim Y As String, K As Long, Tot As Long, Tot1 As String
    Y = MsgBox("Vuoi generare un numero progressivo?", vbInformation + vbYesNo, "Numerazione Progressiva")
    If Y = vbYes And ComboBox1 <> "" Then
        K = Range("a" & Rows.Count).End(xlUp).Row
            Rows(K & ":" & K).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Set Area = Range("A4:A" & K)
        Tot = Application.WorksheetFunction.CountIf(Area, ComboBox1.Value & "*")
        Tot1 = Format(Tot + 1, "0000")
    Cells(K, 1) = ComboBox1 & Tot1
    Set Area = Nothing
    End If
    End Sub



  • di bcgeppo data: 15/03/2014 14:46:21

    cosa intendi per "poi Cancelli tutta la tabella tranne una riga VUOTA" devo cancellare tutti gli articoli gia creati? devo ripartire tutto da 0?
    non c'è un modo per agganciarsi all'ultimo numero piu alto e aggiungere 1?
    grazie per l'interessamento.
    ciao



  • di Raffaele_53 (utente non iscritto) data: 15/03/2014 23:12:00

    La macro scritta serviva per creare una sigla univoca consecutiva.
    I dati che hai scritto sono mancanti di tante sigle ex
    CAM0036
    CAM0038
    CAM0041
    CAM0043
    CAM0044
    CAM0045
    ecc ecc
    Se a Te va bene ricercare l'ultimo codice immesso (senza farli consecutivi), puoi usare il codice Tuo
    Ps devi eliminare le righe 300/304 (dovrai avere solo una riga vuota)
    Ci pensa il codice ad inserire la riga nuova
     
    Private Sub CommandButton1_Click()
    Y = MsgBox("Vuoi generare una sigla?", vbInformation + vbYesNo, "Numerazione Progressiva")
    If Y = vbYes And ComboBox1 <> "" Then
        K = Range("A" & Rows.Count).End(xlUp).Row
        Rows(K & ":" & K).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        For I = K - 1 To 5 Step -1
            If Mid(Cells(I, 1), 1, 3) = ComboBox1 Then
                v = Right(Cells(I, 1), 4) + 1
                Cells(K, 1) = ComboBox1 & Format(v, "0000")
                Exit Sub
            End If
        Next I
        Cells(K, 1) = ComboBox1 & Format(1, "0000")
    End If
    End Sub



  • di bcgeppo data: 17/03/2014 13:20:53

    Grazie mille, funzionano entrambi a meraviglia, ora dovro decidere quale usare.
    Ciao Buona giornata



  • di Vecchio Frac data: 17/03/2014 14:02:47

    Il titolo ("macro da adattare") non è idoneo a identificare il problema.
    Prego di essere più precisi le prossime volte.