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 :

Récupération de données via un autre fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut Récupération de données via un autre fichier
    Bonjour,

    J'ai créé une macro dont le but est de mettre en forme des données dans un fichier csv. Elle fonctionne correctement sauf que pour les données à récupérer dans le fichier d'origine elle laisse des cellules vierges.

    Données à récupérer dans fichier A (normalement en format csv)
    Modules cProcedures

    Merci de votre retour.

    Ci joint le fichier A ainsi que la macro

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Essayer d'ouvrir le fichier CSV de cette manière

    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
    Sub OuvrirCrest()
        Call Workbooks.OpenText(Filename:= _
            strNomFichierInput, Origin:= _
            xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _
            Space:=False, Other:=False, OtherChar:="""")
     
        With ActiveSheet
                .UsedRange.Replace What:="""", Replacement:="", LookAt:=xlPart, _
                 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                 ReplaceFormat:=False
     
                .Name = "INPUT"
        End With
    End Sub
    Pour plus de compatibilité avec les fichiers CSV, je recommande l'utilisation de du séparateur de liste ";" au lieu de ",".

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut
    Merci pour ta réponse.
    Ça ouvre correctement mon fichier input dans un autre classeur.
    En revanche au niveau de la récupération de mes données j'ai du modifier

    'Do While Sheets("INPUT").Cells(i, 1) <> ""

    et j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While Workbooks.Open("INPUT").Cells(i, 1) <> ""

    mais ça ne fonctionne toujours pas

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour,

    Je ne suis pas trop sur de qui se passe exactement avec ce code Do While Workbooks.Open("INPUT").Cells(i, 1) <> "".
    Mais dans le principe, je ne mettrais pas d'ouverture de fichier dans une boucle.

    Remplacer le code de la fonction CreationFichierOutPut() avec celui-ci.
    Rmq : Il faudra adapter la correspondance de colonne entre les feuilles Input et Output.
    r.Offset(0, 13).Value voulant dire retourne la valeur de la colonne A, décalée de 13 colonnes.

    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
    Sub CreationFichierOutput()
    'Procédure qui alimente une nouvelle feuille avec les données CREST et des données fixes"
     
    Dim i As Integer
    Dim strDateChanger As String
    i = 1
    NouvelleFeuille ("OUTPUT")
     
    Dim wsIn As Worksheet
    Set wsIn = Workbooks(Mid(strNomFichierInput, InStr(1, strNomFichierInput, "\") + 1)).Worksheets("INPUT")
     
    Dim r As Range
    For Each r In wsIn.Range("A2:A" & wsIn.Range("A" & wsIn.Rows.Count).End(xlUp).Row)
        With Sheets("OUTPUT")
            strDateChanger = r.Offset(0, 4).Value
            .Cells(i, 1) = "PARBGB"
            .Cells(i, 2) = r.Offset(0, 6).Value
            .Cells(i, 3) = "Y"
            .Cells(i, 4) = "R/D"
            .Cells(i, 5) = r.Offset(0, 2).Value
            .Cells(i, 6) = "NEWM"
            .Cells(i, 8) = Right(strDateChanger, 4) & Decode(Mid(strDateChanger, 4, 3), "Jan", "01", _
            "Feb", "02", "Mar", "03", "Apr", "04", "May", "05", "Jun", "06", "Jul", "07", "Aug", "08", "Sep", "09", _
            "Oct", "10", "Nov", "11", "Dec", "12") & Left(strDateChanger, 2)
            .Cells(i, 9) = Format(Date, "yyyymmdd")
            .Cells(i, 15) = r.Offset(0, 8).Value
            .Cells(i, 17) = "FAMT"
            .Cells(i, 18) = r.Offset(0, 11).Value
            .Cells(i, 19) = "100002170100"
            .Cells(i, 35) = "CRSTGB22XXX"
            .Cells(i, 37) = "CRST"
            .Cells(i, 39) = "CRST"
            .Cells(i, 40) = r.Offset(0, 13).Value
            .Cells(i, 41) = r.Offset(0, 14).Value
            .Cells(i, 44) = "CRST"
            .Cells(i, 45) = r.Offset(0, 13).Value
            .Cells(i, 46) = r.Offset(0, 14).Value
        End With
        i = i + 1
    Next r
    End Sub

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/04/2015, 10h43
  2. récupération de données via un selected
    Par Appli dans le forum Langage
    Réponses: 7
    Dernier message: 09/12/2006, 17h40
  3. Réponses: 3
    Dernier message: 23/09/2006, 16h19
  4. Données dans un autre fichier xls
    Par madislak dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/07/2006, 16h26
  5. récupération des données via une liste déroulante
    Par rahan_dave dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2005, 13h27

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