Condividi:        

Inserimento dati su tabella da codice a barre

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: Inserimento dati su tabella da codice a barre

Postdi Anthony47 » 22/02/24 18:52

Lo stile = Informazione lo imposti in fase di applicazione della convalida, in particolare accedendo alla scheda "Messaggio di errore" del wizard di configurazione; qui puoi impostare lo "stile" della convalida:
-Interrompi (bloccante), vietato sbagliare
-Avviso; si puo' immettere un valore non in elenco
-Informazione; si viene informati che e' stato usato un valore non in elenco
La differenza tra Avviso e Informazione sta nel messaggio dato all'utente

Cosa devi leggere? L'Help on line di Excel; esempio:
- https://support.microsoft.com/it-it/off ... f3ce5f7249 (info di base)
- https://support.microsoft.com/it-it/off ... 5f6e1f0c4c (piccoli approfondimenti)

Quanto alla convivenza tra messaggio di convalida e tuo msgbox, tieni presente che la macro di WorksheetChange scatta solo dopo che il valore di cella e' cambiato; quindi (in caso di voce non in elenco) solo dopo che hai confermato il messaggio della convalida. Insomma secondo me ti devi accontentare del messaggio che puoi impostare nella scheda "Messaggio di errore", che e' unico per ambedue i sottocasi che poi vai a calcolare (esiste un sinonimo nel dizionario; NON esiste sinonimo in dizionario); anzi (mi correggo) potresti accettare il solo messaggio di convalida nel caso che esista il sinonimo, e invece emettere un messaggio da msgbox nel caso che invece il sinonimo manchi
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: Inserimento dati su tabella da codice a barre

Postdi Anthony47 » 22/02/24 19:00

Leggi prima il messaggio precedente a questo

Anthony ha scritto:E' possibile impostare la convalida in modo che non segnali nessun errore, senza pero' poter fare distinzione tra i vari casi.
Il mio suggerimento e' che imposti lo stile=Informazione, che ti propone come risposta di default "Ok" facilitando in questo modo la conferma (che puo' anche essere data con il lettore a barre, leggendo una "label" con solo 1 carattere)
Riprendo questa informazione per darti una ulteriore possibile scelta (che io pero' ritengo una pratica scorretta e quindi sconsiglio).
Potresti cioe' in fase di impostazione della convalida, sempre nella scheda "Messaggio di errore", togliere la spunta alla voce "Mostra messaggio di errore quando i dati non sono validi".
In questo modo la convalida viene "annacquata" (resta l'elenco a discesa, resta il "Messaggio di input" che puo' suggerire all'utente come comportarsi; manca il messaggio Bloccante, o di Avviso, o di Informazione qualora il valore caricato sia non convalidato. E qui la gestione di tutto il fenomeno va fatto completamente da vba.
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 23/02/24 09:46

Buongiorno Anthony,
grazie per tutto l'aiuto che mi hai dato.. quest'ultima cosa era proprio una sciocchezza.
Un argomento che avrò letto e riletto un milione di volte, ma quando ti si chiude la vena in testa.. non c'è niente da fare e non entra in testa. :aaah

Io pensavo al codice e ad una soluzione molto più complessa. :lol:
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 29/02/24 17:10

Ciao Anthony, torno sull'argomento perchè oggi il super mega boss mi ha chiamato entusiasta dell'idea del codice a barre che gli ho mostrato la settimana scorsa, però, perchè c'è sempre un però :aaah :lol: mi ha chiesto se fosse fattibile inserire tutti i campi con un solo click.. cioè unire tutti i codici a barre in uno unico che generi dati per tutti i campi della riga.
Dici che è fattibile o è assurdamente complesso?
Pensavo in via teorica che si potrebbero usare i codici a barre uniti tra loro da un carattere speciale che sarebbe "il salto tra un campo e l'altro".
Sto vaneggiando o potrebbe essere la strada giusta?
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi Anthony47 » 29/02/24 22:52

Dipende da due cose:
A) quanto riesci a far leggere in un colpo solo al tuo lettore
B) quanta capacità implementativa ha lo staff del tuo boss

Per A devi verificare tu

Su B puoi usare qualche trucco, che andrai a gestire nella WorksheetChange di excel. Ad esempio:
-se la lettura contiene N "chiave di separazione campo" allora significa che la lettura contiene N+1 campi che la WorksheetChange individua e usa per splittare i campi su altrettante celle a seguire

Insomma proprio come avevi pensato di fare!
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 01/03/24 09:29

Anthony47 ha scritto:Dipende da due cose:
A) quanto riesci a far leggere in un colpo solo al tuo lettore
B) quanta capacità implementativa ha lo staff del tuo boss

Per A devi verificare tu

Penso per evitare il problema della lunghezza, di estrarre, nel codice a barre, solo una parte limitata dei dati (limitare il nr di caratteri per campo) che verranno abbreviati.

Anthony47 ha scritto:Su B puoi usare qualche trucco, che andrai a gestire nella WorksheetChange di excel. Ad esempio:
-se la lettura contiene N "chiave di separazione campo" allora significa che la lettura contiene N+1 campi che la WorksheetChange individua e usa per splittare i campi su altrettante celle a seguire

Insomma proprio come avevi pensato di fare!

Riflettevo che in fin dei conti basterebbe associare al "carattere speciale" la digitazione del tasto Enter per farlo passare da una cella ad un altra..
Codice: Seleziona tutto
Application.OnKey "{ENTER}"

Mentre ho qualche dubbio riguardo al fatto che alcuni campi potrebbero non essere presenti nel codice a barre in quanto aggiunti successivamente a mano dall'operatore.
Anche in questo caso si potrebbe utilizzare il "carattere speciale" per farlo saltare alla cella successiva, ma notavo che la macro che mi hai indicato qui se "incontra" una cella vuota non si comporta come se in essa fosse stato inserito un dato.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 01/03/24 15:08

Ho trovato anche il comando
Codice: Seleziona tutto
Application.SendKeys "{ENTER}"

ma per il momento non so come "abbinarlo" ad un carattere preimpostato.
Credo che passerò i prossimi giorni a cercare/ordinare le idee..
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 01/03/24 16:33

Leggevo su questa pagina diversi modi per splittare una stringa di testo su più celle, ma non riesco ad indicargli le colonne.. cioè me lo fa solo sulle adiacenti.. :aaah
Immagine

Sto sbagliando io o è proprio questa funzione insita in excel a non permetterlo?
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi Anthony47 » 01/03/24 19:22

In ordine sparso:
Riflettevo che in fin dei conti basterebbe associare al "carattere speciale" la digitazione del tasto Enter per farlo passare da una cella ad un altra..
Secondo me devi vedere la lettura del codice a barre come 1 solo input ; e' nella WorksheetChange che decidi cosa fare del dato, e cioe'
-se e' un input "multicella" (contiene 1 o più "chiave di separazione campo"): dividere l'input, posizionare ogni campo nella sua posizione.
-se e' un input standard, fai lavorare il codice del Select Case

Il comando SendKeys quindi non ti servirà

Una volta assodato che hai un input "multicella" userai la funzione vba Split, che ti mette in un array con base 0 i singoli contenuti. Poi in sequenza:
-metti in cella attiva il primo valore
-in funzione della cella attiva determini quale e' la posizione del prossimo valore
-ripeti per tutti i valori ottenuti dallo split

DATA LA RILEVANZA che la cosa sta assumendo nella tua organizzazione, io pero' ti suggerirei di ricorrere a un consulente professionista, in grado di tradurre in codice solido quanto hai gia' realizzato e quanto devi ancora fare: fai girare l'economia e hai un assistente a disposizione
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 01/03/24 22:06

Si forse hai ragione tu.. inoltre così facendo mi assumo una responsabilità che oltre a non essere di mia competenza non è nemmeno retribuita. Direi che il mio l'ho fatto. Lunedì chiamo il super mega ultra e gli dico che gli toccherà aprire il portafoglio.Buon week end Anthony e grazie di tutto.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 11/03/24 10:11

Buongiorno, giusto per capirci per come siamo messi nell'azienda in cui lavoro.. non hanno cambiato ancora l'office, non si è vista la pistola laser e tutto è caduto nel dimenticatoio. Non avevo dubbi.. :aaah :lol:

Vabbè! Auguro a tutti un buon inizio settimana. ;)
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi Dylan666 » 11/03/24 10:21

Purtroppo capita spesso... in molte aziende l'uso del Cloud, dei web-meeting, delle VPN e lo smart-working sono arrivati "grazie" al COVID... Cioè parliamo di una catastrofe planetaria per introdurre in Italia metodologie e strumenti che altrove sono la norma da anni...

Si attribuisce a Grace Murray Hopper questa celebre massima:
La frase più pericolosa in assoluto è: abbiamo sempre fatto così.
Avatar utente
Dylan666
Moderatore
 
Post: 40099
Iscritto il: 18/11/03 16:46

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 11/03/24 10:54

Dylan666 ha scritto:Purtroppo capita spesso... in molte aziende l'uso del Cloud, dei web-meeting, delle VPN e lo smart-working sono arrivati "grazie" al COVID... Cioè parliamo di una catastrofe planetaria per introdurre in Italia metodologie e strumenti che altrove sono la norma da anni...

Si attribuisce a Grace Murray Hopper questa celebre massima:
La frase più pericolosa in assoluto è: abbiamo sempre fatto così.

Ciao Dylan buon giorno!
Eh lo so, ormai mi sono arreso dal "nuotare controcorrente".. non insisto/discuto più come una volta.. l'azienda non è la mia.
Era perchè molto spesso in passato mi era stato chiesto (qui sul forum) perchè non proponessi di avvalerci di un "tecnico esterno", ed ecco la motivazione.
Se non avessi "lottato" fino ad ora lavoreremmo ancora sulla carta.

Però vi confesso che mi sta proprio prendendo molto il vba e le automatizzazioni che si possono ottenere con esso.
Vorrei davvero approfondire l'argomento con un corso, ma non online perchè sono già rimasto scottato una volta.

Ad ogni modo sto leggendo in giro, dopo il consiglio Anthony, riguardo la funzione split.. così giusto per mia cultura personale.. perciò di tanto in tanto tornerò a parlarvi dei miei progressi in proposito. 8)

Ad esempio ho trovato or ora uno script che sembrerebbe fare al caso mio, ma lavora su colonne vicine, mentre nel mio caso devo saltare.
Intanto lo riporto di seguito e provo a studiare come fare.

Codice: Seleziona tutto
Option Explicit
Private Const SourceColumn As String = "A"
Private Const Separator As String = ","
Public Sub SplitString()
    Dim SheetName As String
    Dim iSheet As Worksheet
    Dim EndRow As Long
    Dim MaxULimit As Integer
    Dim Output
    On Error GoTo SplitStringErr
    SheetName = VBA.InputBox("Please Enter Worksheet Name")
    If SheetName = "" Then Exit Sub
    Set iSheet = Worksheets(SheetName)
    With iSheet
        EndRow = .Range(SourceColumn & .Rows.Count).End(xlUp).Row
        Output = SplittedStrings(iRng:=.Range(.Cells(1, SourceColumn), .Cells(EndRow, SourceColumn)), MaxLength:=MaxULimit)
        If Not IsEmpty(Output) Then
        .Range(.Cells(1, SourceColumn), .Cells(EndRow, MaxULimit)).value = Output
        End If
    End With
SplitStringErr:
    If Err.Number <> 0 Then MsgBox Err.Description, vbCritical
End Sub
Private Function SplittedStrings(iRng As Range, ByRef MaxLength As Integer) As Variant
    Dim i As Integer
    Dim Item As Variant
    Dim iData As Variant
    Dim iValue As Variant
    Dim Result As Variant
    If Not IsArray(iRng) Then
        ReDim iData(1 To 1, 1 To 1)
        iData(1, 1) = iRng.value
    Else
        iData = iRng.value
    End If
    ReDim Result(LBound(iData) To UBound(iData))
    For i = LBound(iData) To UBound(iData)
        iValue = iData(i, 1)
        If IsEmpty(iValue) Then
            GoTo continue
        End If
        Item = VBA.Split(iValue, Separator)
        Result(i) = Item
        If UBound(Item) + 1 > MaxLength Then
            MaxLength = UBound(Item) + 1
        End If
continue:
    Next i
    If MaxLength = 0 Then
        Exit Function
    End If
    Dim Substring As Variant
    Dim x As Integer
    ReDim Substring(LBound(Result) To UBound(Result), LBound(Result) To MaxLength)
    For i = LBound(Result) To UBound(Result)
        Item = Result(i)
        For x = 0 To UBound(Item)
            Substring(i, x + 1) = Item(x)
        Next x
    Next i
    SplittedStrings = Substring
End Function
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 11/03/24 14:28

CI SONO QUASI RAGAZZI!!! :idea:
ripulendo il codice da ciò che non mi interessava sono giunto a questo risultato
Codice: Seleziona tutto
Sub SplitStringRange()
    Dim iValue As String
On Error Resume Next

    If Err.Number <> 0 Then
       
        If iValue = vbRetry Then SplitStringRange
        Exit Sub
    End If
On Error GoTo 0

End Sub

In questo modo funziona, ma devo fargli saltare due colonne (la D e la E).. Non riesco a settare il range di colonne non contigue.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi Anthony47 » 11/03/24 16:11

Non so inquadrare il codice della Sub SplitStringRange, così come è non fa niente.
Ma secondo me la cosa e' piu' complicata che arrivare alla codifica vba.
Per quel che vedo, tu (voi) dovete innanzitutto definire uno standard per qualificare il tipo di lettura che si va a fare.
Esempi della mia fantasia, slegati dalla vostra situazione e slagati dai tracciati record che hai pubblicato e di cui mi sono dimenticato:
-Stringa unica (a) per la cella corrente (1)
-stringa unica (a) per la colonna VETTORE (2)
-stringa unica (a) per la colonna TARGA (3)
-stringa unica (a) per la colonna PESO (4)
-stringa multipla (b) per VETTORE /TARGA (5)
-etc
Il tipo di messaggio e relativo attributo devono essere poi inseriti all'interno del codice a barre, e devono rispettare sia lo standard di codifica (non so quali caratteri il codice a barre supporta) che lo standard di lettura excel (es il tasto Esc cancella la scrittura precedente)
Esempio di tipo=a #ZcZ1#U#
Esempio di tipo=b #ZcZ1#M#
Esempio per tipo=1 #ZcZ2##
Esempio per tipo=2 #ZcZ2#VETTORE#
Esempio per tipo=3 #ZcZ2#TARGA#
Etc

Quindi, un paio di esempi di lettura da pistola:
#ZcZ1#U#UniCorriere Milano (ipotetico messaggio che mette nella cella corrente "UniCorriere Milano")
#ZcZ1#M# #ZcZ2#TARGA#CZ111AB #ZcZ2#PESO#10 #ZcZ2#VETTORE#Uniservizi Pisa (ipotetico messaggio che mette CZ111AB nella colonna TARGA, 10 nella colonna PESO e Uniservizi Pisa nella colonna VETTORE

Nota che ho immaginato che stringhe del tipo #ZcZ non faranno mai parte dei valori che dovrebbero essere introdotti nelle celle. In alternativa puoi valutare una struttura tipo "xml" del tipo <messaggio><targa>Valore targa</targa><vettore>Valore campo Vettore</vettore>....</messaggio>.
La macro di gestione deve identificare il tipo del messaggio, gli eventuali attributi (Targa, Peso e Vettore, nel secondo esempio), estrarre i valori e scriverli nelle posizioni dovute.
Ovviamente questo va concordato con chi poi si deve occupare di stampare le "etichette" con i codici a barre.

Se il progetto fa fatica a diventare un progetto aziendale allora io direi che nel tuo piccolo ti dovresti fermare ai grandi miglioramenti che puoi apportare in proprio, cioe' leggere singoli codici a barre invece che scrivere da tastiera (e, per dire, già dire agli autisti che devono presentarsi alla tua postazione con un codice a barra potrebbe richiedere il coinvolgimento di altri Enti aziendali)

Comunque un codice che potresti usare per posizionare i campi:
Codice: Seleziona tutto
Sub Pusher(ByVal iStr As String, pSep As String, oRow As Long)
Dim Mappa, mySplit, I As Long
'
Mappa = Array("A", "C", "F")      '<<< Colonne di destinazione
mySplit = Split(iStr & pSep, pSep, , vbTextCompare)
If UBound(mySplit) > 0 Then
    For I = 0 To UBound(mySplit) - 1
        Cells(oRow, Mappa(I)).Value = mySplit(I)
        If I >= UBound(Mappa) Then Exit For
    Next I
End If
End Sub

Noterai la riga Mappa=etc etc che dice in quali colonne i campi devono essere inseriti.

Poi dalla macro principale richiamerai la Sub Pusher inserendo i parametri su cui lavorare:
-la stringa da splittare
-il "separatore" dei campi
-il numero di riga su cui scrivere il risultato

Ad esempio:
Codice: Seleziona tutto
Call Pusher(Cells(I, "A").Value, "#", I)
Questa passa al "Pusher" il contenuto di cella A della riga "i", dice che il separatore usato è "#" e il contenuto va rimesso in riga i (nella colonne indicate su Mappa)
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 11/03/24 17:33

Ciao Anthony,
Anthony47 ha scritto:Non so inquadrare il codice della Sub SplitStringRange, così come è non fa niente.

Allora il codice base da cui ero partito era questo, a cui avevo tolto i vari messaggi di errore.. avevo provato a ripulirlo dalle cose che non mi servivano.
Tolti gli inutili messaggi di errore questa macro funziona perfettamente nel ripartire il testo a parte il fatto che dovrei fargli saltare due colonne quando riporta il dato.
Codice: Seleziona tutto
Sub SplitStringRange()
    Dim iSheet As Worksheet
    Dim iRng As Range
    Dim iValue As String
On Error Resume Next
Set iSheet = Worksheets(Application.InputBox(Prompt:="Please Enter Worksheet Name", Title:="Worksheet Name", Default:=ActiveSheet.Name, Type:=2))
    If Err.Number <> 0 Then
        iValue = MsgBox("Worksheet Not Available", vbRetryCancel)
        If iValue = vbRetry Then SplitStringRange
        Exit Sub
    End If
On Error GoTo 0
    Set iRng = (Application.InputBox(Prompt:="Please Select Range to Split", Title:="Range Selection", Default:=Selection.Address, Type:=8))
    Set iRng = iSheet.Range(iRng.Address)
iRng.TextToColumns DataType:=xlDelimited, textqualifier:=xlTextQualifierDoubleQuote, consecutivedelimiter:=False, Tab:=False, semicolon:=False, comma:=True, Space:=False, other:=False, fieldinfo:=Array(Array(1, xlYMDFormat))
End Sub

Così com'è funziona a parte un errore iniziale che probabilmente deriverà da un mal adattamento allo schema. Se inserisci tutta la stringa in una cella della colonna B ripartisce le parole nelle altre colonne.
Anthony47 ha scritto:Ma secondo me la cosa e' piu' complicata che arrivare alla codifica vba.
Per quel che vedo, tu (voi) dovete innanzitutto definire uno standard per qualificare il tipo di lettura che si va a fare.
Esempi della mia fantasia, slegati dalla vostra situazione e slagati dai tracciati record che hai pubblicato e di cui mi sono dimenticato:
-Stringa unica (a) per la cella corrente (1)
-stringa unica (a) per la colonna VETTORE (2)
-stringa unica (a) per la colonna TARGA (3)
-stringa unica (a) per la colonna PESO (4)
-stringa multipla (b) per VETTORE /TARGA (5)
-etc
Il tipo di messaggio e relativo attributo devono essere poi inseriti all'interno del codice a barre, e devono rispettare sia lo standard di codifica (non so quali caratteri il codice a barre supporta) che lo standard di lettura excel (es il tasto Esc cancella la scrittura precedente)
Esempio di tipo=a #ZcZ1#U#
Esempio di tipo=b #ZcZ1#M#
Esempio per tipo=1 #ZcZ2##
Esempio per tipo=2 #ZcZ2#VETTORE#
Esempio per tipo=3 #ZcZ2#TARGA#
Etc

Quindi, un paio di esempi di lettura da pistola:
#ZcZ1#U#UniCorriere Milano (ipotetico messaggio che mette nella cella corrente "UniCorriere Milano")
#ZcZ1#M# #ZcZ2#TARGA#CZ111AB #ZcZ2#PESO#10 #ZcZ2#VETTORE#Uniservizi Pisa (ipotetico messaggio che mette CZ111AB nella colonna TARGA, 10 nella colonna PESO e Uniservizi Pisa nella colonna VETTORE

La codifica è il codice a barre cod.128 mi pare.. i codici a barre saranno divisi da una virgola o qualcosa del genere.
In pratica avevo pensato:
tutti i campi del buono di carico genereranno un unico codice a barre in cui saranno inserite anche le "," per indicare in che punto splittare la stringa di testo che decifrato dal font codice a barre sarà circa così "FB888MC,VETTORE,PINCO PALLO,COILS".
Ora così facendo salta semplicemente alla colonna successiva, mentre io dopo avere incollato i dati in colonna B e C devo saltare le colonne D e E e poi riprendere incollando il penultimo dato in colonna F, saltare la colonna G e incollare l'ultimo dato in colonna H.

Comunque con calma rileggerò i tuoi consigli Anthony.

P.s.
Ti allego di seguito il file su cui sto lavorando al momento.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 11/03/24 22:33

C'è una premessa che non ho fatto:
I buoni di carico vengono generati da un programma in cobol (credo), e per un altro reparto vengono già generati dei codici a barre (che per il momento sui nostri non ci sono).
Ora posso fare in modo che il programma generi codici a barre nell'ordine che più mi aggrada perciò in quello in cui mi servono i dati inseriti. Oltre a questo è possibile aggiungere un altro dato ai codici a barre e cioè un elemento separatore che credo sarà una ",".
Quindi nell'ordine 1)TARGA,2)NOME VETTORE,3)NOME CLIENTE,4)TIPO DI MERCE.

Avendo i campi già adattati nell'ordine che mi interessa non devo fare altro che splittarli nelle colonne prestabilite cioè B,C,F,H.
Una volta compilati i 4 campi ne rimane ancora uno da compilare manualmente, che è la zona di carico, perciò non ho bisogno di azioni aggiuntive al termine della lettura del codice (ad esempio andare a capo o verificare se il campo è già compilato).

Premesso questo ho provato a dare un'occhiata ai tuoi consigli e al codice che mi hai consigliato e ci sono alcune cose che non capisco prima tra tutte questa:

Questa passa al "Pusher" il contenuto di cella A della riga "i", dice che il separatore usato è "#" e il contenuto va rimesso in riga i (nella colonne indicate su Mappa)

Intendevi colonna?
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 12/03/24 09:37

Buongiorno Anthony, sto leggendo da ieri sera ed oggi sto provando il tuo codice, che però non riesco a capire del tutto.. ho provato a modificare il codice per tentare di adattarlo alla mia situazione.
Ho modificato da così
Codice: Seleziona tutto
Mappa = Array("A", "C", "F")      '<<< Colonne di destinazione

a così
Codice: Seleziona tutto
Mappa = Array("B", "C", "F", "H")      '<<< Colonne di destinazione

Ora quello che non capisco è questa parte qui:
Codice: Seleziona tutto
If UBound(mySplit) > 0 Then
    For I = 0 To UBound(mySplit) - 1
        Cells(oRow, Mappa(I)).Value = mySplit(I)
        If I >= UBound(Mappa) Then Exit For
    Next I

ed esattamente il dato "I".. questa parte non riesco proprio a capirla.. non capisco come trasformare la i per adattarla al mio caso.

PS.
Se il progetto fa fatica a diventare un progetto aziendale

Il capo era entusiasta, ma non essendo mai in sede, non capisce come funzionano le cose, le problematiche e tutto quello che c'è intorno, perciò se le cose funzionavano già prima, possono continuare così.. tanto non è lui che si deve sbattere. :mmmh:
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Inserimento dati su tabella da codice a barre

Postdi Anthony47 » 12/03/24 13:30

Quando tu chiami Pusher gli passi:
-la stringa da dividere
-il separatore da usare
-la riga in cui il risultato va posizionato

La parte For I = 0 To UBound(mySplit) - 1 /Next I si occupa di piazzare le stringhe separate nelle posizioni giuste:
-Cells(oRow, Mappa(I)) punta alla riga che hai detto / la colonna presa da Mappa
-mySplit(I) punta alla stringa da posizionare nella cella così indirizzata

Insomma devi toccare Mappa, ma I e' una variabile utilizzata dal codice e non lo devi toccare
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserimento dati su tabella da codice a barre

Postdi systemcrack » 12/03/24 16:01

Ok.. pensavo che si dovesse toccare anche quella parte perchè quando provo a far girare la macro ricevo questo errore:
Immagine

Ho inserito la macro in un modulo e poi la richiamo così
Codice: Seleziona tutto
Call Pusher(Cells(I, "B").Value, ",", I)

Nello sheet ENTRATE
Immagine

Forse mi sto perdendo qualche cosa?
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "Inserimento dati su tabella da codice a barre":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti