inserer nbr ligne excel egale nbr de ligne au dessus

KATI180

XLDnaute Nouveau
bonsoir,

j'aurai besoin de votre aide.
pr les besoins du boulot je traite des fichiers de 10000 lignes; et il faudra q'à chaque changement de date il y'a des lignes qui s'insere selon le nbr de lignes rempli audessus.(juste les lignes entre les 2 lgnes vides).
vous me ferez economiser des heures de boulot.merci pour votre aide
ex :

K4356 04/2005
J8765 04/2005 la il faudera inserer 2 ligne
L9876 01/2006 la il faudera inserer 1 ligne
K4986 04/2007
J8786 04/2007
L9436 01/2007 la il faudera inserer 3 ligne
............
 

mememe

XLDnaute Nouveau
Re : inserer nbr ligne excel egale nbr de ligne au dessus

Bonsoir,

Quelque chose dans ce goût là?

Désolé, je suis fatigué. A mon avis il y a moyen de faire plus simple...

Code:
Sub insert_row()
Dim i, j, k As Integer
i = 1
k = 0
While Sheets(1).Cells(i, 1) <> ""
    k = k + 1
    If Sheets(1).Cells(i, 2) <> Sheets(1).Cells(i + 1, 2) Then
        If (k > 1) And (i > 2) Then k = k + 1
        j = 0
        While j < k
          Sheets(1).Cells(i + 1, 2).EntireRow.Insert Shift:=xlDown
          j = j + 1
          i = i + 1
        Wend
        k = 0
    End If
    i = i + 1
Wend
End Sub
 

julberto

XLDnaute Occasionnel
Re : inserer nbr ligne excel egale nbr de ligne au dessus

Bonjour KATI180, bonjour mememe,

Une autre proposition du même tonneau....
Tu ne semblais ne tenir compte que de l'année, c'est ce que j'ai fait.
VB:
  Option Explicit
Sub AnyMoreBlankLines()
Dim cel As Range, blanc%, aOld%, aNew%, i&, NbLigne%
Dim F2 As Worksheet

Application.ScreenUpdating = False
Set F2 = Sheets(2)
blanc = Year(0)

With F2   ' La colonne "DATE" commence ligne 1
  aOld = Year(.Range("B1"))
  For Each cel In .Range("B2:" & .Range("B65000").End(xlUp).Address)
    aNew = Year(cel)    ' le décalage ne jouera que sur l'année
    Select Case aNew
      Case blanc    ' cellule vide
    
      Case aOld
        NbLigne = NbLigne + 1
      
      Case Else       ' insérer "NbLigne" lignes et au moins 1 ligne
        If NbLigne = 0 Then NbLigne = 1
        For i = 1 To NbLigne: cel.EntireRow.Insert Shift:=xlDown: Next i    '
        aOld = aNew
        NbLigne = 0
    End Select
  Next cel
End With
Application.ScreenUpdating = True

End Sub
Cordialement
 

Pièces jointes

  • Kati.xls
    36 KB · Affichages: 71

KATI180

XLDnaute Nouveau
Re : inserer nbr ligne excel egale nbr de ligne au dessus

bonsoir,

merci mememe le code fonctionne comme je souhaitai,t'es un genie.
merci à toi aussi julberto sauf que je dois prendre en compte et le mois et l'annee mais sinon c nikel(je pourrai tjr ajouter le mois tu va me dire).
je veux pas abuser mais est ce qu'il y'aurai moyen mnt de copier ;les lignes audessus dans les lignes inseré vide.
je vous explique ,mon fichier c pr de la compta.donc a chaque ligne d'ecriture il y'a une autre ligne qui reprend les meme info sauf les comptes qui change et le sens debit ou credit.
j'espere que vous voyez un peu de quoi je parle.
re merciiiiiiiii
 

julberto

XLDnaute Occasionnel
Re : inserer nbr ligne excel egale nbr de ligne au dessus

Bonjour KATI, le fil,

je dois prendre en compte et le mois et l'annee
Voir le fichier joint à toutes fins utiles.
est ce qu'il y'aurai moyen mnt de copier ;les lignes audessus dans les lignes inseré vide.
Ceci peut être fait manuellement très vite et sans souci.
Il te suffit de copier/coller toute ta feuille au bas des données actuelles puis de les trier sur la colonne date par exemple. Tu te retrouveras ainsi dans les conditions que tu souhaites.

Je pars en vacances très bientôt.
cordialement
 

Pièces jointes

  • Copie de Kati-1.xls
    43 KB · Affichages: 66

KATI180

XLDnaute Nouveau
Re : inserer nbr ligne excel egale nbr de ligne au dessus

bonsoir julberto ,
merci pour le code il marche nickel.
mais si j'avais demandé à copier les lignes c'est qu'il faudra pour chaque ligne avoir sa contrepartie avec les meme infos apart le sens (debit ou credit) avec le numero de compte.j'ai essayeé en fesant une formule mais le probleme je en sais pas comment faire pour que le systeme reconait la deuxieme ligne pour remettre la contre partie.j'ai joint un fichier pour que vous puissiez voir de ce que je parle.
merci infiniment.
 

Pièces jointes

  • TEST.xlsx
    11.5 KB · Affichages: 69
  • TEST.xlsx
    11.5 KB · Affichages: 75
  • TEST.xlsx
    11.5 KB · Affichages: 71
Dernière édition:

julberto

XLDnaute Occasionnel
Re : inserer nbr ligne excel egale nbr de ligne au dessus

Bonjour KATI, bonjour à tous,

Je me suis borné à rendre automatique ma suggestion de ce matin.
VB:
Option Explicit

Sub Pre_Processing()
Dim tbl, nbCol&, nbLig&, F3 As Worksheet

Application.ScreenUpdating = False
Set F3 = Worksheets("Feuil3")
With F3

   ' sélection de la zone renseignée
  Set tbl = .Range("A1").CurrentRegion
  
   ' ajout d'une colonne de "1" caractérisant les données originales
  tbl.Offset(1, tbl.Columns.Count).Resize(tbl.Rows.Count - 1, 1) = 1
  
   'reproduit ce même tableau à la suite des données originales
  tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Copy _
                Destination:=.Range("A1").End(xlDown).Offset(1, 0)
                
   'réordonne les données originales et dupliquées
   '   l'absence ou la présence du "1" en dernière colonne distingue
   '           de façon permanente les données originales de leur copie
  Set tbl = .Range("A1").CurrentRegion
  nbCol = tbl.Columns.Count
  nbLig = tbl.Rows.Count
   ' tri selon la date puis selon
  tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1).Sort key1:=.Range("E2:E" & nbLig), order1:=xlAscending, _
              key2:=.Range(Cells(2, nbCol), Cells(nbLig, nbCol)), order2:=xlDescending, Header:=xlNo

End With
Application.ScreenUpdating = True

End Sub
Les vacances c'est pour demain !
Cordialement
 

Pièces jointes

  • TEST-1.xlsm
    18 KB · Affichages: 70
  • TEST-1.xlsm
    18 KB · Affichages: 70
  • TEST-1.xlsm
    18 KB · Affichages: 73

KATI180

XLDnaute Nouveau
Re : inserer nbr ligne excel egale nbr de ligne au dessus

bonjour julberto,
le code comme d'hab marche à merveille je suis super contente.tu ne peux pas savoir comment cava me faire avancer dans le boulot chaque jour.
il reste juste 1 ou 2 truc de plus et le fichier sera fini.la je je te laisse profiter de tes vacances trankilou.(alors que d'autres passeront des exam,lol)
j'attendrai ton retour.
remerci et bonne vacancesssssssssss
ciao
 

Discussions similaires

Statistiques des forums

Discussions
312 715
Messages
2 091 285
Membres
104 836
dernier inscrit
baxx86