Insertion de cellules VBA

Une autre façon que je voudrais tester est de dire que si G niveau i est supérieur à E niveau i, alors j'insère des cellules vides de G à K au niveau i+1.

Comment ecrire cela ?

Merci d'avance

Une autre façon que je voudrais tester est de dire que si G niveau i est supérieur à E niveau i, alors j'insère des cellules vides de G à K au niveau i+1.

Comment ecrire cela ?

Merci d'avance

Ca ne marche pas non plus !

Bon la seule solution que je vois est de vraiment traiter mon tableau du haut vers le bas et non pas l'inverse... Et de recalculer entre chaque -1 trouvé, la colonne H et la colonne K

Salut Marjow54,

Recalculer ? Car, en fait, oui, en insérant une ligne, je remarque que les formules ne suivent pas, forcément...

Dans cet exemple, j'ai "un peu" forcé sur les -1...

Je recrée donc les formules, ligne par ligne.

110.000 lignes : ça risque de durer un peu...

Toujours un double-clic pour démarrer la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim iRow
'
iRow = 2
Cancel = True
Application.ScreenUpdating = False
'
Do While iRow <= Range("K" & Rows.Count).End(xlUp).Row
    Cells(iRow, 8).FormulaLocal = "=C" & iRow & "-C" & iRow + 1
    Cells(iRow, 11).FormulaLocal = "=SI(H" & iRow & "<=-500;-1;0)"
    If Cells(iRow, 11) = -1 Then Range("E" & iRow + 1 & ":K" & iRow + 1).Insert shift:=xlDown
    iRow = iRow + 1
Loop
'
Application.ScreenUpdating = True
'
End Sub

A+

13insertmarjow54.xlsm (52.42 Ko)

Salut Marjow54,

plutôt ainsi, me semble-t-il...

Toujours un double-clic sur la feuille pour démarrer la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim iRow
'
iRow = 2
Cancel = True
Application.ScreenUpdating = False
'
Do While iRow <= Range("K" & Rows.Count).End(xlUp).Row
    If Cells(iRow, 10) <> "" Then
        Cells(iRow, 8).FormulaLocal = "=C" & iRow & "-C" & iRow + 1
        Cells(iRow, 11).FormulaLocal = "=SI(H" & iRow & "<=-500;-1;0)"
        If Cells(iRow, 11) = -1 Then Range("E" & iRow + 1 & ":K" & iRow + 1).Insert shift:=xlDown
    End If
    iRow = iRow + 1
Loop
'
Application.ScreenUpdating = True
'
End Sub

A tester, comme on dit...

A+

10insertmarjow54.xlsm (61.84 Ko)

Bonjour à tous,

@ curulis57 & dhany,

bravo! à vous deux

1 pour chacun de vos messages sur ce fil pour votre grande patience et votre ténacité

Bonjour à tous,

Désolée pour mon temps de réponse, mais j'ai une très bonne nouvelle ... CA MARCHE !!

Un énorme merci à vous d'avoir mis tant de cervelle pour résoudre mon problème ! Vous êtes les meilleurs !

Marjow54

Bonjour Marjorie, le forum,

oui, c'est effectivement une très bonne nouvelle !

merci pour ton retour, et pour avoir passé le sujet en résolu !

bonne continuation !

dhany

Rechercher des sujets similaires à "insertion vba"