Macro copie d'une feuille à une autre lors d'un changement

Bonjour à tous,

Mon problème semble assez simple encore une fois. J'ai une première feuille, un Plan Comptable, avec des numéros de comptes, intitulés, catégories. Je souhaite que lorsqu'il y a modification sur cette feuille, l'ajout ou la suppression d'un compte par exemple, l'ensemble de la liste des intitulés soit recopiée sur une autre feuille où elle sera triée par ordre alphabétique.

La macro fonctionne très bien lorsqu'on la lance avec un bouton, mais comme je souhaiterais le lancer à la modification de la feuille (Worksheet_Change), cette même macro ne fonctionne pas (erreur sur la ligne de sélection de la cellule de la deuxième feuille).

J'ai vu sur un autre forum que "Tu ne peux pas Selecter une plage dans une autre feuille que la feuille active.". Je pense que le problème vient de là, mais ne sais pas comment le résoudre.

Merci d'avance pour votre aide !

Bonjour Isindael,

voici ta macro! A adapter à ta situation réelle!

Tu peux effacer ton bouton! 8)

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim wks1, wks2 As Worksheet
'
Set wks1 = Worksheets("PC")
Set wks2 = Worksheets("PC trié")
'
iRow1 = wks1.Range("A" & Rows.Count).End(xlUp).Row
'
With wks2
    .Range("A:A").ClearContents
    .Range("A2:A" & iRow1).Value = wks1.Range("B2:B" & iRow1).Value
    iRow2 = .Range("A" & Rows.Count).End(xlUp).Row
    '
    .Range("A2:A" & iRow2).Sort key1:=.Range("A2"), order1:=xlAscending, Orientation:=xlSortColumns
End With
'
End Sub

Bon travail!

A+

Bonjour,

Bonjour curulis57,

Un autre exemple à adapter à tes besoins.

Le bouton n'est plus utile.

Cdlt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet, n As Long
    If Target.Column < 4 Then
        Set ws = Worksheets("PC trié")
        n = Me.Cells(Rows.Count, 1).End(xlUp).Row
        With ws
            .Cells(1).CurrentRegion.Offset(1).ClearContents
            With .Cells(2, 1)
                .Resize(n).Value = Me.Cells(2, 2).Resize(n).Value
                .Sort key1:=.Cells(1), order1:=xlAscending, Header:=xlYes
            End With
        End With
    End If
End Sub

Merci beaucoup pour vos réponses, ça marche nickel.

Je ne connaissais pas la propriété Resize. Donc dans ton expression :

ws.Cells(2, 1).Resize(n).Value 

avec n le nombre de lignes du premier tableau (disons 10 ici), tu "transformes" la cellule A2 en la plage A2:A11 (plage de n=10 cellules) ? Pas bête !

Et sinon, pour mes futures macro, ce n'est donc vraiment pas possible de sélectionner une autre feuille lors d'une macro lancée lors des modifications d'une première feuille (Worksheet_change)?

Merci pour les compléments de réponse

Rechercher des sujets similaires à "macro copie feuille lors changement"