XL 2019 Automatiser une macro

UpTeNiX

XLDnaute Nouveau
Bonjour à tous,

J'essaie de me constituer un classeur me permettant de relancer plus efficacement mes clients selon leur fréquence d'achat. Etant débutant en macro, je galère encore pas mal à en faire ce que je veux.
J'ai besoin de votre aide pour automatiser la macro du document joint; l'idée serait que à chaque uptade de la colonne H, et suivant les jours qui passent, elle se mette à jour automatiquement.

Merci d'avance !
 

Fichiers joints

Ikito

XLDnaute Occasionnel
Bonjour UpTeNiX,

EDIT : "H1:H100" correspond à la plage de tes données.
EDIT2 : J'ai éclaté tes formules, copie-colle les de ton ancien classeur :rolleyes:

N'oublie pas d'adapter les Range avec ceux présents dans ton fichier source.

A placer dans Feuil1 :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("H1:H100")) Is Nothing Then
        Call Macro1
    End If
End Sub
A placer dans un Module :

VB:
Sub Macro1()

Application.ScreenUpdating = False

    Range("A6:I11").AutoFilter
    ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Add Key:=Range _
        ("H6:H11"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A6:I11").AutoFilter
    Application.ScreenUpdating = True
End Sub
 

Fichiers joints

UpTeNiX

XLDnaute Nouveau
Bonjour Ikito, j'ai essayé ta formule sur mon fichier de base et à chaque tentative un message d'erreur : Nom ambigu detecté : Worksheet_Change.
 

Ikito

XLDnaute Occasionnel
UpTeNiX,

Je suppose qu'il y a deux fois Worksheet_Change dans le code VBA de la feuille.
Enfin du moins, il y a une déclaration double quelques part.
 

UpTeNiX

XLDnaute Nouveau
J'ai en effet une répétition, du à une première macro pour la date;
Si j'ai bien compris aucune worksheet ne doit pas être répété ?

Code de ma feuille de base :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("F4:G" & Range("G65536").End(xlUp).Row)) _
        Is Nothing Then

    Range("H" & Target.Row).Value = Date

End If

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("H1:H100")) Is Nothing Then
        Call Macro1
    End If
End Sub
 

Ikito

XLDnaute Occasionnel
UpTeNix,

Deux sub ne peuvent avoir le même nom. Il suffit de concaténer :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("F4:G" & Range("G65536").End(xlUp).Row)) _
        Is Nothing Then

    Range("H" & Target.Row).Value = Date

End If

    If Not Intersect(Target, Range("H1:H100")) Is Nothing Then
        Call Macro1
    End If
End Sub
 

Discussions similaires


Haut Bas