Sélection de cellules dans une macro qui se lance automatiquement

Bonjour à tous,

Je cherche à actualiser automatiquement une feuille ETAT DES STOCKS dès qu'une nouvelle entrée dans la feuille JOURNAL DES STOCKS est réalisée.

Ma macro d'actualisation fonctionne très bien manuellement mais lorsque j'essaye de faire en sorte qu'elle se lance automatiquement j'ai l'erreur "1004 - La méthode sélect de la classe Range a échoué." qui apparait pour tous les Select de ma macro. Même problème avec cette macro très simple pour faire un test que je vous copie ci-dessous.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Sh.Name = "JOURNAL STOCKS" Then
If Not Intersect(Target, Sh.Range("A4:E2000")) Is Nothing Then

Sheets("ETAT DES STOCKS").Range("A1").Select
ActiveCell.FormulaR1C1 = "1"
Sheets("ETAT DES STOCKS").Range("A1").Select
Selection.Copy
Range("A1").Select
Selection.Copy
Range("B1").Select
ActiveSheet.Paste

End If
End If

End Sub

Je vous confirme que cette macro est bien dans "ThisWorkbook". J'ai même essayé avec Application.EnableEvents = False/True au cas où mais cela ne change rien. J'ai essayé en appelant la macro ou en la copiant directement, sans succès également. Alors que si je mets un bouton pour actualiser par exemple, la macro fonctionne très bien.

Savez-vous d'où pourrait venir le problème ?

D'avance merci de vos retours.

bonjour Mountrove et bienvenu,

je ne vois pas des choses spéciales

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

     With Sh                                 'la feuille modifiée
          If StrComp(.Name, "JOURNAL STOCKS", 1) = 0 Then     'nom correct, ignorer majuscules/miniscules
               If Not Intersect(Target, .Range("A4:E2000")) Is Nothing Then     'modification dans cette plage
                    With .Range("A1")        'A1:B1 sont hors cette plage, donc enableevents n'est pas nécessaire
                         .Value = 1
                         .Copy .Offset(, 1)
                    End With
               End If
          End If
     End With

End Sub

Bonjour Bart,

Merci beaucoup d'avoir pris le temps de me répondre. Ici il est en effet possible de contourner le select. Je joins ci-dessous mon code plus complet.

J'ai en fait un tableau croisé dynamique issu de la feuille "JOURNAL STOCKS" que j'utilise pour compléter et mettre en format ma feuille "ETAT DES STOCKS". Dans l'exemple ci-dessous, je vérifie si le produit est bien une bouteille de rouge et si oui je veux le copier au bon endroit dans la feuille ETAT DES STOCKS. Mais pour je ne sais quelle raison, VBA ne me laisse pas faire la sélection. Alors que lorsque j'utilise cette macro avec un bouton ça fonctionne et comme tu le dis je fais référence à une autre feuille pour faire les changements automatiques.

PS: Autodidacte et débutant sur VBA, mon code n'est probablement pas très clean :)

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    If Sh.Name = "JOURNAL STOCKS" Then
    If Not Intersect(Target, Sh.Range("A4:E2000")) Is Nothing Then

Dim i As Integer
Dim NombreLignesTCD As Integer

PremiereLigne = 4
NombreLignesTCD = WorksheetFunction.CountA(Worksheets("TCD").Range("A:A")) - 2

For i = PremiereLigne To NombreLignesTCD + 3

    If Application.WorksheetFunction.VLookup(Worksheets("TCD").Cells(i, 1), Worksheets("LISTE PRODUITS").Range("A1:B1000"), 2, False) = "Rouge" Then
    Sheets("ETAT DES STOCKS").Range("A2").End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell = Sheets("TCD").Cells(i, 1)
    ActiveCell.Offset(0, 1).Select
    ActiveCell = Sheets("TCD").Cells(i, 2)
    ActiveCell.Offset(0, 1).Select
    ActiveCell = Sheets("TCD").Cells(i, 2) * Sheets("TCD").Cells(i, 3)
    End If

Next

End If
End If
End Sub

re,

donc vous changez quelque chose dans un TCD ou dans une feuille qui contient un TCD ?

Bon si cela fonctionne aucun problème, sinon, pouvez-vous télécharger votre fichier anonymisé pour voir si on peut l'améliorer ?

Merci Bart. J'ai en effet pu me débrouiller autrement.

Rechercher des sujets similaires à "selection macro qui lance automatiquement"