Prb d'execution de Macro: Module VS Worksheet
Résolu
Littleshoe
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
Littleshoe Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Littleshoe Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Prb d'execution de Macro: Module VS Worksheet
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Convertir chiffre en lettre excel sans macro - Forum Microsoft Office
3 réponses
Bonjour
D'après ce que vous dites, si vous voulez intégrer ce code dans le module de la feuille avec Worksheet_SelectionChange, cela signifie que chaque fois que vous sélectionnerez une quelconque cellule, ça exécutera un filtre suivi d'un tri. Etes-vous bien sûr que cela fasse cela?,
cdlt
D'après ce que vous dites, si vous voulez intégrer ce code dans le module de la feuille avec Worksheet_SelectionChange, cela signifie que chaque fois que vous sélectionnerez une quelconque cellule, ça exécutera un filtre suivi d'un tri. Etes-vous bien sûr que cela fasse cela?,
cdlt
Bonjour,
et merci pour votre reponse,
Pour repondre a votre question : J'ai une liste de produit dans une feuille. l'operateur peut en ajouter. Du coup en ajoutant des produits, la macro permet de filtrer, creer une liste dans une nouvelle colonne sans les doublons et de les ranger par ordre alphabetic. Cette nouvelle liste est relie a une liste deroulante dynamique (avec la fonction decaler).
En gros a chaque fois que l'operateur rajoute un produit, la liste deroulante est mise a jour.
Le code fonctionne en tant que module, mais je n'arrive ni a la faire fonctionner en mode Worksheet_Activate ni en mode Worksheet_SelectionChange.
Est possible?
Merci d'avance
et merci pour votre reponse,
Pour repondre a votre question : J'ai une liste de produit dans une feuille. l'operateur peut en ajouter. Du coup en ajoutant des produits, la macro permet de filtrer, creer une liste dans une nouvelle colonne sans les doublons et de les ranger par ordre alphabetic. Cette nouvelle liste est relie a une liste deroulante dynamique (avec la fonction decaler).
En gros a chaque fois que l'operateur rajoute un produit, la liste deroulante est mise a jour.
Le code fonctionne en tant que module, mais je n'arrive ni a la faire fonctionner en mode Worksheet_Activate ni en mode Worksheet_SelectionChange.
Est possible?
Merci d'avance
Bonjour Littleshoe,
Voici ta macro telle que je l'ai comprise qui fonctionne comme tu voudrais sur changement et avec des plages qui s'agrandissent automatiquement.
Voici ta macro telle que je l'ai comprise qui fonctionne comme tu voudrais sur changement et avec des plages qui s'agrandissent automatiquement.
Private Sub Worksheet_Change(ByVal sel As Range) If Not Intersect(Range("A:A"), sel) Is Nothing Then ' modification colonne A Columns("E").ClearContents Cells(1, "A").Resize(Cells(Rows.Count, "A").End(xlUp).Row, 1).AdvancedFilter _ Action:=xlFilterCopy, CopyToRange:=Range("E1"), Unique:=True ' copie colonne E triée sans doubles With Cells(1, "E").Resize(Cells(Rows.Count, "E").End(xlUp).Row, 1) .Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End With End If If Not Intersect(Range("H:H"), sel) Is Nothing Then ' modification colonne H Columns("K").ClearContents Cells(1, "H").Resize(Cells(Rows.Count, "H").End(xlUp).Row, 1).AdvancedFilter _ Action:=xlFilterCopy, CopyToRange:=Range("K1"), Unique:=True ' copie colonne K triée sans doubles With Cells(1, "K").Resize(Cells(Rows.Count, "K").End(xlUp).Row, 1) .Sort Key1:=Range("K2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End With End If End Sub
salut gbinforme,
Merci pour ton message et surtout ta reponse.
Mais du coup il y a plusieurs choses que je ne comprend pas:
- If Not Intersect(Range("A:A"), sel) Is Nothing Then?
- Cells(1, "A").Resize(Cells(Rows.Count, "A").End?
Pourquoi as tu change la macro qui marchait correctement sous un bouton?
Est ce parce que cette macro ne fonctionnait pas si on l'appliquait a une feuille?
Merci pour d'avance.
Merci pour ton message et surtout ta reponse.
Mais du coup il y a plusieurs choses que je ne comprend pas:
- If Not Intersect(Range("A:A"), sel) Is Nothing Then?
- Cells(1, "A").Resize(Cells(Rows.Count, "A").End?
Pourquoi as tu change la macro qui marchait correctement sous un bouton?
Est ce parce que cette macro ne fonctionnait pas si on l'appliquait a une feuille?
Merci pour d'avance.
Bonjour,
If Not Intersect(Range("A:A"), sel) Is Nothing Then
Ceci teste si la modification a été effectuée dans la colonne A
Cells(1, "A").Resize(Cells(Rows.Count, "A").End?
Ceci détermine la longueur de ta plage
Est ce parce que cette macro ne fonctionnait pas si on l'appliquait a une feuille?
Il me semble que c'était ta question ? je n'arrive pas a la mettre en place en l,insérant dans la feuille et a la faire exécuter avec le Mode (Activate) ou Selection Change,
Ta fonction limitait ta saisie à 19 lignes, je l'ai mise évolutive et fonctionnelle sur "Selection Change"
If Not Intersect(Range("A:A"), sel) Is Nothing Then
Ceci teste si la modification a été effectuée dans la colonne A
Cells(1, "A").Resize(Cells(Rows.Count, "A").End?
Ceci détermine la longueur de ta plage
Est ce parce que cette macro ne fonctionnait pas si on l'appliquait a une feuille?
Il me semble que c'était ta question ? je n'arrive pas a la mettre en place en l,insérant dans la feuille et a la faire exécuter avec le Mode (Activate) ou Selection Change,
Ta fonction limitait ta saisie à 19 lignes, je l'ai mise évolutive et fonctionnelle sur "Selection Change"
Hello, desole pour la temps de reponse, mais avec 7 de decalge horaire, c'est pas evident.
Merci pour te reponse, cela m'a beaucoup aide,
Ainsi, si on veut mettre une macro (module) a une macro inserer dans "Worksheet", il faut que le language soit adequat?
Alors pourquoi la fonction bugge quand j'ai voulu la mettre sous "Selection Change"?
Qu'est que l'ordinateur comprenait pas?
Je sais si c'est comprehensible...
Merci d'avance.
Merci pour te reponse, cela m'a beaucoup aide,
Ainsi, si on veut mettre une macro (module) a une macro inserer dans "Worksheet", il faut que le language soit adequat?
Alors pourquoi la fonction bugge quand j'ai voulu la mettre sous "Selection Change"?
Qu'est que l'ordinateur comprenait pas?
Je sais si c'est comprehensible...
Merci d'avance.
Bonsoir,
Qu'est que l'ordinateur comprenait pas?
Sans avoir la façon dont tu as testé, ce n'est pas facile de savoir.
Je comprends que tu es été perturbé par ma modification mais elle était destinée à te faire voir que lorsque l'on fait une macro il ne faut pas figer les plages car si tu rentrais en ligne 20 elle n'était plus prise en compte et une macro ce n'est pas fait pour devoir la modifier chaque fois qu'il y a une ligne de plus : c'est l'inconvénient de la fonction Range qui est figée.
Qu'est que l'ordinateur comprenait pas?
Sans avoir la façon dont tu as testé, ce n'est pas facile de savoir.
Je comprends que tu es été perturbé par ma modification mais elle était destinée à te faire voir que lorsque l'on fait une macro il ne faut pas figer les plages car si tu rentrais en ligne 20 elle n'était plus prise en compte et une macro ce n'est pas fait pour devoir la modifier chaque fois qu'il y a une ligne de plus : c'est l'inconvénient de la fonction Range qui est figée.