Décaler ligne dans macro automatiquement

Poutsy -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Voici mon problème :

Lorsque j'insere une ligne dans un fichier excel les lignes de ma macro ne se décalent pas automatiquement.

Exemple:

Sub Macro1()

If Cells(2, 3).Value = "XXX" Then
Cells(2, 6) = Cells(10, 6) + Cells(33, 6)

End If

End Sub

Pour cette macro, si j'insere une ligne entre la ligne 8 et 9, dans ma macro, je voudrais que Cells(10,6) devienne Cells(11,6).
Dans mes souvenirs ca se faisait automatiquement mais avec mon fichier non.

Quelqu'un saurais m'expliquer ?

Merci

Poutsy

Windows XP
Excel 2002
A voir également:

1 réponse

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour

Pour réaliser le décalage, il faut mémoriser le numéro de la ligne dans un coin ( cellule M1 dans l'exemple)

la macro ci dessous est à installer dans le module feuille concerné. elle se déclenche lorsqu'une ligne entière (clic sur l'étiquette de ligne) est sélectionnée de la ligne 3 à la ligne au dessus de la cellule à implémenter.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lig As Long

With Target
    lig = Range("M1")
    If .Rows.Count > 1 Or .Columns.Count < 256 Or .Row >= lig Or .Row < 3 Then:  Exit Sub
Rows(.Row).Insert
End With

If Cells(2, 3).Value = "XXX" Then
    Cells(2, 6) = Cells(lig + 1, 6) + Cells(33, 6) ' Implémentation non demandée  pour cells(33...????
    Range("M1") = lig + 1
End If

End Sub

0