inserer 1 ligne dans un tableau en conservant le formats de la ligne précédente

L

lpp37

Guest
bonjour tous,

je me permets de vous posez cette question, à priori basique, mais les solutions proposées ds les différents fils que j'ai consultés ne marchent pas...

mon soucis du jour:

j'ai une première feuille avec des données tjrs classées pareillement, et un bouton.
j'ai également une seconde feuille avec un tableau avec des formats conditionnels et des formules dans certaines cases.
quand j'appuie sur le bouton de la première feuille, les données s'y trouvant sont ajoutées à la dernière ligne du tableau de la seconde feuille.
jusqu'ici, rien de compliqué...

le hic, c'est que je suis obligé de pré-remplir les lignes avec les formats conditionnels et les formules, il n'y a que les valeurs qui sont envoyées d'une feuille à l'autre. du coup, ça alourdi pas mal mon fichier.

ce que je voudrais c'est que qd j'appuie sur le bouton, après la recherche de la dernière ligne vide du tableau, j'insère une ligne ayant les mêmes propriétés que la précédente.

et là patatra, ça marche pas!
j'ai beau essayer les "range(i,j).insert shift:=xldown", "entirerow.insert", etc... ça marche pas! ça me renvoit tjrs le même mesage d'erreur: "insert method of range class failed"

alors si vous aviez une idée, chuis preneur... merci!
 
M

m.lecxe

Guest
Bonjour
J'ai une petite macro qui recopie les formule, le format conditionnel sur une ligne en dessous de la selection, tu peux peut être l'adapter à ton classeur.

Sub NouvelleLigneEnDessous()
Dim i As Integer
Dim j As Integer
Dim NumLig As Integer
Dim DerCol As Integer
Dim tbl As Range
Dim Z As Range
Dim plage As Range
Application.ScreenUpdating = False
Set tbl = [A1].CurrentRegion
Set plage = Application.Union(Range(Selection.Address), Range(tbl.Offset(3, 0).Resize(tbl.Rows.Count - 5, tbl.Columns.Count).Address))
If plage.Address <> tbl.Offset(3, 0).Resize(tbl.Rows.Count - 5, tbl.Columns.Count).Address Then MsgBox "Placez-vous dans la zone " & tbl.Offset(3, 0).Resize(tbl.Rows.Count - 5, tbl.Columns.Count).Address: Exit Sub
For j = 1 To Selection.Rows.Count
ActiveCell.Range("A2").EntireRow.Insert
NumLig = ActiveCell.Row
DerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(NumLig, 1), Cells(NumLig, DerCol)).Copy Range(Cells(NumLig + 1, 1), Cells(NumLig + 1, DerCol))
For i = 1 To DerCol
If Not Cells(NumLig + 1, i).HasFormula Then
Cells(NumLig + 1, i).ClearContents
End If
Next i
Next j
ActiveCell.Range("A2").Select
Application.ScreenUpdating = True
End Sub











@+
 
L

lpp37

Guest
Re: inserer 1 ligne dans un tableau en conservant le formats de la ligne précéde

apparemment, et je dis bien "apparemment", le pb viendrais du fait que tout se passe depuis la feuille n°1... on peut pas selectionner des lignes ou coller des lignes à distance? c'est louche...
 
L

lpp37

Guest
Re: inserer 1 ligne dans un tableau en conservant le formats de la ligne précéde

nan, j'obtiens tjrs le même problème... "insert method of range class failed"; ça veut pas mouliner à distance de la feuille 1 sur la feuille 2...
:'-(
 
L

lpp37

Guest
Re: inserer 1 ligne dans un tableau en conservant le formats de la ligne précéde

voici un ptit fichier joint pour que vous compreniez bien la différence entre 2 cas pourant presque identiques... histoire d'alimenter votre reflexion...
 
M

m.lecxe

Guest
en faisant
Private Sub CommandButton1_Click()
'on effectue l'opération dans la 1ère feuille
Un
End Sub

Private Sub CommandButton2_Click()
'on effectue l'opération dans la 2de feuille
Deux
End Sub
------- Dans un module
Sub Un()
Rows(5).Copy Rows(6)
End Sub
Sub Deux()
Rows(5).Copy Sheets("Sheet2").Rows(6)
End Sub
ça fonctionne mais je travaille sur Mac
@+
 

Discussions similaires

Réponses
2
Affichages
608

Statistiques des forums

Discussions
312 231
Messages
2 086 433
Membres
103 207
dernier inscrit
Michel67