Appliquer une macro à l'ensemble de la colonne

Résolu
spiritual_monkey Messages postés 4 Statut Membre -  
spiritual_monkey Messages postés 4 Statut Membre -
Bonjour,

Je suis un débutant qui tente de faire une macro dans Excel.
Mon but est de faire apparaître la date du jour dans la cellule de la colonne `'B'' lorsque la cellule adjacente de la colonne `'A'' (un nombre) est modifiée.
J'ai trouvé sur le net une macro qui fait exactement ce que je recherche, sauf qu'elle s'applique à une seule ligne. Comme mon fichier contient des milliers de lignes, je veux éviter d'avoir à copier la macro pour chaque ligne.
Voici ce que j'ai comme macro présentement :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A1") Then
Target.Offset(0, 1) = Date
End If
End Sub

J'ai trouvé le même genre de question sur le forum, mais comme les macros sont différentes, les solutions proposées ne semblent pas s'appliquer.
Merci d'avance pour votre aide!

1 réponse

  1. via55 Messages postés 14392 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonsoir

    Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.column >1 then exit sub ' on sort de la macro si changement ailleurs que dans la colonne 1 
    ' sinon on met la date dans la colonne voisine
    Target.Offset(0, 1) = Date 
    End If 
    End Sub 


    Cdlmnt
    Via
    0
    1. spiritual_monkey Messages postés 4 Statut Membre
       
      Bonsoir via55,

      Merci d'avoir pris le temps de me répondre.

      J'ai copié votre macro et supprimé votre commentaire en vert et je reçois l'erreur suivante:
      ''Erreur de compilation : End if sans bloc if''
      Est-ce qu'il y a quelque chose que je ne fais pas correctement?

      Par ailleurs, comment le logiciel comprend que c'est à la colonne B que s'applique la macro?

      Merci!
      0
      1. via55 Messages postés 14392 Date d'inscription   Statut Membre Dernière intervention   2 759 > spiritual_monkey Messages postés 4 Statut Membre
         
        Non c'est moi qui ait oublié d'enlever le End if, supprimes cette ligne

        Soit il y a une condition et l'exécution qui suit comme dans ma ligne If Target.column >1 then exit sub
        Soit il y a une condition et une ou plusieurs lignes de commandes à appliquer si la condition est vraie et à ne pas appliquer si elle est fausse, et dans ce cas il faut un End if pour maquer la fin de ces lignes et passer à la suite de la macro

        l'instruction Target.Offset(0, 1) = Date peut se traduire par Cible (la cellule qui a été modifiée).Décaler d'un nombre de lignes de 0 et d'un nombre de colonnes de 1 et y mettre la valeur de la date du jour (=Date)
        Ainsi si tu changes une valeur en A2 le décalage 0 ligne 1 colonne va faire passer en B2
        0
      2. spiritual_monkey Messages postés 4 Statut Membre > via55 Messages postés 14392 Date d'inscription   Statut Membre Dernière intervention  
         
        Super, ça fonctionne!

        Dernière question si je peux me permettre. En jouant avec les Offsets, le résultat (date) est déplacée à l'endroit que je le désire. Mais si je veux aussi décaler la colonne qui contient les chiffres, que dois-je faire? Par exemple, si je veux que lorsque j'entre un chiffre en F3 qu'une date apparaisse en G3. Le Offsett demeure le même (0, 1), mais qu'est-ce que je dois changer à la macro?

        Merci beaucoup!
        0
    2. spiritual_monkey Messages postés 4 Statut Membre
       
      Ok, j'ai trouvé :

      Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Column = 6 Then
      Target.Offset(0, 1) = Date
      End If
      End Sub

      Merci!
      0