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 :

pb dans le copiage de ligne bien spécifique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut pb dans le copiage de ligne bien spécifique
    Bonjour,

    Voila mon problème (hors mis que je suis totalement novice en vba ) :

    J'ai 1043 fichiers excel qui présente la même forme de tableau mais avec des valeurs différentes bien sûr.
    J'aimerai pouvoir copier la ligne 48 de chaque fichier et les coller dans un nouveau fichier excel "ClasseurTemp.xslm"


    voila le code que j'ai pondu, mais ca ne marche pas.

    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
    Sub copie48()
     
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim i As Integer
     
     
    For Each wb In Application.Workbooks
    i = 1
    'For Each ws In wb.Worksheets
     
     
    Rows(48).Select
    Selection.Copy
    Windows("ClasseurTemp.xlsm").Activate
    Rows(i).Select
    ActiveSheet.Paste
     
     
    i = i + 1
     
     
    'Next ws
     
    Next wb
     
    End Sub

    Donc di quelqu'un pouvait me depanner ca serait très sympa.
    merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    J'ai pas testé mais çà devrait mieux fonctionner à mon avis
    Avant de faire un copier de ta ligne 48, il faut activer le classeur en question, sinon il reste sur le classeuractuelle donc, il te copie certainement des lignes vides
    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
     
    Sub copie48()
     
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim i As Integer
     
     
    For Each wb In Application.Workbooks
    i = 1
    wb.Activate
    Rows(48).Select
    Selection.Copy
    Windows("ClasseurTemp.xlsm").Activate
    Rows(i).Select
    ActiveSheet.Paste
     
     
    i = i + 1
     
    Next wb
     
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut
    merci de ta réponse, j'ai testé, la macro se lance bien sans erreur, mais elle ne copie pas ce que je lui demande.

    au final j'obtiens une sélection des ligne 1 à 40, je comprend pas pourquoi...

  4. #4
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonsoir,housemiouzic

    Il y as encore des choses pas terribles dans ton code, les selects et activate... l'intialisation de ta variable i, pas au bon endroit à mon sens..

    On manque un peu d'infos, alors je considére ,en lisant ton code,que tous les classeurs à traiter sont ouvert, et l'on copie la ligne 48 de tous les feuilles de ces classeurs. J'ai rajouté un filtre sur le nom du classeur afin de ne pas traiter des classeurs autre (style macro..)

    voici le code à mettre dans un module de ton classeur résultat, il récupére les lignes 48 et les placent dans sa feuille 1.

    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
    Sub copie48()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim i As Integer
    i = 1
    For Each wb In Application.Workbooks 'Je considére que tous les classeurs à traiter sont ouvert
     If Not (wb Is ThisWorkbook) Then  ' Je ne traite pas le fichier contenant la macro
        If wb.Name Like "Classeur*" Then 'Je ne traite que les classeurs dont le nom commence par w
        Debug.Print "Traite :" & wb.Name
        For Each ws In wb.Worksheets 'boucle dans les feuilles du classeur
            ws.Rows(48).Copy ThisWorkbook.Sheets(1).Rows(i) 'Copie vers ce classeur (celui où l'on trouve ce code)
            i = i + 1
         Next
       End If
     End If
    Next wb
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut
    excellent ca marche !! merci beaucoup, connaitrez-vous une méthode qui me permet de ne pas ouvrir les classeurs à traiter, mais juste a indiquer le chemin du répertoire?

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/06/2015, 00h44
  2. [XL-2013] Copiage de ligne selon double critère (date et présence dans une liste)
    Par VictorienR dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 26/03/2015, 09h02
  3. Dbgrid Executer une procedure dans un déplacement de ligne
    Par Morisse dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/05/2005, 07h01
  4. [excel vba]case à cocher dans excel pour plusieurs lignes
    Par fcoisb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2005, 11h23
  5. Réponses: 2
    Dernier message: 26/09/2003, 14h51

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