Bonjour, je doit ouvrir un fichier texte avec excel puis renseigner une plage de cellule à l'aide des valeurs de la 1er colonne. Simplement, pour des petits fichiers avec peut de lignes, cela est relativement rapide, mais lorsque je passe à des documents qui font plusieurs milliers de lignes, le traitement est très long, je vous met mon code, si qqn voit comment je pourrait accélerer la recherche.
Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub ouverture()
    Application.ScreenUpdating = False
    LeFichierAOuvrir = Application.GetOpenFilename(Title:="Nom du fichier PGI à ouvrir")
    If LeFichierAOuvrir <> "Faux" Then
        classeur = ActiveWorkbook.Name
        nomfeuil = ActiveSheet.Name
        OuvrirLeFichier
    Else
        Exit Sub
    End If
    Windows(classeur).Activate
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Workbooks(classeur).Sheets(nomfeuil).Range("A1").Activate
    Workbooks(classeur).Sheets(nomfeuil).Range("A1").Show
End Sub
Sub OuvrirLeFichier()
    Workbooks.OpenText Filename:= _
            LeFichierAOuvrir, Origin:=xlMSDOS _
            , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
            , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
            TrailingMinusNumbers:=True
    classeurorigine = ActiveWorkbook.Name
    feuilleorigine = ActiveSheet.Name
    Workbooks(classeur).Activate
    Range("B70").Value = classeurorigine
    Sheets(nomfeuil).Select
    If Range("O2") = 1 Then
            Call ImporterAuxiliaire
    ElseIf Range("O2") = 2 Then
            Call ImporterGénéraux
    ElseIf Range("O2") = 3 Then
            Call ImporterSection
    ElseIf Range("O2") = 4 Then
            Call ImportPGI3
    ElseIf Range("O2") = 5 Then
        Call ImporterJnal2
    End If
End Sub

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Public Sub ImportPGI3()
    Dim x
    Dim y As Integer, z As Integer, i As Long
    'on cherche la derniere ligne non vide de la feuille excel
    Workbooks(classeurorigine).Activate
    Sheets(feuilleorigine).Select
    dl = Range("A65536").End(xlUp).Row
    'formatage de la plage de cellule avec umport des valeurs
    Workbooks(classeur).Sheets(nomfeuil).Activate
    Application.Goto reference:="t_journal", Scroll:=True
    Range("t_journal").ClearContents
        y = 1
        For i = 1 To dl
            If Mid((Workbooks(classeurorigine).Sheets(feuilleorigine).Cells(i, 1)), 1, 3) <> "***" Then
                z = Range("t_journal").Rows.Count
                If y > z - 1 Then
                    Range("t_journal").Cells(z, 1).Insert Shift:=xlDown
                    Range("t_journal").Cells(y, 1).Value = Mid((Workbooks(classeurorigine).Sheets(feuilleorigine).Cells(i, 1)), 1, 3)
                End If
 
            Range("t_journal").Cells(y + 1, 1).Value = Mid((Workbooks(classeurorigine).Sheets(feuilleorigine).Cells(i, 1)), 1, 3)
            Range("t_journal").NumberFormat = "@"
            y = y + 1
            End If
        Next
    Call FiltreDoublons
End Sub
Sub FiltreDoublons()
    Dim Plage As Range, i As Long, dll As Long
    'on supprime les doublons de la plage de cellule
    dll = Range("t_journal").End(xlUp).Row
    For i = dll To 2 Step -1
        If Range("t_journal").Cells(i, 1).Value = Range("t_journal").Cells(i - 1, 1).Value Then
            Range("t_journal").Cells(i, 1).EntireRow.delete
        End If
    Next
End Sub