Petite Macro en cas de modification de cellule

C4rtoons

XLDnaute Junior
Bonjour à tous,

J'ai une petite question juste avant le weekend... :D

Pour la mise en condition: Je voudrais savoir comment je peux faire pour que lorsque je modifie une des donnée dans la plage A: D, la même ligne de la Colonne F m'affiche la date.
exemple:
Modification en A8 ou B8 ou C8 alors F8= Date
Modification en A20 ou B20 ou C8 alors F20 = 20 date


Petit fichier en PJ pour l'explication.
Bon weekend à tous... ;)

J'avais trouvé ca pour modifier la mise en forme de la cellule modifié mais pas pour faire ce que je voulais!

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:E20")) Is Nothing Then
Target.Font.ColorIndex = 3
End If
End sub
 

Pièces jointes

  • Test.xlsx
    10.5 KB · Affichages: 74
  • Test.xlsx
    10.5 KB · Affichages: 76
  • Test.xlsx
    10.5 KB · Affichages: 83
Dernière édition:

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Petite Macro en cas de modification de cellule

bonjour C4rtoons,

avec ceci:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:B65535")) Is Nothing Then
Target.Font.ColorIndex = 3
Cells(Target.Row, 4).Value = Date
End If
End Sub

à+
Philippe
 

kjin

XLDnaute Barbatruc
Re : Petite Macro en cas de modification de cellule

Bonjour,
Pas regardé le fichier et pour cause...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:D")) Is Nothing Then
    Range("F" & Target.Row) = VBA.Date
    Target.Font.ColorIndex = 3
End If
End Sub
A+
kjin
 

Gorfael

XLDnaute Barbatruc
Re : Petite Macro en cas de modification de cellule

Salut C4rtoons et le fort rhum
Faut pas abuser du rhum fort :D
Modification en A8 ou B8 ou C8 alors F8= Date
Modification en A20 ou B20 ou C8 alors F20 = 20 date
Un fichier d'exemple où la colonne des dates de modification est en D... :confused:

Enfin, comme tu l'as dit, bientôt le week-end... et la semaine a été dure pour certain
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range, Plage As Range
Set Plage = Intersect(Target, Range("A1:E20"))
If Plage Is Nothing Then Exit Sub
For Each Cel In Plage
    Cel.Font.ColorIndex = 3
    Cells(Cel.Row, "F") = Format(Date, "dd/mm/yyyy")
Next Cel
End Sub
La boucle n'est là, que parce qu'on peut être tenté de faire du copier/coller sur plusieurs cellules (comme sur les lignes 4 à 7)
A+
 

C4rtoons

XLDnaute Junior
Re : [Résolu] Petite Macro en cas de modification de cellule

COmment est ce que je dois symboliser le ET/OU en VBA?
exemple: Range("A ET/OU D"), en gros je veux exclure le B & le C...
Je me sert de la même formule pour faire d'autres choses en plus du coup ;)
 

C4rtoons

XLDnaute Junior
Re : Petite Macro en cas de modification de cellule

Super ca fonctionne...
Petite remarque au quelle je n'avais pas pense... J'ai deja un tri de liste automatique sur mon fichier qui re classe tout mes fichiers automatiquement si il y a une modification!

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Range("Marque,Gamme"), Target) Is Nothing And Target.Count = 1 Then
   [A2:AL100000].Sort Key1:=[A2], Key2:=[B2]
   [A1:AL100000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[ba1], Unique:=True
 End If

Ce qui pose probleme du coup avec ma formule de changement de date :(
En effet, si je supprime une ligne, la macro considere une modification sur la ligne et donc indique la date :(

Tout le code donne ca:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Range("Marque,Gamme"), Target) Is Nothing And Target.Count = 1 Then
   [A2:AL100000].Sort Key1:=[A2], Key2:=[B2]
   [A1:AL100000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[ba1], Unique:=True
 End If
 ' changement de date si modification sur la voiture
 If Not Intersect(Target, Range("A:K,M:S")) Is Nothing Then
    Range("AW" & Target.Row) = VBA.Date
    Target.Font.ColorIndex = 3
End If
End sub


quelqu'un a une idee technique pour m'aider ou je suis mal barre?
Bon samedi et bon dimache !!
 

Gorfael

XLDnaute Barbatruc
Re : Petite Macro en cas de modification de cellule

Salut C4rtoons et le forum
En effet, si je supprime une ligne, la macro considère une modification sur la ligne et donc indique la date :(
la différence, c'est que tu changes une ligne, pas quelques cellules.
il suffit de vérifier que target.rows(1).cells.count < columns.count
le nombre de cellules de la première ligne des cellules modifiées est inférieur au nombre de colonnes de la feuille (idem pour une suppression de colonne)
A+
 

kjin

XLDnaute Barbatruc
Re : Petite Macro en cas de modification de cellule

Bonjour,
Désactive la gestion des événements avant le tri...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Range("Marque,Gamme"), Target) Is Nothing And Target.Count = 1 Then
    Application.EnableEvents = False
   [A2:AL100000].Sort Key1:=[A2], Key2:=[B2]
   [A1:AL100000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[ba1], Unique:=True '?!
    Application.EnableEvents = True
 End If
 ' changement de date si modification sur la voiture
 If Not Intersect(Target, Range("A:K,M:S")) Is Nothing Then
    Range("AW" & Target.Row) = VBA.Date
    Target.Font.ColorIndex = 3
End If
End Sub
...peut-être
A+
kjin
 

Gorfael

XLDnaute Barbatruc
Re : Petite Macro en cas de modification de cellule

Salut C4rtoons et le forum
Nb cellules modifié de la 1er ligne < au nbr de colonnes ? de la feuille ? Pour quoi faire ?
Pour faire beau ? ;)
Si tu insères une ligne ou en supprime une, target contient autant de cellules que ta feuille peut avoir de colonnes. Comme on ne connaît rien à ton fichier, on ne peut pas que compter le nombre de cellules de target : tu pourrait faire un copier/coller d'un nombre de cellules supérieur à celui d'une ligne. Donc, on compte les cellules de la première ligne de target. S'il est inférieur au nombre de cellules d'une ligne, alors, ce n'est ni une insertion, ni une suppression de ligne(s).

L'autre solution, celle de kjin est le blocage de la gestion des évènements. Chez moi, ça entraîne obligatoirement une gestion des erreurs, avec sortie unique, pour être sûr de la remettre en route.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 506
Messages
2 089 127
Membres
104 041
dernier inscrit
jcourtei