Copie de ligne dans un nouveau classeur

kyrilp Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
kyrilp Messages postés 16 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?
A voir également:

5 réponses

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
kyrilp Messages postés 16 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
kyrilp Messages postés 16 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
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
kyrilp Messages postés 16 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
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
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
kyrilp Messages postés 16 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
kyrilp Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
je dois definir la variable a par quoi? ou je dois laisser les " " vide?
0
kyrilp Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
ça ne marche toujours pas....je suis désolé
0
kyrilp Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
apres "do while " on passe directement en end sub
0
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
kyrilp Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
vide (toutes les lignes ne sont pas concernées par cette codification
0
melanie1324 Messages postés 1561 Statut Membre 156
 
dans quelle colonne as-tu toujours une donnée de renseigner?
0
kyrilp Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
k ou l ou les 6 premiere
0
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
kyrilp Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
snif rien........
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
kyrilp Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
rebelote ça bloque au même endroit!
0
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
kyrilp Messages postés 16 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
melanie1324 Messages postés 1561 Statut Membre 156
 
as tu trouve au moins ou était l'erreur?
0
kyrilp Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
non je cherche encore! mais je ne désespéré pas.
0