Prb d'execution de Macro: Module VS Worksheet
Résolu/Fermé
Littleshoe
Messages postés
20
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
4 août 2016
-
Modifié par pijaku le 12/03/2015 à 07:55
Littleshoe Messages postés 20 Date d'inscription lundi 2 mars 2015 Statut Membre Dernière intervention 4 août 2016 - 6 avril 2015 à 08:20
Littleshoe Messages postés 20 Date d'inscription lundi 2 mars 2015 Statut Membre Dernière intervention 4 août 2016 - 6 avril 2015 à 08:20
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é
- Macro word - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Erreur d'exécution 13 incompatibilité de type ✓ - Forum Programmation
3 réponses
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
21 mars 2015 à 10:39
21 mars 2015 à 10:39
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
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 718
23 mars 2015 à 09:06
23 mars 2015 à 09:06
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.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 718
23 mars 2015 à 12:06
23 mars 2015 à 12:06
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"
Littleshoe
Messages postés
20
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
4 août 2016
24 mars 2015 à 02:05
24 mars 2015 à 02:05
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.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 718
24 mars 2015 à 21:47
24 mars 2015 à 21:47
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.
Littleshoe
Messages postés
20
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
4 août 2016
>
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
6 avril 2015 à 08:20
6 avril 2015 à 08:20
Hello gbinforme,
Merci pour ces precisions !
super sympa de ta part
Merci pour ces precisions !
super sympa de ta part