Print Page | Close Window

Compilazione tabella da file testo

Printed From: IALweb
Category: MS Office
Forum Name: Microsoft Excel
Forum Discription: Tutto sui fogli di calcolo e l'automazione d'ufficio
URL: https://forum.ialweb.it/forum_posts.asp?TID=16467608
Printed Date: 19/Lug/2019 at 01:32
Software Version: Web Wiz Forums 10.17 - http://www.webwizforums.com


Topic: Compilazione tabella da file testo
Posted By: Paolinho8cn93
Subject: Compilazione tabella da file testo
Date 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




Replies:
Posted By: dodo47
Date 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



Print Page | Close Window

Forum Software by Web Wiz Forums® version 10.17 - http://www.webwizforums.com
Copyright ©2001-2013 Web Wiz Ltd. - http://www.webwiz.co.uk