Microsoft 365 Lancer une macro VBA automatiquement lorsqu'on renseigne une plage d'un tableau

looky62

XLDnaute Occasionnel
hello la communauté,

Je souhaite mettre a jour un tableau automatiquement par des utilisateurs qui ne maitrise pas trop excel formule etc

J'ai trouvé ce code toutefois c pas top , j'ai l impression que ce n'est pas stable

Si vs avez une autre suggestion

Private Sub Worksheet_Change(ByVal Target As Range)
'Désactiver les événements pendant l'exécution de la macro
Application.EnableEvents = False

'Vérifier si la modification a eu lieu dans la plage de cellules "A1:L500"
If Not Intersect(Target, Range("A1:L500")) Is Nothing Then
'Lancer la macro "MaMacro"
Call MettreAJourDate
End If

'Réactiver les événements après l'exécution de la macro
Application.EnableEvents = True
End Sub

Merci de votre éclairage
 
Solution
Bonjour,

Le bout de code suivant ne colle pas au commentaire :
VB:
If Range("J" & i).Value = "X" Then
Ca ne veut pas dire "si la cellule contient une lettre "X"", ça veut dire "si la cellule contient exactement la chaine de caractère "X"".
Autrement dit, "X " ou " X" ou encore "1X" ou "Xazag" ne vont pas déclencher la mise à jour de la date.

Pour tester si la cellule contient un "X", il faut se renseigner sur l'opérateur vba LIKE.

Bonne journée,

vgendron

XLDnaute Barbatruc
Bonjour

vu le code, l'instabilité dont tu parles me semble pouvoir provenir que de ta macro "MettreAJourDate"
parce que sinon, le reste. y a rien de plus simple
si la valeur changée est dans la plage A1:L500, on update, sinon. rien..
 

looky62

XLDnaute Occasionnel
Bonjour

vu le code, l'instabilité dont tu parles me semble pouvoir provenir que de ta macro "MettreAJourDate"
parce que sinon, le reste. y a rien de plus simple
si la valeur changée est dans la plage A1:L500, on update, sinon. rien..
Hello Vgendron, ok merci pr ce retour, est ce liée à la suivante que penses tu ?

Sub MettreAJourDate()

Dim lastRow As Long
Dim i As Long


lastRow = Cells(Rows.Count, "J").End(xlUp).Row


For i = 1 To lastRow
If Range("J" & i).Value = "X" Then
'Si la cellule dans la colonne J contient une lettre "x", mettre la date du jour dans la colonne K de la même ligne
Range("K" & i).Value = Date
End If
Next i

End Sub
 

xUpsilon

XLDnaute Accro
Bonjour,

Le bout de code suivant ne colle pas au commentaire :
VB:
If Range("J" & i).Value = "X" Then
Ca ne veut pas dire "si la cellule contient une lettre "X"", ça veut dire "si la cellule contient exactement la chaine de caractère "X"".
Autrement dit, "X " ou " X" ou encore "1X" ou "Xazag" ne vont pas déclencher la mise à jour de la date.

Pour tester si la cellule contient un "X", il faut se renseigner sur l'opérateur vba LIKE.

Bonne journée,
 

Discussions similaires

Réponses
7
Affichages
528

Statistiques des forums

Discussions
315 093
Messages
2 116 140
Membres
112 669
dernier inscrit
Guigui2502