Importation élaborée d'un .csv

Bonjour, je cherche à gérer l'importation d’un fichier csv généré par une feuille Excel

Je voudrais pouvoir importer le csv en le choisissant, et le traiter sauf si son nom commence par "exp37", puis importer le csv de manière élaborée.

J'ai posé la façon dont je vois le déroulement de la macro de manière algorithmique :

Si le nom du csv ne commence pas par exp37…

Pour chaque ligne du csv
                Pour chaque ligne i du pdc de la ligne 15 à la dernière
                        Si PersonneCSV <> PersonneLigne
                                Range (« A »&i+1).select //pour pouvoir utiliser la macro d’insertion au besoin
                                SinonSi ActCSV <> ActLigne

                                        Si ActLigne = « CONGES »
                                                Macro InserLigne +
                                                Insérer a la ligne de la cellule actuelle la ligne du CSV
                                                Sinon Range (« A »&i+1).select
                                        FinSi

                                        Si ActLigne = « »
                                                Insérer a la ligne de la cellule actuelle la ligne du CSV
                                                Sinon Range (« A »&i+1).select
                                        FinSi

                                        Sinon RemplacerLigne PDC par ligne CSV
                                FinSi
                        FinSi

                FinPour
FinPour

FinSi

En gros j'avais pensé à une sorte de curseur afin de réutiliser le composant déjà existant en descendant au fur et à mesure tant que je n'ai pas croisé dans un premier temps,la personne, puis ensuite, sois l'activité, sois rien, sois "CONGES" puis traiter de manière différente en fonction...

Merci par avance pour toute aide apportée

17exporttest.csv (449.00 Octets)
25pdc2013.zip (21.50 Ko)
Si le nom du csv ne commence pas par exp37…
    Range (« A15 »).select
Pour chaque ligne du csv
        Pour chaque ligne i du pdc de la ligne 15 à la dernière
            Si PersonneCSV = PersonneLigne

                Si ActCSV <> ActLigne

                    Si ActLigne = « CONGES »
                        Macro InserLigne +
                        Insérer a la ligne de la cellule actuelle la ligne du CSV
                    FinSi

                    Si ActLigne = « »
                        Insérer a la ligne de la cellule actuelle la ligne du CSV
                    FinSi

                    Sinon 
RemplacerLigne PDC par ligne CSV
                FinSi
            FinSi
            Range (« A »&i+1).select //pour pouvoir utiliser la macro d’insertion au besoin    
        FinPour
FinPour

FinSi

Je viens de voir une erreur sur mon algo, voici le bon, je pense

Up ! Excusez moi mais c'est plutôt important pour moi et je galère comme pas possible

Bonjour

Pour commencer

Wooah, merci de t’intéresser à mon cas ! J'avais commencé de la sorte en tâtonnant quelque peu, je regarde ton code dans l'aprem, merci encore !

Option Explicit

Type Colonne
    Ressource As Long
    Activite As Long
    Janvier As Long
End Type

Sub Tst()
Dim Fichier As Variant
Dim result As Boolean
    ChDir ThisWorkbook.Path
    Fichier = Application.GetOpenFilename("Text Files (*.csv), *.csv")
    result = Fichier Like "*exp37*"
    If Fichier <> False Then
        If result = False Then

        Import Fichier
            Else: MsgBox ("Veuillez choisir un fichier qui n'est pas du PDC37")
        End If
    End If
End Sub

Sub Import(ByVal NomFichier As String)
    Dim Col As Colonne
    Dim oFSO As Variant, Fich As Variant, Ts As Variant
    Dim nbLigCSV As Integer

    '  Chargement des colonnes
    Col.Ressource = 1
    Col.Activite = 3
    Col.Janvier = 5

    '  Séparateur Point Virgule
    Separateur = ";"

    '  Donne le nombre de lignes du fichier .csv
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set Fich = oFSO.OpenTextFile(NomFichier, 1)
    Ts = Fich.ReadAll
    nbLigCSV = Fich.Line - 1

    '  Feuille à traiter
    Set Sh = ActiveWorkbook.Worksheets("AFFECTATIONS")
    LigFin = Sh.UsedRange.Rows.Count

    'Pour chaque ligne du csv
        'Pour chaque ligne i du pdc de la ligne 15 à la dernière
            'Si PersonneCSV = PersonneLigne
                'Si ActCSV <> ActLigne
                    'Si ActLigne = « CONGES »
                        ' Macro InserLigne +
                        'Insérer a la ligne de la cellule actuelle la ligne du CSV
                    'FinSi

                    'Si ActLigne = « »
                        'Insérer a la ligne de la cellule actuelle la ligne du CSV
                    'FinSi

                        'Sinon
                            'RemplacerLigne PDC par ligne CSV
                'FinSi
            'FinSi
            'Range (« A »&i+1).select //pour pouvoir utiliser la macro d’insertion au besoin
        'FinPour
    'FinPour

End Sub

C'est cool merci !

Rechercher des sujets similaires à "importation elaboree csv"