IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Importation élaborée d'un .csv


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 31
    Par défaut 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 :

    Code : 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
     
    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
    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...Mais j'ai un mal fou à implémenter ça en vba

    Merci par avance pour toute aide apportée ! (ci-joint, le fichier csv et là ou je veux importer, avec la macro qui existe déjà)
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 31
    Par défaut
    Bon j'avance à taton, mais de l'aide serait géniale et bienvenue

    Code : 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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    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
    Fichiers attachés Fichiers attachés

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    j'ai ammené ma pierre à l’édifice regare le fichier joint,
    dézip tout le répertoire car j'ai mis le fichier csv dans un sou répertoire!
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/06/2007, 11h02
  2. Pb d'import d'un fichier .csv
    Par clodius dans le forum Access
    Réponses: 2
    Dernier message: 17/04/2007, 10h18
  3. Importer des données format CSV dans BBD MySQL
    Par Taz_8626 dans le forum Administration
    Réponses: 1
    Dernier message: 04/04/2006, 14h16
  4. Import de fichier Excel (CSV) dans MySQL
    Par mathieu77186 dans le forum Outils
    Réponses: 2
    Dernier message: 27/03/2006, 23h23
  5. importation d'un fichier csv
    Par bidson dans le forum XMLRAD
    Réponses: 14
    Dernier message: 22/12/2005, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo