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 :

rangement des données dans excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Par défaut rangement des données dans excel
    Ma macro marche très bien, mais avec un dossier j'ai un souci: j'ai les 4 premiers fichiers csv qui se retrouvent à la fin. Alors qu'ils sont appelés de HQE-3.....HQE-50. Avec un autre dossier ca marche très bien exemple: paul-12 à paul-30. ce n'est pas les majuscule. Bien entendu ca m'embête car mes dossiers ont un nombre de fichiers variables. Impossible de trouver la source du problème, j'ai renommé et tout rien à faire:

    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
    Sub csvImport4()
    Sheets("fichier").Select
    ActiveWindow.ScrollRow = 356
        ActiveWindow.ScrollRow = 345
       ' !!!! SUPPRIMER TOUS CES ActiveWindow.ScrollRow INUTILES !!!
        Range("M372").Select
        Const NB_COL_CSV As Integer = 8    '** définir ici le nombre (fixe) de colonnes de tes csv
        Dim j As Integer                    '** compteur colonne
     
        Dim Wbcsv As Workbook
        Dim Fichier As String, Chemin As String
        Dim LastLig As Long, NewLig As Long
        Dim c As Range
        Dim Tablo
        Const Sep As String = ";"
     
        Application.ScreenUpdating = False                                   'Inhibe la mise à jour affichage
        With Application.FileDialog(msoFileDialogFolderPicker)
            .Show
            If .SelectedItems.Count = 1 Then Chemin = .SelectedItems(1)
        End With
     
        If Chemin <> "" Then
            Chemin = Chemin & "\"
            Fichier = Dir(Chemin & "*.csv")                                  'Le premier fichier csv trouvé
            j = 1
            Do While Fichier <> ""                                           'on fait une boucle jusqu'à ce qu'on ne trouve plus de fichier csv
                Name Chemin & Fichier As Replace(Chemin & Fichier, ".csv", ".txt")
                Fichier = Replace(Fichier, ".csv", ".txt")
                Set Wbcsv = Workbooks.Open(Chemin & Fichier)                 'On ouvre le fichier csv qu'on affecte à la variable Wbcsv
                With Wbcsv.Sheets(1)
                    LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row           'LastLig est la dernière ligne remplie du fichier csv ouvert
                End With
                With ThisWorkbook.Worksheets("fichier")
                    For Each c In Wbcsv.Sheets(1).Range("A2:A" & LastLig)    'Pour chaque cellule de A2:Axxx
                        NewLig = .Cells(.Rows.Count, j).End(xlUp).Row + 1    '** la première cellule vide de la colonne j de Feuil1 de ce classeur
                        Tablo = Split(c.Value, Sep)                          'On sépare les données par rapport au séparateur (ici le point virgule)
                        .Range(.Cells(NewLig, j), .Cells(NewLig, j + UBound(Tablo))).Value = Tablo  'on copie
                    If IsNumeric(.Cells(NewLig, j + 3).Value) Then .Cells(NewLig, j + 3).Value = CDbl(.Cells(NewLig, j + 3).Value) '** Pour éviter ta boucle de fin sur la colonne D
                    Next c
                End With
     
                Wbcsv.Close                                                  'On ferme le fichier csv
                Set Wbcsv = Nothing
                j = j + NB_COL_CSV                                           '** Incrément compteur colonne
     
                Name Chemin & Fichier As Replace(Chemin & Fichier, ".txt", ".csv")
                Fichier = Dir()                                              'on cherche le fichir csv suivant
            Loop
        End If
        Sheets("Cas A").Select
    End Sub

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Par défaut rangement données dans excel
    Cette macro me range dans l'ordre mes fichiers excel dans un dossier.
    Or les 3 premiers fichiers se retrouvent systématiquement les 3 derniers dans excel. pourquoi?
    Code vb : 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
    Sub csvImport4()
     
      Const NB_COL_CSV As Integer = 8    '** définir ici le nombre (fixe) de colonnes de tes csv
        Dim j As Integer                    '** compteur colonne
     
        Dim Wbcsv As Workbook
        Dim Fichier As String, Chemin As String
        Dim LastLig As Long, NewLig As Long
        Dim c As Range
        Dim Tablo
        Const Sep As String = ";"
     
        Application.ScreenUpdating = False                                   'Inhibe la mise à jour affichage
        With Application.FileDialog(msoFileDialogFolderPicker)
            .Show
            If .SelectedItems.Count = 1 Then Chemin = .SelectedItems(1)
        End With
     
        If Chemin <> "" Then
            Chemin = Chemin & "\"
            Fichier = Dir(Chemin & "*.csv")                                  'Le premier fichier csv trouvé
            j = 1
            Do While Fichier <> ""                                           'on fait une boucle jusqu'à ce qu'on ne trouve plus de fichier csv
                Name Chemin & Fichier As Replace(Chemin & Fichier, ".csv", ".txt")
                Fichier = Replace(Fichier, ".csv", ".txt")
                Set Wbcsv = Workbooks.Open(Chemin & Fichier)                 'On ouvre le fichier csv qu'on affecte à la variable Wbcsv
                With Wbcsv.Sheets(1)
                    LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row           'LastLig est la dernière ligne remplie du fichier csv ouvert
                End With
                With ThisWorkbook.Worksheets("fichier")
                    For Each c In Wbcsv.Sheets(1).Range("A2:A" & LastLig)    'Pour chaque cellule de A2:Axxx
                        NewLig = .Cells(.Rows.Count, j).End(xlUp).Row + 1    '** la première cellule vide de la colonne j de Feuil1 de ce classeur
                        Tablo = Split(c.Value, Sep)                          'On sépare les données par rapport au séparateur (ici le point virgule)
                        .Range(.Cells(NewLig, j), .Cells(NewLig, j + UBound(Tablo))).Value = Tablo  'on copie
                    If IsNumeric(.Cells(NewLig, j + 3).Value) Then .Cells(NewLig, j + 3).Value = CDbl(.Cells(NewLig, j + 3).Value) '** Pour éviter ta boucle de fin sur la colonne D
                    Next c
                End With
     
                Wbcsv.Close                                                  'On ferme le fichier csv
                Set Wbcsv = Nothing
                j = j + NB_COL_CSV                                           '** Incrément compteur colonne
     
                Name Chemin & Fichier As Replace(Chemin & Fichier, ".txt", ".csv")
                Fichier = Dir()                                              'on cherche le fichir csv suivant
            Loop
        End If
        Sheets("Cas A").Select
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Par défaut
    En fait c'est quand mes dossier son nommé paul-1 à paul-9 que ca ne va pas.ce qui est compris entre 1 et 9 se barre à la fin. entre 10 et 100000 ca marche; mais pas sous 10. pourquoi?

Discussions similaires

  1. Transfert des données dans excel
    Par adam57 dans le forum Forms
    Réponses: 1
    Dernier message: 25/04/2008, 12h15
  2. [VB6 + EXCEL] Importer des données dans EXCEL
    Par david71 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/07/2007, 18h43
  3. Exportation des donneés dans Excel
    Par jmde dans le forum Access
    Réponses: 2
    Dernier message: 13/03/2007, 07h24
  4. Importer des données dans Excel
    Par denis finch dans le forum Excel
    Réponses: 2
    Dernier message: 28/09/2006, 18h27
  5. Récupérer des données dans excel
    Par alexia2 dans le forum MFC
    Réponses: 1
    Dernier message: 19/05/2005, 15h34

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