Probleme recopie de formules lors de l'insertion de ligne par macro

excellentt

XLDnaute Nouveau
Bonjour,

j'ai une macro qui insert une ligne avec la commande

Sheets("portefeuille- compte").Range("A9").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("portefeuille- compte").Rows("9:9").Insert Shift:=xlDown

Le probleme est que sur les cellules adjacentes, j'ai des calculs a faire et donc des formules sont appliquées a ces formules.

En theorie, si la ligne au dessus de l'insertion contient les formules, elles sont recopiées dans la ligne insérée.

Cela fonctionne uniquement pour la premiere ligne insérée, mais pas pour les suivantes.

Question: il y a t'il un moyen de garder les propriétés des cellules lors de l'insertion avec une macro ? En d'autres termes quel code ajouter a la macro pour que tout se passe bien.

par avance merci
 

Brigitte

XLDnaute Barbatruc
Re : Probleme recopie de formules lors de l'insertion de ligne par macro

Re,

Je me permets une incursion de nouveau sur ton fil.

Une idée, à défaut de mieux : construire une ligne modèle avec formules, formats..., la cacher. Et avant de rajouter des lignes, rajouter des lignes selon modèle puis y copier tes données... Ca vaut ce que ca vaut.

J'utilise cette méthode (rajout de lignes suivant modèle) dans mon appli archives, et ca marche du feu de Dieu.

Code initial d'hervé avec un bouton :

Code:
Public Sub RajoutLignes()
Dim nbligne As Long
Dim t As String
Dim derligne As Integer
ActiveSheet.Unprotect
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
nbligne = Application.InputBox("Nombre de lignes à insérer (maximum 50)", "Insertion ligne", 50, , , , , 1)
Select Case nbligne
    Case Is > 50: t = "Maximum 50, SVP"
    Case 0: Exit Sub
    Case Is < 1: t = "Supérieur à 0, SVP"
End Select
If t <> "" Then
    t = t & vbNewLine & vbNewLine & "Procédure arrêtée."
    MsgBox t, , "Attention..."
    Exit Sub
End If
derligne = Range("a2").End(xlDown).Row + 1
If derligne = 2 Then derligne = 3
Rows(derligne & ":" & derligne + nbligne - 1).Insert
Range("[COLOR=red]modele[/COLOR]").Copy Destination:=Range("a" & derligne & ":a" & derligne + nbligne - 1)
Range("g" & derligne & ":g" & derligne + nbligne - 1).ClearContents
 
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Code de Robert avec double clic là où on veut rajouter des lignes :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 2 Then Exit Sub
Dim nbligne As Long
Dim t As String
Dim derligne As Integer
 
Application.ScreenUpdating = False
nbligne = Application.InputBox("Nombre de lignes à insérer (maximum 20)", "Insertion ligne", 20, , , , , 1)
 
Select Case nbligne
    Case Is > 20: t = "Maximum 20, SVP"
    Case 0: Exit Sub
    Case Is < 1: t = "Supérieur à 0, SVP"
End Select
If t <> "" Then
    t = t & vbNewLine & vbNewLine & "Procédure arrêtée."
    MsgBox t, , "Attention..."
    Exit Sub
End If
derligne = Target.Row + 1
If derligne = 4 Then derligne = 5
Rows(derligne & ":" & derligne + nbligne - 1).Insert
Range("[COLOR=red]modele[/COLOR]").Copy Destination:=Range("a" & derligne & ":a" & derligne + nbligne - 1)
Range("f" & derligne & ":f" & derligne + nbligne - 1).ClearContents
 
Application.ScreenUpdating = True
End Sub
Ca pourrait peut être marcher ?

A adapter bien sûr car ca dépend du nombre de lignes de titres, des colonnes...
 

JNP

XLDnaute Barbatruc
Re : Probleme recopie de formules lors de l'insertion de ligne par macro

Re :),
Ah, les couettes bouillantes et bouillonnantes :D... Bisous :p
En theorie, si la ligne au dessus de l'insertion contient les formules, elles sont recopiées dans la ligne insérée.
Théorie qui me parait bien hasardeuse. Seul les formats sont copiés, et si la ligne fait partie d'une plage nommée, la plage est agrandie, mais c'est tout. le plus simple est de faire une copie vers le bas
Code:
Rows("8:8").Select
Selection.AutoFill Destination:=Rows("8:9"), Type:=xlFillDefault
qui te copiera les formules en même temps.
Bon dimanche :cool:
 

lermite

XLDnaute Nouveau
Re : Probleme recopie de formules lors de l'insertion de ligne par macro

Bonjour tous,
Je confirme le doute de JNP,
Une autre façons de recopier la ligne...

With Sheets("portefeuille- compte")
.Rows(8).Copy .Rows(9)
End With
A+
 

excellentt

XLDnaute Nouveau
Re : Probleme recopie de formules lors de l'insertion de ligne par macro

Hello,

on prends les memes et on recommence

je sais pas ou l'inserer!!

If Not (Intersection Is Nothing) Then
i = 9
With Sheets(target.Worksheet.Name)
For i = 9 To 55 Step 1

If .Cells(i, 8).Value = "ACHAT" Then
If IsNumeric(.Cells(i, 7)) Then
If .Cells(i, 7).Value < .Cells(4, 2).Value Then
.Range(.Cells(i, 1), .Cells(i, 7)).Copy

'Cells(9, 8).Formula = "=REMPLACER(SI(ESTNA(RECHERCHEV(TEXTE(B8,1);Cours_SRD!$A$1:$C$922,3,FAUX)),""TBD"",(RECHERCHEV(TEXTE(B8,1),Cours_SRD!$A$1:$C$922,3,FAUX))),6,5,"")"
'Cells(9, 9).Formula = "=H9*C9"
'Cells(9, 10).Formula = "=I9-G9"
'Cells(9, 11).Formula = "=J9/I9"

Sheets("portefeuille- compte").Range("A9").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("portefeuille- compte").Rows("9:9").Insert Shift:=xlDown
Rows("8:8").Select
Selection.AutoFill Destination:=Rows("8:9"), Type:=xlFillDefault
Else
End If
Else
End If
Else
End If
Next i
End With






en ligne 8 j'ai les formules

j'insert en ligne 9 les cellules de 1 a 7 d'une autre onglet. j'aimerais que les formules contenues en ligne 8 , colonne 8,9,10,11 soient recopiées.

et j'ai du mal...
 

excellentt

XLDnaute Nouveau
Re : Probleme recopie de formules lors de l'insertion de ligne par macro

Merci l'hermite ca marche !!

et merci aussi aux autres ..
 

Discussions similaires


Haut Bas