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
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas