[VBA] Macro lancée quand A3 change de valeur

ZaNet -  
 Anne -
Bonjour,

J'ai un problème avec le lancement d'une macro Excel.

Je declenche une macro lorsque la valeur d'une cellule change. Ici il s'agit de la cellule A3

Ca ressembleà ca :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$3" Then
Cells(2, 1) = "la cellule A3 a changé"
Macro1
End If
End Sub

Quand j'écris dans la cellule A3, ca fonctionne bien.

Par contre, quand je fais un copier coller de plusique cellules (A3 en faisant partie), la marco ne se declenche pas.
Elle se declenche quand je double clique dans la cellule, comme pour lui dire "eh oh ! la valeur a changé !

Comment faire pour lui dire que la cellule a changé par ce copier coller ?

Question bonus : quel est le code permettant de dire qu'une valeur dans une plage de cellule a changé ?
comment changer le target.address pour qu'il prenne une plage de cellules ?

Merci pour votre aide

7 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    voir avec..
    'Seule obligation, mettre la formule =A3 dans une cellule "perdue"
    Dim MemoCell As String
    
    Private Sub Worksheet_Calculate()
        If Cells(3, 1) <> MemoCell Then
            Cells(2, 1) = "la cellule A3 = " & Cells(3, 1).Value
            MemoCell = Cells(3, 1)
            'Code....
        End If
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
        If Target.Address = "$A$3" And Cells(3, 1) <> MemoCell Then
            Cells(2, 1) = "la cellule A3 = " & Cells(3, 1).Value
            MemoCell = Cells(3, 1)
            'Code....
        End If
    
    End Sub


    A+
    1
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Hum oui, mais depuis 2008 ..
    Private Sub Worksheet_Change(ByVal Target As Range) 
        If Not Intersect(Target, Range("A3:BV3")) Is Nothing Then 
            Target.Offset(-1) = "Celule " & Target.Address & " changée" 
            ' envoyer le code ou la macro....
        End If 
    End Sub


    A+
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    1
  3. Herr Hic Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    Je relance la discussion.
    Le code ci-dessous fonctionne correctement pour une cellule.
    En A3 j'entre une valeur.
    En A2 la même valeur s'affiche.

    (pour que cela fonctionne j'ai ajouté que A4=a3 comme indiqué par l'auteur du code)
    D'ailleurs, merci à l'auteur.

    Dim MemoCell As String

    Private Sub Worksheet_Calculate()
    If Cells(3, 1) <> MemoCell Then
    Cells(2, 1) = "la cellule A3 = " & Cells(3, 1).Value
    MemoCell = Cells(3, 1)
    'Code....
    End If
    End Sub

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Address = "$A$3" And Cells(3, 1) <> MemoCell Then
    Cells(2, 1) = "la cellule A3 = " & Cells(3, 1).Value
    MemoCell = Cells(3, 1)
    'Code....
    End If

    End Sub

    Ma question est :
    comment faire pour que les valeurs des cellules de A3 à BV3 s'affichent de la même manière de A2 à BV2 ?

    Merci pour vos conseils avisés
    Herr Hic

    PS : Désolé si j'ai raté une discussion qui relèverait de ma demande.

    Configuration: Windows XP / Firefox 15.0.1
    0
  4. Herr Hic Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour Lermite,

    Merci pour ta réponse rapide.
    Ca marche impec !
    Bonne journée et à +

    Herr Hic
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Herr Hic Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonsoir,

    J'utilise le code :

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("j11:BV11")) Is Nothing Then
    Target.Offset(-9) = Target.Value
    End If
    End Sub

    Si en j11 j'entre une valeur (J11=2 par exemple), cette même valeur est renvoyée automatiquement en J2 : parfait.

    Par contre, si je remplace les valeurs de la ligne 11 par des formules se répétant de J11 à BV11 (J11 =SOMME.SI($E$24:$E$2015;$I11;J$24:J$2015), lorsque que le résultat de la formule change je ne parviens pas à renvoyer le résultat en J2

    Là, j'aurais besoin d'un coup de pouce une nouvelle fois..

    Merci d'avance

    Herr Hic
    0
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Supprime le code précédant et remplace par..
    Private Sub Worksheet_Calculate()
    Dim Col As Integer
        For Col = 10 To 77
            Cells(2, Col) = Cells(11, Col).Value
        Next Col
    End Sub

    A placer au même endroit.

    0
    1. rodo
       
      Je débute, mais à chaque fois que je veux copier ce code sous VBA, la macro ne s'enregistre pas
      Je procède de la manière suivante:
      Je nomme ma macro puis je clique sur créer
      Visual Basic s'ouvre en indiquant:
      Sub Macro23()

      End Sub
      Je copie
      Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Address = "$M$6" Then
      Macro7
      End If
      entre Sub Macro23() et End Sub
      Et ça marche pas
      0
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Compris, tu met pas au bon endroit ...
    Tu clic droit sur le nom de l'onglet -> Visualiser le code
    Tu entre dans l'IDE du VBA et il y a une fenêtre ouverte.
    C'est DANS cette fenêtre que tu colle les deux sub.
    A+
    0
    1. Anne
       
      Merci :-)
      0