[RESOLU][VBA] Worksheet_Change, comment limiter ?

Adrien

XLDnaute Junior
Bonjour, bonsoir

Voilà, je reviens à nouveau vers vous suite à un problème dans mon VBA

Comme les deux ou trois dernières fois je me suis fait huer pour ma clarté peu présente (honte sur moi, houuuu !), je vais tenter d'être le plus clair possible.

J'ai une feuille générée automatiquement. Cette feuille contient des notes. On peut y ajouter à la main des notes dans une cellule spécialement prévue à cet effet.

Comme la feuille est générée automatiquement selon 4 périodes, j'ai besoin d'enregistrer ces commentaires afin de pouvoir les ressortir si on doit générer à nouveau une période précédente.

Exemple :

Période 1: Période 2:
Abra Cadabra

Et si je régénère la période 1, qu'il me remette "Abra"

Pour cela, j'ai utilisé l'évènement Worksheet_Change(ByVal Target As Range) afin d'éviter de devoir appuyer sur un bouton.

J'ai donc fait ça :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = ActiveSheet.Range("B42") Then
ActiveSheet.Range("B42").Copy
    If Sheets("Accueil").OptionButton1.Value = True Then
        Sheets("DATA").Select
        ActiveSheet.Range("B45").Select
        Selection.PasteSpecial Paste:=xlPasteValues
        Else
            If Sheets("Accueil").OptionButton2.Value = True Then
                Sheets("DATA").Select
                ActiveSheet.Range("C45").Select
                Selection.PasteSpecial Paste:=xlPasteValues
                Else
                    If Sheets("Accueil").OptionButton3.Value = True Then
                    Sheets("DATA").Select
                    ActiveSheet.Range("D45").Select
                    Selection.PasteSpecial Paste:=xlPasteValues
                    Else
                        If Sheets("Accueil").OptionButton4.Value = True Then
                        Sheets("DATA").Select
                        ActiveSheet.Range("E45").Select
                        Selection.PasteSpecial Paste:=xlPasteValues
                        Else
                        MsgBox ("Veuillez sélectionner une période à partir de l'accueil.")
                        End If
                    End If
                End If
            End If
Else

End If

End Sub


Voilà, ici, on teste donc si c'est la cellule importante qui a été changée, si non : rien ne se passe, si oui, elle est enregistrée dans la cellule de la période correspondante.

Cependant, j'ai deux problèmes :

- Lorsque je supprime des données dans une cellule tierce, il exécute quand même le code ...

- Lorsque je supprime des données dans la cellule ciblée, j'ai "Erreur d’exécution 13 : Incompatibilité de types"

Mais sinon, en ajout de valeurs, le code fonctionne parfaitement comme je le voulais.

Merci à vous d'avance,

Adrien
 
Dernière édition:

Discussions similaires