IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Excel
  New Posts New Posts RSS Feed - Compilazione tabella da file testo
  FAQ FAQ  Forum Search   Events   Register Register  Login Login


REGISTRATEVI su IALWeb forum!

Compilazione tabella da file testo

 Post Reply Post Reply
Author
Message
Paolinho8cn93 View Drop Down
Nuovo Utente
Nuovo Utente
Avatar

Joined: 03/Apr/2019
Location: Milano
Status: Offline
Points: 30
Post Options Post Options   Thanks (0) Thanks(0)   Quote Paolinho8cn93 Quote  Post ReplyReply Direct Link To This Post Topic: Compilazione tabella da file testo
    Posted: 24/Mag/2019 at 19:00
Ciao a tutti!! 
Vorrei riuscire con una macro a compilare in automatico un elenco andando ad aprire un file testo che contiene i nomi da inserire.
Ho una tabella che va da C6 a M22, dove la colonna C sono numeri che vanno da 1 a 22, mentre dalla cella D7 dovrebbe inserire i dati (Cognome del Giocatore) in base al numero della che si trova nella cella C7.. Successivamente nella cella J7 va ad inserire una sigla in base al ruolo del giocatore che è sempre presente nel file di testo indicato da un numero (1/2/3/4/5)... 
Io sono riuscito a creare una macro che va a compilare questa tabella con la seguente formula: 

Sub Ins_Roster()
ChDir ThisWorkbook.Path
    Fichier = Application.GetOpenFilename("Fichier SQ (*.SQ), *.SQ")
    
    Open Fichier For Input As #1
    row_number = 0
    
    Do Until EOF(1)
        Line Input #1, LineFromFile
        LineItems = Split(LineFromFile, vbTab)
        
        If row_number >= 2 Then
            Cells(6 + CInt(LineItems(0)), 4).Value = LineItems(10)
            If LineItems(9) <> "" Then
                If LineItems(9) Then
                    If LineItems(9) = "1" Then
                        Cells(6 + CInt(LineItems(0)), 10).Value = "L"
                    End If
                    If LineItems(9) = "2" Then
                        Cells(6 + CInt(LineItems(0)), 10).Value = "R/A"
                    End If
                    If LineItems(9) = "3" Then
                        Cells(6 + CInt(LineItems(0)), 10).Value = "Ptu"
                    End If
                    If LineItems(9) = "4" Then
                        Cells(6 + CInt(LineItems(0)), 10).Value = "CC"
                    End If
                    If LineItems(9) = "5" Then
                        Cells(6 + CInt(LineItems(0)), 10).Value = "P"
                    End If
                End If
            End If
        End If
        row_number = row_number + 1
    
    Loop
    Close #1
    
End Sub

L'unico problema di questa formula è che va a compilare la tabella seguendo il principio di row_number + 1...
Io vorrei invece che vada a riconoscere il numero presente nella cella C, questo perchè alcune squadre usano numeri che vanno oltre il 22 e che io prima di eseguire la macro andrei naturalmente a cambiare con i numeri di maglia dei giocatori presenti nel roster...

ES.
Se n22 BEDNORZ B. R/A
se cambio il n22 in 88 inserisce sempre BEDNORZ B. R/A invece di WRONA A. CC

Nel link potrete scaricare il file excel con la macro che ho sto usando e il file di testo da dove prendere i dati del giocatore.. 

https://www.dropbox.com/sh/e31ethv1yyxkpus/AACYLQ4RVUfR_euosq-kghIia?dl=0

Sapete aiutarmi??
Grazie

Back to Top
Sponsored Links


Back to Top
dodo47 View Drop Down
Moderatore
Moderatore
Avatar

Joined: 29/Dic/2008
Location: Italy
Status: Offline
Points: 11938
Post Options Post Options   Thanks (0) Thanks(0)   Quote dodo47 Quote  Post ReplyReply Direct Link To This Post Posted: 25/Mag/2019 at 09:51
Ciao
questo quanto ho capito:
variando i numeri in col. C del file excel, vuoi riportare nelle rispettive righe i nominativi che nella prima colonna del file di testo, hanno lo stesso numero.

Se è così, prova:
Sub Ins_Roster()
ChDir ThisWorkbook.Path
Fichier = Application.GetOpenFilename("Fichier SQ (*.SQ), *.SQ")
Open Fichier For Input As #1
row_number = 0
Do Until EOF(1)
    Line Input #1, LineFromFile
    If row_number >= 2 Then
        LineItems = Split(LineFromFile, vbTab)
        For j = 7 To 28
            If Cells(j, 3) = CInt(LineItems(0)) Then
                Cells(j, 4) = LineItems(10)
                Select Case LineItems(9)
                    Case Is = "1"
                        Cells(j, 10) = "L"
                    Case Is = "2"
                        Cells(j, 10) = "R/A"
                    Case Is = "3"
                        Cells(j, 10) = "Ptu"
                    Case Is = "4"
                        Cells(j, 10) = "CC"
                    Case Is = "5"
                        Cells(j, 10) = "P"
                End Select
                Exit For
            End If
        Next j
    End If
    row_number = row_number + 1
Loop
Close #1
End Sub

saluti

domenico
win 10- office 2016
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.17
Copyright ©2001-2013 Web Wiz Ltd.

This page was generated in 0,063 seconds.