Appliquer une macro à l'ensemble de la colonne

[Résolu/Fermé]
Signaler
Messages postés
4
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
12 juin 2015
-
Messages postés
4
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
12 juin 2015
-
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

Messages postés
13121
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
23 octobre 2021
2 267
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
Messages postés
4
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
12 juin 2015

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!
Messages postés
13121
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
23 octobre 2021
2 267 >
Messages postés
4
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
12 juin 2015

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
Messages postés
4
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
12 juin 2015
>
Messages postés
13121
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
23 octobre 2021

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!
Messages postés
4
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
12 juin 2015

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!