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 :

Compiler des données


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut Compiler des données
    Bonsoir,

    Après avoir longuement recherché sur le site, je me lance.

    En effet j'ai un problème que je n'arrive pas à résoudre.

    J'ai un fichier "BRUT" avec une centaine de feuilles.

    Depuis un fichier "RECAP" je souhaiterai importer grâce à une macro toutes les données des feuilles (du classeur "BRUT") dans une seule et unique feuille (du classeur "RECAP").
    Je souhaiterai mettre les données à la suite les unes des autres, car les feuilles ont toute la même forme.

    Aujourd'hui j'ai un début de code, je ne suis pas expert, donc si quelqu'un peut me donner un coup de main se serait terrible.

    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
    
    Private Sub efface()
    'macro pour effacer le contenu avant d'importer les données du fichier "BRUT"'
    Range("A5:K60000").ClearContents
    End Sub
    
    
    Sub copier()
    
    Dim i As Integer
    Dim J As Integer
    
    Dim comp As Integer
    Dim compteur As Integer
    
    Application.ScreenUpdating = True
    
    Application.Workbooks.Open ("D:\Data\TRAVAIL\Calcul Optimisation\BRUT.xlsx")
    
    comp = 0 'compteur pour les lignes à copier. Mise à zéro'
    compteur = 0 'compteur pour les feuilles à copier. Mise à zéro'
    
    For i = 13 To 3000 'je souhaite copier à partir de la ligne 13'
    For J = 1 To 100 'copier la feuille 1 à 100'
    Sheets(J).Activate
    If Not IsEmpty(Cells(i, 6)) Then 'si cellule F non vide'
    Range(Cells(i, 1), Cells(i, 11)).Select 'on selectionne la ligne de la colonne A à K'
    Selection.Copy 'on copie la ligne'
    Sheets("Recap").Activate
    Cells(comp + 1, 1).Select
    ActiveSheet("Recap").Paste
    comp = comp + 1 'on incremente le compteur'
    compteur = compteur + 1 'on incremente le compteur'
    
    Application.ScreenUpdating = False
    
    End If
    
    Next J
    Next i
    
    End Sub
    pour info j'utilise excel 2007. Le problème c'est que je n'arrive pas à copier les données à la suite dans mon fichier "RECAP".

    D'avance merci.

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Essaie comme ceci :
    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
    Sub copier()
    Dim i As Integer, j As Integer, derL As Long
    Dim WbkSource As Workbook
     
    Application.ScreenUpdating = False
     
    Set WbkSource = Workbooks.Open("D:\Data\TRAVAIL\Calcul Optimisation\BRUT.xlsx")
    derL = ThisWorkbook.Sheets("Recap").Cells(Rows.Count, 6).End(xlUp).Row + 1
     
    With WbkSource
        For j = 1 To .Sheets.Count
            For i = 13 To .Sheets(j).Cells(Rows.Count, 6).End(xlUp).Row
                If .Sheets(j).Cells(i, 6) <> "" Then
                    .Sheets(j).Rows(i).Copy ThisWorkbook.Sheets("Recap").Cells(derL, 1)
                    derL = derL + 1
                End If
            Next i
        Next j
    End With
     
    WbkSource.Close
    Application.ScreenUpdating = True
    MsgBox "Copie terminée", vbInformation
     
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut
    Bonjour Fring,

    Un grand merci, cela fonctionne parfaitement. Je n'ai plus que 2, 3 modifs à faire pour caler le fichier.

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, par curiosité mais plus complexe, généraliste et rapide il y a aussi ceci. 1.5 s pour traiter 170 feuilles et + de 4000 lignes au final sur un PC vieux de 10 ans.

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

Discussions similaires

  1. [XL-2003] Compilation des données de plusieurs feuilles en une seule?
    Par USnico dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/11/2009, 19h08
  2. Réponses: 3
    Dernier message: 06/05/2009, 10h20
  3. Compiler des données de plusieurs fichiers
    Par kirua2150 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/06/2007, 23h25
  4. Structure des données en retour d'un DBExtract ?
    Par mikouts dans le forum XMLRAD
    Réponses: 4
    Dernier message: 24/01/2003, 16h15
  5. Réponses: 2
    Dernier message: 18/12/2002, 11h30

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