Probleme de valeur VBA

Bonjour à tous,

Je suis novice dans excel et le VBA.
Je rencontre actuellement un problème voici mon code VBA :

Option Explicit

Private Sub Worksheet_Activate(ByVal Target As Range)
    If Target.Column <> 12 Or Target.Row <> 5 Then Exit Sub

    Select Case UCase(Target.Value)
        Case Is = "VIREMENT": Cells(40, 4) = Sheets("Infos").Cells(23, 2)
        Case Is = "VIREMENT": Cells(41, 4) = Sheets("Infos").Cells(24, 2)
        Case Is = "PAYPAL": Cells(40, 4) = Sheets("Infos").Cells(26, 2)
        Case Else: Cells(40, 3) = "": Cells(41, 3) = ""
    End Select
End Sub

Voici l'erreur que j'ai en retour quan je viens sur la feuille où il y a le VBA :

Erreur de compilation:

La déclaration de la procédure ne correspond pas à la description de l'événement ou de la procédure de même nom

Je souhaite que suivant la cellule L5 (résultat récupérer sur une autre feuille, voici les valeurs que la cellule L5 peut prendre : VIREMENT ou PAYPAL, ou espèce ou CB ou Liquide), en fonction de la valeur L5, la je vise VIREMENT ou PAYPAL, les cellules cellule D40 et D41, prennent les valeurs de la feuille Easycode des cellules correspondante la en B23 et B24 ainsi qu'en B26 pour PAYPAL.

Je sais pas si je suis claire dans mon explication ?

Merci par avance pour votre aide.

@+ Filou

3tp.xlsm (68.01 Ko)

Bonjour,

Private Sub Worksheet_Activate()

est la procédure évènementielle qui se déclenche quand on active la feuille, alors que

Private Sub Worksheet_Change(ByVal Target As Range)

est la procédure évènementielle qui s'exécute lors d'une changement opéré manuellement sur une cible (target) de la feuille.

A vous de choisir ! Mais sans trop m'attarder sur le code, c'est l'évènement change que vous voulez.

Cdlt,

Effectivement, en passant de activate() à Change je n'ai plus le problème quand j'arrive sur la page.
Mais mon problème persiste, c'est à dire que dans la cellule L5 je récupère l'information via une formule rechercheH, par rapport à cela mon code VBA ne fonctionne pas.
Par compte si je le tape directement dans la cellule L5 cela fonctionne.

Merci pour votre aide.

@+ Filou

En effet, Change est prévu pour des changements "manuels". Pour gérer le changement des calculs, ce sera l'évènement calculate :

private sub worksheet_calculate()
Select Case UCase(range("L5").Value)
    Case "VIREMENT"
        Cells(40, 4) = Sheets("Infos").Cells(23, 2)
        Cells(41, 4) = Sheets("Infos").Cells(24, 2)
    Case "PAYPAL": Cells(40, 4) = Sheets("Infos").Cells(26, 2)
    Case Else
        Cells(40, 3) = ""
        Cells(41, 3) = ""
End Select
end sub

Attention, la macro s'exécute à chaque calcul sur la feuille (et rend l'annulation impossible).

S'il faut uniquement qu'elle soit exécutée lorsque le résultat change, il faudra prévoir quelques ajustements.

Cdlt,

Merci pour votre aide, cela fonctionne.

@+ Filou
Rechercher des sujets similaires à "probleme valeur vba"