Copie de ligne dans un nouveau classeur

kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai un tableau excel constitué d'environ 30 000 ligne et je dois en copié certaine dans des classeur spécifique.
c'est a dire que chaque colonne a un code spécifique sur des colonne comprise entre N et U et je voudrais copié chaque ligne (du moins le contenue des douze premières colonne dans un classeur du même nom (classeur existant déjà) que le code d'identification
par exemple la ligne 2302 a un code P10 en colonne N je voudrais donc copier le contenu des colonnes de A à L dans le classeur P10
que dois-je faire?

5 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    bonjour,

    il faut passer par une macro.

    Le code :

    sub copiercoller ()
    'commence à la deuxième ligne
    i=2
    origine = activeworkbook.name
    sheets("Feuil1").select ' remplaces feuil1 par le nom de ta feuille
    do while cells(i,14) <> "" 'fonctionnera jusqu'à ce que la colonne N soit vide
    ' ouvre un fichier spécifique

    Workbooks.Open Filename:= _
    "C:\Documents and Settings\Pierre\Bureau\Dossier VBA\" & cells(i,14) & ".xls"

    ' remplaces C:\.... par le chemin ou se trouve tous tes dossiers
    travail=activeworkbook.name
    sheets("Feuil1").select ' remplaces feuil1 par le nom de ta feuille
    j=1 'commences à trouver une ligne vide à partir de la première
    do while cells(i,1)<>""
    i=i+1
    loop

    workbooks(origine).activate
    range(cells(i,1),cells(i,12)).copy
    workbooks(travail).activate
    cells(j,1).select
    activesheet.paste
    Activeworkbook.save
    activeworkbook.close
    i=i+1
    loop

    end sub
    0
    1. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      merci de ton aide ça ne marche pas (je suis convaincu que ça vient de moi) mais merci de m'avoir aidé.
      0
    2. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      bon en fait sa marche plus ou moins mais les lignes concernées se superpose par conséquent je n'ai pas le liste des élément ayant le code P10 qui plus est j'aimerai copié l'intitulé des premières colonne et donc déclenché la copie sur la ligne deux et que tous ce copient les uns a la suite des autres.
      0
  2. melanie1324 Messages postés 1561 Statut Membre 156
     
    bonjour,

    voici le code :

    sub copiercoller ()
    'commence à la deuxième ligne
    i=2
    origine = activeworkbook.name
    sheets("Feuil1").select ' remplaces feuil1 par le nom de ta feuille
    do while cells(i,14) <> "" 'fonctionnera jusqu'à ce que la colonne N soit vide
    ' ouvre un fichier spécifique

    Workbooks.Open Filename:= _
    "C:\Documents and Settings\Pierre\Bureau\Dossier VBA\" & cells(i,14) & ".xls"

    ' remplaces C:\.... par le chemin ou se trouve tous tes dossiers
    travail=activeworkbook.name
    sheets("Feuil1").select ' remplaces feuil1 par le nom de ta feuille
    workbooks(origine).activate
    range(cells(1,1),cells(1,12)).copy
    workbooks(travail).activate
    cells(1,1).select
    Activesheet.paste

    j=1 'commence à trouver une ligne vide à partir de la première
    do while cells(j,1)<>""
    j=j+1
    loop

    workbooks(origine).activate
    range(cells(i,1),cells(i,12)).copy
    workbooks(travail).activate
    cells(j,1).select
    activesheet.paste
    Activeworkbook.save
    activeworkbook.close
    i=i+1
    loop

    end sub
    0
    1. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      j'ai envi de dire "harg je n'y arrive pas" je suis extrêmement nul!
      en plus j'ai appris que je dois aussi copier les colonnes N à U et l'intitulé de chaque colonne
      le document de base s'appelle ExportTopo dont sa feuille est Topo et je dois copié toutes les ligne portant le code P10 dans le classeur excel s'appelant P10 et dont sa feuille s'appelle Feuil1..............je demande pardon pour mon incompétence!
      0
  3. melanie1324 Messages postés 1561 Statut Membre 156
     
    Re,

    voici un novueau code. Copie le et suis les instructions qui sont en vertes.

    sub copiercoller ()
    'commence à la deuxième ligne
    a=""
    i=2
    origine = activeworkbook.name
    sheets("Topo").select
    do while cells(i,14) <> "" 'fonctionnera jusqu'à ce que la colonne N soit vide
    ' ouvre un fichier spécifique

    If cells(i,14) = "P10" then

    Workbooks.Open Filename:= _
    "C:\Documents and Settings\Pierre\Bureau\Dossier VBA\" & cells(i,14) & ".xls" ' remplaces C:\.... par le chemin ou se trouve tous tes dossiers C:\......\P10

    travail=activeworkbook.name
    sheets("Feuil1").select

    if a = "" then
    cells.clear
    a=1
    j=2
    workbooks(origine).activate
    range(cells(i,1),cells(i,12)).copy
    workbooks(travail).activate
    cells(j,1).select
    activesheet.paste
    Activeworkbook.save
    activeworkbook.close
    j=j+1
    else

    workbooks(origine).activate
    range(cells(1,1),cells(1,12)).copy
    workbooks(travail).activate
    cells(1,1).select
    Activesheet.paste

    workbooks(origine).activate
    range(cells(i,1),cells(i,12)).copy
    workbooks(travail).activate
    cells(j,1).select
    activesheet.paste
    Activeworkbook.save
    activeworkbook.close
    j=j+1
    end if
    end if

    i=i+1
    loop

    end sub

    essaie et dis moi.
    0
    1. melanie1324 Messages postés 1561 Statut Membre 156
       
      aqpuies sur F8 en ayant tes classeurs en visu. tu verras ce que fais la macro. En plus, je viens de m'apercevoir que j'ai fait une erreur, recopies ce code plutot :

      sub copiercoller ()
      'commence à la deuxième ligne
      a=""
      i=2
      origine = activeworkbook.name
      sheets("Topo").select
      do while cells(i,14) <> "" 'fonctionnera jusqu'à ce que la colonne N soit vide
      ' ouvre un fichier spécifique

      If cells(i,14) = "P10" then

      Workbooks.Open Filename:= _
      "C:\Documents and Settings\Pierre\Bureau\Dossier VBA\" & cells(i,14) & ".xls" ' remplaces C:\.... par le chemin ou se trouve tous tes dossiers C:\......\P10

      travail=activeworkbook.name
      sheets("Feuil1").select

      if a = "" then
      cells.clear
      a=1
      j=2
      workbooks(origine).activate
      rows(1).copy
      workbooks(travail).activate
      cells(1,1).select
      activesheet.paste

      workbooks(origine).activate
      rows(i).copy
      workbooks(travail).activate
      cells(j,1).select
      activesheet.paste
      Activeworkbook.save
      activeworkbook.close

      j=j+1
      else


      workbooks(origine).activate
      rows(i).copy
      workbooks(travail).activate
      cells(j,1).select
      activesheet.paste
      Activeworkbook.save
      activeworkbook.close
      j=j+1
      end if
      end if



      i=i+1
      loop

      end sub
      0
    2. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      ça ne marche pas est ce que ça vient du fete que mon fichier de dépar exporttopo est sur mon disc c et que le fichier P10 est sur le serveur de ma boite?
      "C:\Documents and Settings\Pierre\Bureau\Dossier VBA\" & cells(i,14) & ".xls"= mon fichier excel P10 est en xlsx est ce que ça vient de la?
      0
    3. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      je dois definir la variable a par quoi? ou je dois laisser les " " vide?
      0
    4. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      ça ne marche toujours pas....je suis désolé
      0
    5. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      apres "do while " on passe directement en end sub
      0
  4. melanie1324 Messages postés 1561 Statut Membre 156
     
    qu'est ce que tu as à la ligne 2 et la 14ème colonne comme valeur?
    0
    1. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      vide (toutes les lignes ne sont pas concernées par cette codification
      0
    2. melanie1324 Messages postés 1561 Statut Membre 156
       
      dans quelle colonne as-tu toujours une donnée de renseigner?
      0
    3. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      k ou l ou les 6 premiere
      0
    4. melanie1324 Messages postés 1561 Statut Membre 156
       
      ok alors ce code sera le bon (j'espère) :

      sub copiercoller ()
      'commence à la deuxième ligne
      a=""
      i=2
      origine = activeworkbook.name
      sheets("Topo").select
      do while cells(i,11) <> "" 'fonctionnera jusqu'à ce que la colonne N soit vide
      ' ouvre un fichier spécifique

      If cells(i,14) = "P10" then

      Workbooks.Open Filename:= _
      "C:\Documents and Settings\Pierre\Bureau\Dossier VBA\" & cells(i,14) & ".xls" ' remplaces C:\.... par le chemin ou se trouve tous tes dossiers C:\......\P10

      travail=activeworkbook.name
      sheets("Feuil1").select

      if a = "" then
      cells.clear
      a=1
      j=2
      workbooks(origine).activate
      range(cells(i,1),cells(i,12)).copy
      workbooks(travail).activate
      cells(j,1).select
      activesheet.paste
      Activeworkbook.save
      activeworkbook.close
      j=j+1
      else

      workbooks(origine).activate
      range(cells(1,1),cells(1,12)).copy
      workbooks(travail).activate
      cells(1,1).select
      Activesheet.paste

      workbooks(origine).activate
      range(cells(i,1),cells(i,12)).copy
      workbooks(travail).activate
      cells(j,1).select
      activesheet.paste
      Activeworkbook.save
      activeworkbook.close
      j=j+1
      end if
      end if



      i=i+1
      loop

      end sub
      0
    5. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      snif rien........
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. melanie1324 Messages postés 1561 Statut Membre 156
     
    recopies plutot celui la et fais f8 :

    sub copiercoller ()
    'commence à la deuxième ligne
    a=""
    i=2
    origine = activeworkbook.name
    sheets("Topo").select
    cells(i,11).select
    do while cells(i,11) <> "" 'fonctionnera jusqu'à ce que la colonne N soit vide
    ' ouvre un fichier spécifique
    cells(i,14).select
    If cells(i,14) = "P10" then

    Workbooks.Open Filename:= _
    "C:\Documents and Settings\Pierre\Bureau\Dossier VBA\" & cells(i,14) & ".xls" ' remplaces C:\.... par le chemin ou se trouve tous tes dossiers C:\......\P10

    travail=activeworkbook.name
    sheets("Feuil1").select

    if a = "" then
    cells.clear
    a=1
    j=2
    workbooks(origine).activate
    range(cells(i,1),cells(i,12)).copy
    workbooks(travail).activate
    cells(j,1).select
    activesheet.paste
    Activeworkbook.save
    activeworkbook.close
    j=j+1
    else

    workbooks(origine).activate
    range(cells(1,1),cells(1,12)).copy
    workbooks(travail).activate
    cells(1,1).select
    Activesheet.paste

    workbooks(origine).activate
    range(cells(i,1),cells(i,12)).copy
    workbooks(travail).activate
    cells(j,1).select
    activesheet.paste
    Activeworkbook.save
    activeworkbook.close
    j=j+1
    end if
    end if

    i=i+1
    cells(i,11).select
    loop

    end sub
    -1
    1. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      rebelote ça bloque au même endroit!
      0
    2. melanie1324 Messages postés 1561 Statut Membre 156
       
      je peux pas t'aider plus. je te mets des commentaires en verts qui explique ce que cela doit faire. Tu trouveras peut être l'erreur :



      sub copiercoller ()

      a=""
      i=2
      origine = activeworkbook.name
      sheets("Topo").select 'sélectionnes la feuille Topo du classeur ouvert
      cells(i,11).select 'sélectionnes la ligne i (2) et la colonne 11 (K)
      do while cells(i,11) <> "" 'fonctionnera jusqu'à ce que la colonne N soit vide 'si la cellule de la ligne 2 (ivaleur i) de la colonne K n'est pas vide

      cells(i,14).select 'on sélectionnes la cellule de la ligne 2 (valeur de i) de la colonne 14 (N)
      If cells(i,14) = "P10" then 'si la ligne 2 et colonne 1 = P10 alors

      Workbooks.Open Filename:= _
      "C:\Documents and Settings\Pierre\Bureau\Dossier VBA\" & cells(i,14) & ".xls" ' remplaces C:\.... par le chemin ou se trouve tous tes dossiers C:\......\P10 ==> te permet d'ouvrir le fichier P10

      travail=activeworkbook.name
      sheets("Feuil1").select 'on sélectionne la feuille 1 de ton classeur P10

      'le reste permet de copier la ligne i de ton premier tableau dans P10
      if a = "" then
      cells.clear
      a=1
      j=2
      workbooks(origine).activate
      range(cells(i,1),cells(i,12)).copy
      workbooks(travail).activate
      cells(j,1).select
      activesheet.paste
      Activeworkbook.save
      activeworkbook.close
      j=j+1
      else

      workbooks(origine).activate
      range(cells(1,1),cells(1,12)).copy
      workbooks(travail).activate
      cells(1,1).select
      Activesheet.paste

      workbooks(origine).activate
      range(cells(i,1),cells(i,12)).copy
      workbooks(travail).activate
      cells(j,1).select
      activesheet.paste
      Activeworkbook.save
      activeworkbook.close
      j=j+1
      end if
      end if



      i=i+1 'on va regarder la ligne suivante
      cells(i,11).select 'on sélectionner la cellule de la ligne 3 (valeur de i) de la colonne K (11)
      loop

      end sub
      0
    3. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      merci beaucoup pour ton aide! c'est sympa d'avoir accorder du temps au pauvre candide de la macro que je suis
      0
    4. melanie1324 Messages postés 1561 Statut Membre 156
       
      as tu trouve au moins ou était l'erreur?
      0
    5. kyrilp Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      non je cherche encore! mais je ne désespéré pas.
      0