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 :

Copier/Coller de la dernière ligne [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Points : 146
    Points
    146
    Par défaut Copier/Coller de la dernière ligne
    Bonjour,

    Je joins mon fichier pour faciliter l'explication du besoin.
    Sur l'onglet "AllDAT", via une macro, j'importe des données en provenance de fichiers TXT.
    La quantité de fichier est aléatoire, aujourd'hui 3 TXT à importer, demain peut être 12 ou 125 .. etc..
    De plus, le nombre de ligne dans un TXT est aléatoire aussi..
    L'importation se passe bien mais je ne parvient pas à combler les "trous".
    Dans le fichier, les valeurs [C36:F36] devraient être recopier jusqu'à [C93:F93] puis, [C94:F94] jusqu'à [C144:F144].

    Si vous aviez un code VBA magique..
    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 144
    Points : 223
    Points
    223
    Par défaut
    Ouaaaaaaaahhhhh !!!!!!

    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
        '*************
        'Guilld
        '*************
        'Titre Colonne
        Range("I10").Select
        ActiveCell.FormulaR1C1 = "DATE"
        Range("J10").Select
        ActiveCell.FormulaR1C1 = "REFERENCE"
        Range("K10").Select
        ActiveCell.FormulaR1C1 = "MATR"
        Range("L10").Select
        ActiveCell.FormulaR1C1 = "OF"
        Range("A10").Select
        ActiveCell.FormulaR1C1 = "SERIAL"
        Range("D10").Select
        ActiveCell.FormulaR1C1 = "RELEVE"
        Range("A1").Select
     
        'copie Valeur
        Range("K1").Select
        Selection.Copy
        Range("I11:I12").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Selection.AutoFill Destination:=Range("I11:I47")
        Range("I11:I47").Select
        Range("G1").Select
        Selection.Copy
        Range("J11:J12").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Selection.AutoFill Destination:=Range("J11:J47")
        Range("J11:J47").Select
        Range("C1").Select
        Selection.Copy
        Range("K11:K12").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Selection.AutoFill Destination:=Range("K11:K47")
        Range("K11:K47").Select
        Range("D3").Select
        Selection.Copy
        Range("L11:L12").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Selection.AutoFill Destination:=Range("L11:L47")
        Range("L11:L47").Select
        Range("A1").Select
     
        'Supp Entete
        Rows("1:9").Select
        Selection.Delete Shift:=xlUp
    Rien que ça ne me donne pas envie de chercher... désolé !
    "Rien ne sert de dire ce qu'on fait, si on ne fait pas ce qu'on dit" (Moi)

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Points : 146
    Points
    146
    Par défaut
    Ben pas grave.. merci quand même.
    on a pas tous ton niveau.. Désolé

  4. #4
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 144
    Points : 223
    Points
    223
    Par défaut
    Ne te vexe pas ! Je voulais juste dire que, quitte à écrire du code, autant prendre des bonnes habitudes tout de suite rapidement

    Par exemple, remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("I10").Select
    ActiveCell.FormulaR1C1 = "DATE"
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("I10").FormulaR1C1 (ou Value) = "DATE"
    par exemple...
    Idem pour les copier/coller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("K1").Copy Destination:= Range("I11:I12")
    plutôt que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range("K1").Select
    Selection.Copy
    Range("I11:I12").Select
    ActiveSheet.Paste
    Quant à mon niveau... je ne suis ni programmeur, ni estampillé MVP, juste curieux depuis quelques années (et autodidacte, mais surtout grâce aux nombreuses aides qu'on trouve sur ce forum).
    "Rien ne sert de dire ce qu'on fait, si on ne fait pas ce qu'on dit" (Moi)

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Points : 146
    Points
    146
    Par défaut
    Ok, ok, je vais modifier ce morceau la.. j'avoue que pour cette partie j'ai été flémard et pris ce qu'Excel m'a donné en mode "enregistrer une macro"..

    Par contre, je suis toujours intéressé pour avoir une aide à ma question..

  6. #6
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 144
    Points : 223
    Points
    223
    Par défaut
    Pour en revenir à la question, je ne comprends pas ton expression "combler les trous"...

    Soit, après importation de tes données, tu recherches les lignes vides et tu les supprimes par .EntireRow.Delete, soit tu importes chaque fichier avec comme cellule cible, la 1ère cellule vide suivante (ce qui me parait plus "élégant")...
    "Rien ne sert de dire ce qu'on fait, si on ne fait pas ce qu'on dit" (Moi)

  7. #7
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Points : 146
    Points
    146
    Par défaut
    Et bien en fait, les valeurs que je tente de dupliquer n'existe que dans l'entête de chaque fichier TXT importé.
    Si tu relis la macro, l'entête est supprimé ainsi que les lignes vides.
    Puis je copie les 4 valeurs dont j'ai besoin (Date, Reference, Matr, OF) sur la première ligne de chaque bloc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'Copie des valeurs Date, File Name, Operator et OF
        Dim j, k, l As Integer
        With Worksheets("AllDAT")
           For j = 25 To Range("A" & Rows.Count).End(xlUp).Row
                If .Range("A" & j) = "Operator" Then
                k = j + 10 ' pour copier 10 lignes plus bas que J
                l = j + 2 ' pour copier 2 lignes plus bas que J
                .Range("K" & j).Copy Worksheets("AllDAT").Range("I" & k) 'Date
                .Range("G" & j).Copy Worksheets("AllDAT").Range("J" & k) 'File name
                .Range("C" & j).Copy Worksheets("AllDAT").Range("K" & k) 'Matricule
                .Range("D" & l).Copy Worksheets("AllDAT").Range("L" & k) 'OF
                End If
            Next j
        End With
    Ensuite je supprime toutes les lignes vide de la colonne A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Il ne reste qu'à les copier (Date, Reference, Matr, OF) sur toutes les lignes vides en respectant les différents bloc (ou TXT ) importés.

    Suis je plus clair ?

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Points : 146
    Points
    146
    Par défaut
    Ce qu'il fallait ajouter à la boucle pour que cela fonctionne..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("M" & k & ":P" & k).Select
                Selection.AutoFill Destination:=Range("M" & k & ":P" & k & Range("P" & k).End(xlUp).Row), Type:=xlFillCopy
    merci bien

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

Discussions similaires

  1. [XL-2007] copier coller et sauter une ligne à chaque fois
    Par alexandrek dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 15/02/2011, 17h35
  2. Copier/coller de blocs de lignes sous VI en sens inverse
    Par Matt29 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/12/2009, 08h25
  3. [XL-2003] copier coller a la dernière ligne de la colonne
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/11/2009, 16h54
  4. [XL-2003] copier coller valeur en une ligne
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/07/2009, 02h16
  5. VB Excel : copier coller selection de plusieurs lignes
    Par skuzo_mars dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/01/2007, 14h48

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