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
Configuration: Windows XP Internet Explorer 7.0

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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