Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
694 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  gros fichier excel copier et inserer des lignes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gros fichier excel copier et inserer des lignes

n°1906180
Marine4980
Posté le 17-07-2009 à 15:06:15  profilanswer
 

Bonjour,  
Je suis perdu en Angleterre au milieu d'anglais qui ne peuvent pas m'aider et sur un clavier QWERTY, j'aurai besoin d'un sauveur.
 
Je vous explique aux mieux la situation, j' ai un gros fichier Excel avec 3 colonnes A, B et C et 785 lignes de la ligne 2 a 787 avec du texte et des chiffres, je souhaite pour chaque ligne contenant des informations insérer 7 lignes en dessous et copier le contenue de la premiere ligne et ceux-ci pour les trois colonnes. Le mieux je pense etant de copier toute la ligne.
Pour le moment je fais tout manuellement, c'est a dire que je selectionne la ligne entiere je la copie puis je fais inserer les cellules copier et cela 7 fois ca me prend un temps monstres.  
je suis oblige d'inserer les lignes a coller parce-qu'en dessous de la ligne que je veux copier 7 fois il y a bien sur d'autres lignes avec des informations dedans que je ne veux pas effacer et que d'ailleurs je veux aussi copier et inserer 7 fois, etc..
 
En clair, je veux juste inserer le contenu de la premiere ligne 7 fois entre la 1ere ligne et la seconde, puis inserer 7 fois le contenue de la seconde ligne entre la seconde ligne et la troisieme ligne, puis faire ca pour les 784 lignes que j'ai au depart ce qui va me donner 784 lignes 8 fois donc un fichier de 6272 entré a la fin.
 
 
 
J'ai bien essayer de faire une macro avec le bouton enregistrer mais mon niveau et vraiment tres tres bas pour faire des macros, etVBA n'en parlons pas. Mais je suis sur que quelqu'un peu me proposer une solution, et si possible m'expliquer comment utiliser la solution car j'ai essayer des progammes VBA trouver sur des forums correspondants avec a peu pres le meme probleme mais aucune solution ne correspond vraiment et n'ont a vrai dire pas bien fonctionner.  
 
Bref si une ame charitable voulez se donner la peine de m'aider, je gagnerai un temps precieux car j'ai d'autres feuilles a traiter de la meme maniere.  
 
Merci d'avance et promis des mon retour en France je m'achete le VBA pour les nuls :D

mood
Publicité
Posté le 17-07-2009 à 15:06:15  profilanswer
 

n°1906186
Deamon
Posté le 17-07-2009 à 15:19:18  profilanswer
 

Si tu veux pas mettre les mains dans le VBA ça va être compliqué... Va falloir que tu t'y mettes. Déjà enregistre tes actions en macro et regarde le code correspondant. Après tu fais une boucle pour parcourir ton fichier et c'est à peu près fini.

n°1906201
Marine4980
Posté le 17-07-2009 à 15:53:54  profilanswer
 

On m'a conseille de partir de la derniere ligne et de remonter sa serait plus simple puisque le numero de la ligne du dessus ne change pas apres avoir coller les lignes.
Donc j'ai enregistrer ce programme avec les macros mais le probleme et de faire que cette operation remonte jusqu'au debut du fichier
 
Sub Macro1()  
'  
' Macro1 Macro  
' Macro recorded 17/07/2009 by test  
'  
' Keyboard Shortcut: Ctrl+z  
'  
ActiveWindow.SmallScroll Down:=9  
Rows("1052:1052" ).Select  
Selection.Copy  
Selection.Insert Shift:=xlDown  
Rows("1052:1053" ).Select  
Application.CutCopyMode = False  
Selection.Copy  
Selection.Insert Shift:=xlDown  
Rows("1052:1055" ).Select  
Application.CutCopyMode = False  
Selection.Copy  
Selection.Insert Shift:=xlDown  
End Sub

n°1906202
Deamon
Posté le 17-07-2009 à 15:58:32  profilanswer
 

En passant CTRL+Z pour un raccourci macro c'est moyen vu que c'est la raccourci pour annuler.

 

Pourquoi t'as des n° de ligne en 1052 et quelques alors que tu as dit que ça va "de la ligne 2 a 787" ?

 

Edit:

 

Mais sinon teste un truc du genre :

Code :
  1. Dim i as Integer
  2. For i=[numéro de ta dernière ligne] To [numéro de ta 1ere ligne] Step -1
  3.  Rows(i & ":" & i).Select  
  4.  Selection.Copy  
  5.  Selection.Insert Shift:=xlDown  
  6.  Rows(i & ":" & (i+1)).Select  
  7.  Application.CutCopyMode = False  
  8.  Selection.Copy  
  9.  Selection.Insert Shift:=xlDown  
  10.  Rows(i & ":" & (i+3)).Select  
  11.  Application.CutCopyMode = False  
  12.  Selection.Copy  
  13.  Selection.Insert Shift:=xlDown  
  14. Next i


C'est moche mais bon si ça marche et que tu veux pas t'embêter...


Message édité par Deamon le 17-07-2009 à 16:03:49
n°1906204
Marine4980
Posté le 17-07-2009 à 16:00:58  profilanswer
 

ok pour le racourci ben en fait ma derniere ligne et 1052 maintenant car j'ai commencer a copier et inserer les lignes manuellement
car il faut a tout pris que j'avance sur se travail

n°1906205
Marine4980
Posté le 17-07-2009 à 16:02:22  profilanswer
 

Donc comme je dois reconnaitre que je suis dans l'incapicite de faire un simple programme ben je fais le robot c'est a dire que je suis moi meme le programme.

n°1906206
Marine4980
Posté le 17-07-2009 à 16:03:50  profilanswer
 

Mais dans tous les cas merci quand meme de t'interresser a mon probleme meme si je pense qu'en fait il me reste plus que la methode manuelle vu mon niveau.
Mais bon comme on dit qui ne tente rien n'a rien

n°1906207
Deamon
Posté le 17-07-2009 à 16:04:31  profilanswer
 

J'ai édité mon message précédent. ;)

n°1906208
Marine4980
Posté le 17-07-2009 à 16:05:47  profilanswer
 

oki je teste ton petit programme

n°1906212
Marine4980
Posté le 17-07-2009 à 16:14:20  profilanswer
 

Bon ok je m'incline c'est vraiment genial
faut vraiment que j'apprenne a faire ca.

mood
Publicité
Posté le 17-07-2009 à 16:14:20  profilanswer
 

n°1906215
Marine4980
Posté le 17-07-2009 à 16:16:47  profilanswer
 

Ca a super bien marche tu me sauve pas la vie mais tu m'economise pas mal d'heure de ma vie pour faire autre chose.
merci beaucoup.
Je bosse en biologie et on a de plus en plus besoin de l'informatique comme dans tous les domaines mais quand je vois se qu'on peut faire a connaissant la programation c'est super cool.
Merci a toi encore

n°1906217
Deamon
Posté le 17-07-2009 à 16:17:08  profilanswer
 

Ca prend effectivement du temps à apprendre ça mais quand tu vois le temps que tu gagnes après en utilisant les macros plutôt que de tout faire à la main tu te rends compte que ça vaut le coup. ;)

n°1906221
Marine4980
Posté le 17-07-2009 à 16:21:50  profilanswer
 

Oui ben comme je le disais plutot je crois que le livre de cette ete sera le VBA pour les nuls a moins que tu ne me conseille un meilleur bouquin sur le sujet

n°1906225
kiki29
Posté le 17-07-2009 à 17:01:01  profilanswer
 

Salut,


Option Explicit
 
Sub Tst()
Dim LastRow As Long, LastRowA As Long, LastRowB As Long, LastRowC As Long, i As Long, j As Integer
Const Pas As Long = 7
     
    LastRowA = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
    LastRowB = Feuil1.Range("B" & Rows.Count).End(xlUp).Row
    LastRowC = Feuil1.Range("C" & Rows.Count).End(xlUp).Row
     
    LastRow = Application.WorksheetFunction.Max(LastRowA, LastRowB, LastRowC)
    Application.ScreenUpdating = False
    For i = LastRow To 3 Step -1
        If Not IsEmpty(Feuil1.Range("A" & i - 1)) Then
            For j = 1 To Pas
                Feuil1.Range("A" & i).EntireRow.Insert
                Feuil1.Range("A" & i - 1 & ":C" & i - 1).Copy Feuil1.Range("A" & i)
            Next j
        End If
 
        With Application
            .CutCopyMode = False
            .StatusBar = i & " / " & LastRow
        End With
    Next i
 
    LastRowA = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
    LastRowB = Feuil1.Range("B" & Rows.Count).End(xlUp).Row
    LastRowC = Feuil1.Range("C" & Rows.Count).End(xlUp).Row
    LastRow = Application.WorksheetFunction.Max(LastRowA, LastRowB, LastRowC)
    If Not IsEmpty(Feuil1.Range("A" & LastRow)) Then
        Feuil1.Range("A" & LastRow & ":C" & LastRow).Copy Feuil1.Range("A" & LastRow + 1 & ":C" & LastRow + Pas)
    End If
 
    Application.ScreenUpdating = True
End Sub


dans la version Anglaise d'Excel Feuil1 devrait se nommer Sheet1

n°1906227
Deamon
Posté le 17-07-2009 à 17:04:36  profilanswer
 

Marine4980 a écrit :

Oui ben comme je le disais plutot je crois que le livre de cette ete sera le VBA pour les nuls a moins que tu ne me conseille un meilleur bouquin sur le sujet


Je ne sais pas pour les bouquins je n'ai pas appris avec des livres.

n°1906230
kiki29
Posté le 17-07-2009 à 17:10:57  profilanswer
 

Re, Excel pour les nuls est un bon départ pour la suite voir en premier lieu http://www.bmsltd.co.uk/ExcelProgRef/Default.htm ou http://www.bmsltd.co.uk/Excel2007ProgRef/Default.htm puis http://www.bmsltd.co.uk/ProExcelDev/Default.htm


Message édité par kiki29 le 17-07-2009 à 17:20:08

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  gros fichier excel copier et inserer des lignes

 

Sujets relatifs
Aide sur traitement du fichierrécupération d'un fichier txt en tableau php
Importer fichier csv dans une tablerecuperation d'une session a partir d'un fichier pcap
Batch : Numéroté fichier d'un répertoireUn script de 30000 lignes peut-il avoir un impact sur les performances
Probème : "workbook saveas" error excel version -- Object COM ?[VBA Excel 2007] erreur Nombre d'arguments incorrects [RESOLU]
ShellExecute pour imprimer un fichier[Excel] renommer bouton de commande + l'affecter à ttes les feuilles
Plus de sujets relatifs à : gros fichier excel copier et inserer des lignes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR