Excecution automatique d'une macro

Bonjour,

J'utilise cette macro avec un bouton d'exécution, je souhaiterais une automatisation afin d'éviter un oubli si je fais un complément.

Sub Liste_Description()

'

' Liste_Description Macro

'

'

Sheets("Packing List").Range("B18:B79").AdvancedFilter Action:=xlFilterCopy, _

CopyToRange:=Range("Facture!Extract"), Unique:=True

End Sub

Merci

Cdt

Christophe

une automatisation afin d'éviter un oubli si je fais un complément.

Bonjour,

peux-tu préciser ... ce que je crois comprendre, c'est relancer la macro quand tu ajoutes quelque chose ou modifies quelque chose dans Packing List ? et si oui, est-ce que la Range("B18:B79") peut évoluer en taille ?

Hello,

Yes, j'ai deux feuilles "Facture", "Packing List", lorsque je remplis la Packing List celle-ci alimente l'onglet Facture en compilant les produits.

Pour travailler sur le Facture, où je dois rajouter les prix, j'ai un bouton pour alimenter la colonne de facturation, mais si jamais je rajoute des produits sur la Packing List je dois à chaque fois utiliser le bouton pour alimenter la liste des produits d’où le risque d'oubli

Ci-joint le fichier en objet

Cdt

Désolé la feuille Facture est protégé

Ci-joint la même chose sans la protection

Bjr,

crée une zone PackingList qui est du reste Range("B18:B79")

insère le code dans la feuille Packing List

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("PackingList")) Is Nothing Then Exit Sub
    Liste_Description
End Sub

tu peux supprimer le bouton

capture d ecran 85

J'ajoute qu'on aurait pu se passer de la macro et faire une formule matricielle

je la posterai demain

Voici une solution sans macro ...

Elle nécessite de déclarer une zone dynamique Pack

=DECALER('Packing List'!$B$19;;;NBVAL('Packing List'!$B$19:$B$79))

et une formule matricielle

=SI((LIGNE('Packing List'!B18)-LIGNE('Packing List'!$B$18)+1)>SOMME(1/NB.SI(Pack;Pack));"";INDEX(Pack;EQUIV(MIN(SI(NB.SI(B$15:B15;Pack)=0;NB.SI(Pack;"<"&Pack)));NB.SI(Pack;"<"&Pack);0)))

validée par Ctrl+Maj+Entrée

les items sont alors triés

Hello,

Super la solution sans macro........... vraiment trop compliqué pour moi mais ça marche super........

Mais je me rend compte, que si je protège la feuille (et donc les formules) ainsi que l'intégrité des cellules......... certaine macro se bloquent.... je regarde ça aujourd'hui et risque de lancer un nouvel appel.

Au plaisir et encore merci de ton aide

Cdt

Christophe

Bonjour Steelson,

Désolé de revenir vers toi, mais je pense avoir été trop rapide à te répondre.. Après plusieurs test, je découvre un problème sur la solution sans macro......

Lorsque je rajoute des ligne sur la Packing List cela s'enregistre dans l'ordre alphabétique et n'enclenche pas la mise en forme des Qts et Poids

Cdt

capture

Super la solution sans macro........... vraiment trop compliqué pour moi mais ça marche super........

Plus simple de chez plus simple

dans la feuille Facture, ajoute

Private Sub Worksheet_Activate()
    Liste_Description
End Sub
capture d ecran 86

Mais je me rend compte, que si je protège la feuille (et donc les formules) ainsi que l'intégrité des cellules......... certaine macro se bloquent.... je regarde ça aujourd'hui et risque de lancer un nouvel appel.

Christophe

tu peux faire unprotect puis protect dans ta macro dans ce cas


ok je vais regarder en fin de matinée le problème sans macro

Michel

Lorsque je rajoute des ligne sur la Packing List cela s'enregistre dans l'ordre alphabétique et n'enclenche pas la mise en forme des Qts et Poids

ok je vois (enfin je pense voir) c'est le tri qui fout le bazar ?

cela doit être possible de ne pas trier, je vais voir, mais je reconnais que les formules matricielles c'est vraiment complexe ...

enfin, tu peux prendre la solution (3) à la fin de la page précédente.

Hello,

Merci pour tout, ou ça ma l'air vraiment compliqué mais si on peux éviter une macro...........

Je regarde ta solution pour travailler en feuilles protégé et te tiens au courant.

Encore merci

Cdt

Christophe

Hello,

J'ai bien rajouté

Private Sub Worksheet_Activate()

Liste_Description

End Sub

Mais ça ne fonctionne pas lorsque la feuille est protégée

capture1

J'ai bien rajouté

Private Sub Worksheet_Activate()
    Liste_Description
End Sub

Mais ça ne fonctionne pas lorsque la feuille est protégée

Oui mais cela n'a rien à voir avec ce rajout, cela devait déjà le faire !

Ajoute dans la macro

unprotect au début

puis

protect à la fin

avec le code ad_hoc (fais le par apprentissage)

Dans ton cas, comme es infos sont ajoutées sur facture, il n'y a pas de solution sans macro. Car il faut pouvoir aussi gérer les suppression dans packing list.

Hello,

Ok je teste tout ça

Encore merci de ta patience avec un débutant comme moi

Cdt

Christophe

Encore merci de ta patience avec un débutant comme moi

Non, c'est super-carré et bien conçu, la preuve j'arrive comprendre.

Et à découvrir la macro que je me suis sauvegardée

Sub Liste_Description()
    Sheets("data").Range("données").AdvancedFilter Action:=xlFilterCopy, _
        CopyToRange:=Range("data_unique!Extract"), Unique:=True
End Sub

Elle a un comportement curieux ! pas de tri, juste un ajout des nouvelles références, et si on en supprimer une elle laisse un blanc ... en espérant que ce soit stable car tu ajoutes des infos en regard (faudrait pas qu'il y a un doux mélange)

Hi,

J'en suis encore avec mes soucis de feuilles protégées je ne sais pas ou positionner le texte suivant; enfin bref je suis paumé

Ajoute dans la macro

unprotect au début

puis

protect à la fin

avec le code ad_hoc (fais le par apprentissage)

un essai (sans mot de passe)

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim depuis As Range
Dim jusque As Range
Dim der As Integer
Dim monnaie As String
DeProteger
If Not Intersect(Target, Range("J5")) Is Nothing Then

    Select Case Target.Value
        Case "USD - US Dollar"
            monnaie = "[$$-409]#,##0.000"
        Case "EUR - Euro"
            monnaie = "#\ ##0.000 €"
        Case "GBP - British Pound"
            monnaie = "[$£-en-GB]#,##0.000"
        Case Else
            monnaie = "#\ ##0.000"
    End Select

    Set depuis = Range("G16")
    Set jusque = depuis.End(xlDown)
    Range(depuis.Address & ":" & jusque.Address).NumberFormat = monnaie

    Select Case Target.Value
        Case "USD - US Dollar"
            monnaie = "[$$-409]#,##0.00"
        Case "EUR - Euro"
            monnaie = "#\ ##0.00 €"
        Case "GBP - British Pound"
            monnaie = "[$£-en-GB]#,##0.00"
        Case Else
            monnaie = "#\ ##0.00"
    End Select

    Set depuis = Range("H16")
    Set jusque = depuis.End(xlDown)
    Range(depuis.Address & ":" & jusque.Address).NumberFormat = monnaie

End If
Proteger

End Sub

Private Sub Worksheet_Activate()
    DeProteger
    Liste_Description
    Proteger
End Sub

Sub Proteger()
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Sub DeProteger()
    ActiveSheet.Unprotect
End Sub

Est ce que je dois rentrer le mot de passe quelques part

Rechercher des sujets similaires à "excecution automatique macro"