Bonjour Carine.
Effectivement, je n'avais pas bien compris ton problème.
J'ai certaines contraintes qui m'empêchent dans l'immédiat de passer le temps
nécessaire à bien entrer dans ton code, mais en le parcourant rapidement, j'ai noté,
dans le sub MAJ_Matrice de la feuille 1 deux anomalies qui pourraient suffire à
expliquer tes soucis.
A la ligne 37 de ta page de code tu utilises l'instruction
Worksheets("Services et filieres").Cells(1, lngNumColonne).Value = "Filiere"
La variable lngNumColonne n'est pas déclarée, et surtout n'est pas initialisée. Elle
est donc vide et provoque une erreur d'exécution.
Solution: Déclarer la variable et l'initialiser:
dim lngNumColonne as Long
lngNumColonne = ???
(et c'est pour déterminer cette valeur que j'aurais besoin de passer un peu de temps.
Par contre, toi qui es complètement dedans, tu devrais la renseigner sans problème)
Dans le même ordre d'idée, tu utilises à la ligne 59 une instruction
While Worksheets("Services et filieres").Cells(lngCompteurFiliere,
lngCompteurService).Value <> ""
Dans cette ligne, la variable lngCompteurFilière est déclarée, mais non initialisée.
Elle vaut donc sa valeur par défaut, c'est à dire 0, et çà, VBA n'aime pas trop
(cells(0,x) ->Erreur 1004)
Solution:Initialiser la variable par une instruction
lngCompteurFiliere = xxx.
Là aussi je te laisses le soin de déterminer xxx.
Avec çà, çà devrait baigner. Si çà coince encore, je tâcherai d'y passer un moment
plus tard dans la journée.
Bon courage! Tiens moi au courant.
Amicalement
Yvan
PS: Si je peux me permettre un conseil:
Tu devrais démarrer toutes tes pages de code par l'instruction *
Option Explicit
Elle oblige le compilateur à générer un message d'erreur pour toute variable non
déclarée. Cà t'impose évidemment de tout déclarer, mais tu retrouveras très largement
les quelques secondes que tu auras passées à le faire par la suite.
Pour générer cette instruction automatiquement à toute nouvelle page, utiliser, dans
l'éditeur VBA, le menu Outils/Options Onglet Général et cocher la case "Déclaration
des variables obligatoire"
"carinecb" a écrit dans le message de news:
| Merci bq d'avoir etudie mon classeur, effectivemeent ca fait qq jours que je
| suis dessus. Ce forum m'aide pour avancer car je debute.
| Le code sur lequel je bloque est ds la feuille1 (services et filieres)
|
| Ma zone de critère se trouve en R1:S2 (desolee, j'avais oublie de le signaler)
| Elle doit servir pour mettre à jour toutes mes listes de cette feuille.
| J'ai commence a ecrire le code mais comme rien ne focntionnait j'ai tout
| coté au fur et a mesure. Je reprend ca aujourd'hui.
|
| Donc pur filtrer les services à partir de la feuille "Matrice" et pur les
| exporter sur la feuille 3serivvices et filieres", j'ai enregistré le filtre
| elabore et en selectionnant le critere service et rien dessus, il me donne le
| code de la macro9.
| et lorsque je lance ce code ca ne fonctionne pas.
| Je me demandait si cela ne provenait pas de la declaration de ma zone "table".
|
| Faut il que je la definisse a partir de VB?
|
| Ou bien est que VB ne reconnait pas le filtrage elabore sur une autre
| feuille ?
|
| bon remue meninge
| a bientot
|
|
| > OK Carine!
| >
| > Je ne suis pas encore tout à fait sûr, mais je crois que j'ai ENFIN compris
| > le problème.
| >
| >
| > D'abord bravo pour ton classeur. On sent qu'il y a déjà plusieurs heures de
| > boulot et quelques gouttes de sueur derrière çà.
| >
| > Le problème viendrait de là:
| >
| > *****************
| > > avec "table" une plage nommée et pas de criteres car je veut extraire
| > > toutes
| > > les valeurs sans doublons.
| > *****************
| >
| > Si tu veux filtrer, il te faut une zone de critères, voyons!
| > Je me suis donc permis d'en insérer une dans le classeur modifié que je te
| > renvoie.
| >
| > Si tu ne veux pas de doublon, tu fixes l'option Unique à True, point final.
| >
| > Petit +: Je l'ai mis dans le code de la feuille Matrice, dans la procédure
| > Worksheet_Change. Comme çà, dés que tu modifie une cellule de la ligne 2, le
| > filtre se déclenche.
| >
| > Ton classeur modifié: http://cjoint.com/?ikoiCQ4EK1
| >
| > Essaie de saisir en C2, dans la feuille Matrice les expressions suivantes:
| >
| > exp (pas de ligne sélectionnée)
| > *exp (là il y en a)
| > tu fais SUPPR pour effacer
| > et tu recommences!
| >
| > Tu essaies ensuite de combiner plusieurs critères en les renseignant
| > successivement.
| >
| > J'espère avoir bien compris le problème initial. Sinon dis-moi, et de toute
| > manière, ceci te servira bien un jour ou l'autre
| >
| > Amicalement
| >
| > Yvan
| >
| > ----- Original Message -----
| > From: "carinecb"
| > Newsgroups: microsoft.public.fr.excel
| > Sent: Tuesday, August 09, 2005 11:18 AM
| > Subject: filtres elaborés et macro
| >
| >
| > > Bonjour
| > > je sollicite votre aide car je n'ai pas trouve parmi toutes les questions
| > > et
| > > les reponses existantes ,une reponse a mon pb:
| > > j'ai une feuille "Matrice" qui contient une liste de Service, Filiere et
| > > Postes (dont voici le debut
| > > SEE CONDUITE Agent conduite
| > > SEE CONDUITE Agent conduite
| > > SEE CONDUITE Conducteur installation
| > > SEE CONDUITE Conducteur installation
| > > SEE CONDUITE Conducteur installation
| > >
| > > une feuille Service qui me permet de nommer les listes de Services,
| > > Filieres
| > > et les postes
| > > Je voudrais pouvoir recuperer les listes de mes entites a partir de la
| > > feuille Matrice en utilisant les filtres elabores.
| > > Mon pb est que lorsque je l'utilise a partir de la feuille cela
| > > fonctionne,
| > > mais a partir du code il y a une erreur d'execution
| > > voici une partie de mon code:
| > > Range("table").AdvancedFilter Action:=xlFilterCopy,
| > > CopyToRange:=Range("A1"
| > > ), Unique:=True
| > > avec "table" une plage nommée et pas de criteres car je veut extraire
| > > toutes
| > > les valeurs sans doublons.
| > >
| > > Je vous remercie d'avance de l'aide que vous pourrais m'apportée
| > >
| >
| >
| >
Bonjour Carine.
Effectivement, je n'avais pas bien compris ton problème.
J'ai certaines contraintes qui m'empêchent dans l'immédiat de passer le temps
nécessaire à bien entrer dans ton code, mais en le parcourant rapidement, j'ai noté,
dans le sub MAJ_Matrice de la feuille 1 deux anomalies qui pourraient suffire à
expliquer tes soucis.
A la ligne 37 de ta page de code tu utilises l'instruction
Worksheets("Services et filieres").Cells(1, lngNumColonne).Value = "Filiere"
La variable lngNumColonne n'est pas déclarée, et surtout n'est pas initialisée. Elle
est donc vide et provoque une erreur d'exécution.
Solution: Déclarer la variable et l'initialiser:
dim lngNumColonne as Long
lngNumColonne = ???
(et c'est pour déterminer cette valeur que j'aurais besoin de passer un peu de temps.
Par contre, toi qui es complètement dedans, tu devrais la renseigner sans problème)
Dans le même ordre d'idée, tu utilises à la ligne 59 une instruction
While Worksheets("Services et filieres").Cells(lngCompteurFiliere,
lngCompteurService).Value <> ""
Dans cette ligne, la variable lngCompteurFilière est déclarée, mais non initialisée.
Elle vaut donc sa valeur par défaut, c'est à dire 0, et çà, VBA n'aime pas trop
(cells(0,x) ->Erreur 1004)
Solution:Initialiser la variable par une instruction
lngCompteurFiliere = xxx.
Là aussi je te laisses le soin de déterminer xxx.
Avec çà, çà devrait baigner. Si çà coince encore, je tâcherai d'y passer un moment
plus tard dans la journée.
Bon courage! Tiens moi au courant.
Amicalement
Yvan
PS: Si je peux me permettre un conseil:
Tu devrais démarrer toutes tes pages de code par l'instruction *
Option Explicit
Elle oblige le compilateur à générer un message d'erreur pour toute variable non
déclarée. Cà t'impose évidemment de tout déclarer, mais tu retrouveras très largement
les quelques secondes que tu auras passées à le faire par la suite.
Pour générer cette instruction automatiquement à toute nouvelle page, utiliser, dans
l'éditeur VBA, le menu Outils/Options Onglet Général et cocher la case "Déclaration
des variables obligatoire"
"carinecb" <carinecb@discussions.microsoft.com> a écrit dans le message de news:
A71A9D32-B176-4312-84CB-CBE758F1514D@microsoft.com...
| Merci bq d'avoir etudie mon classeur, effectivemeent ca fait qq jours que je
| suis dessus. Ce forum m'aide pour avancer car je debute.
| Le code sur lequel je bloque est ds la feuille1 (services et filieres)
|
| Ma zone de critère se trouve en R1:S2 (desolee, j'avais oublie de le signaler)
| Elle doit servir pour mettre à jour toutes mes listes de cette feuille.
| J'ai commence a ecrire le code mais comme rien ne focntionnait j'ai tout
| coté au fur et a mesure. Je reprend ca aujourd'hui.
|
| Donc pur filtrer les services à partir de la feuille "Matrice" et pur les
| exporter sur la feuille 3serivvices et filieres", j'ai enregistré le filtre
| elabore et en selectionnant le critere service et rien dessus, il me donne le
| code de la macro9.
| et lorsque je lance ce code ca ne fonctionne pas.
| Je me demandait si cela ne provenait pas de la declaration de ma zone "table".
|
| Faut il que je la definisse a partir de VB?
|
| Ou bien est que VB ne reconnait pas le filtrage elabore sur une autre
| feuille ?
|
| bon remue meninge
| a bientot
|
|
| > OK Carine!
| >
| > Je ne suis pas encore tout à fait sûr, mais je crois que j'ai ENFIN compris
| > le problème.
| >
| >
| > D'abord bravo pour ton classeur. On sent qu'il y a déjà plusieurs heures de
| > boulot et quelques gouttes de sueur derrière çà.
| >
| > Le problème viendrait de là:
| >
| > *****************
| > > avec "table" une plage nommée et pas de criteres car je veut extraire
| > > toutes
| > > les valeurs sans doublons.
| > *****************
| >
| > Si tu veux filtrer, il te faut une zone de critères, voyons!
| > Je me suis donc permis d'en insérer une dans le classeur modifié que je te
| > renvoie.
| >
| > Si tu ne veux pas de doublon, tu fixes l'option Unique à True, point final.
| >
| > Petit +: Je l'ai mis dans le code de la feuille Matrice, dans la procédure
| > Worksheet_Change. Comme çà, dés que tu modifie une cellule de la ligne 2, le
| > filtre se déclenche.
| >
| > Ton classeur modifié: http://cjoint.com/?ikoiCQ4EK1
| >
| > Essaie de saisir en C2, dans la feuille Matrice les expressions suivantes:
| >
| > exp (pas de ligne sélectionnée)
| > *exp (là il y en a)
| > tu fais SUPPR pour effacer
| > et tu recommences!
| >
| > Tu essaies ensuite de combiner plusieurs critères en les renseignant
| > successivement.
| >
| > J'espère avoir bien compris le problème initial. Sinon dis-moi, et de toute
| > manière, ceci te servira bien un jour ou l'autre
| >
| > Amicalement
| >
| > Yvan
| >
| > ----- Original Message -----
| > From: "carinecb" <carinecb@discussions.microsoft.com>
| > Newsgroups: microsoft.public.fr.excel
| > Sent: Tuesday, August 09, 2005 11:18 AM
| > Subject: filtres elaborés et macro
| >
| >
| > > Bonjour
| > > je sollicite votre aide car je n'ai pas trouve parmi toutes les questions
| > > et
| > > les reponses existantes ,une reponse a mon pb:
| > > j'ai une feuille "Matrice" qui contient une liste de Service, Filiere et
| > > Postes (dont voici le debut
| > > SEE CONDUITE Agent conduite
| > > SEE CONDUITE Agent conduite
| > > SEE CONDUITE Conducteur installation
| > > SEE CONDUITE Conducteur installation
| > > SEE CONDUITE Conducteur installation
| > >
| > > une feuille Service qui me permet de nommer les listes de Services,
| > > Filieres
| > > et les postes
| > > Je voudrais pouvoir recuperer les listes de mes entites a partir de la
| > > feuille Matrice en utilisant les filtres elabores.
| > > Mon pb est que lorsque je l'utilise a partir de la feuille cela
| > > fonctionne,
| > > mais a partir du code il y a une erreur d'execution
| > > voici une partie de mon code:
| > > Range("table").AdvancedFilter Action:=xlFilterCopy,
| > > CopyToRange:=Range("A1"
| > > ), Unique:=True
| > > avec "table" une plage nommée et pas de criteres car je veut extraire
| > > toutes
| > > les valeurs sans doublons.
| > >
| > > Je vous remercie d'avance de l'aide que vous pourrais m'apportée
| > >
| >
| >
| >
Bonjour Carine.
Effectivement, je n'avais pas bien compris ton problème.
J'ai certaines contraintes qui m'empêchent dans l'immédiat de passer le temps
nécessaire à bien entrer dans ton code, mais en le parcourant rapidement, j'ai noté,
dans le sub MAJ_Matrice de la feuille 1 deux anomalies qui pourraient suffire à
expliquer tes soucis.
A la ligne 37 de ta page de code tu utilises l'instruction
Worksheets("Services et filieres").Cells(1, lngNumColonne).Value = "Filiere"
La variable lngNumColonne n'est pas déclarée, et surtout n'est pas initialisée. Elle
est donc vide et provoque une erreur d'exécution.
Solution: Déclarer la variable et l'initialiser:
dim lngNumColonne as Long
lngNumColonne = ???
(et c'est pour déterminer cette valeur que j'aurais besoin de passer un peu de temps.
Par contre, toi qui es complètement dedans, tu devrais la renseigner sans problème)
Dans le même ordre d'idée, tu utilises à la ligne 59 une instruction
While Worksheets("Services et filieres").Cells(lngCompteurFiliere,
lngCompteurService).Value <> ""
Dans cette ligne, la variable lngCompteurFilière est déclarée, mais non initialisée.
Elle vaut donc sa valeur par défaut, c'est à dire 0, et çà, VBA n'aime pas trop
(cells(0,x) ->Erreur 1004)
Solution:Initialiser la variable par une instruction
lngCompteurFiliere = xxx.
Là aussi je te laisses le soin de déterminer xxx.
Avec çà, çà devrait baigner. Si çà coince encore, je tâcherai d'y passer un moment
plus tard dans la journée.
Bon courage! Tiens moi au courant.
Amicalement
Yvan
PS: Si je peux me permettre un conseil:
Tu devrais démarrer toutes tes pages de code par l'instruction *
Option Explicit
Elle oblige le compilateur à générer un message d'erreur pour toute variable non
déclarée. Cà t'impose évidemment de tout déclarer, mais tu retrouveras très largement
les quelques secondes que tu auras passées à le faire par la suite.
Pour générer cette instruction automatiquement à toute nouvelle page, utiliser, dans
l'éditeur VBA, le menu Outils/Options Onglet Général et cocher la case "Déclaration
des variables obligatoire"
"carinecb" a écrit dans le message de news:
| Merci bq d'avoir etudie mon classeur, effectivemeent ca fait qq jours que je
| suis dessus. Ce forum m'aide pour avancer car je debute.
| Le code sur lequel je bloque est ds la feuille1 (services et filieres)
|
| Ma zone de critère se trouve en R1:S2 (desolee, j'avais oublie de le signaler)
| Elle doit servir pour mettre à jour toutes mes listes de cette feuille.
| J'ai commence a ecrire le code mais comme rien ne focntionnait j'ai tout
| coté au fur et a mesure. Je reprend ca aujourd'hui.
|
| Donc pur filtrer les services à partir de la feuille "Matrice" et pur les
| exporter sur la feuille 3serivvices et filieres", j'ai enregistré le filtre
| elabore et en selectionnant le critere service et rien dessus, il me donne le
| code de la macro9.
| et lorsque je lance ce code ca ne fonctionne pas.
| Je me demandait si cela ne provenait pas de la declaration de ma zone "table".
|
| Faut il que je la definisse a partir de VB?
|
| Ou bien est que VB ne reconnait pas le filtrage elabore sur une autre
| feuille ?
|
| bon remue meninge
| a bientot
|
|
| > OK Carine!
| >
| > Je ne suis pas encore tout à fait sûr, mais je crois que j'ai ENFIN compris
| > le problème.
| >
| >
| > D'abord bravo pour ton classeur. On sent qu'il y a déjà plusieurs heures de
| > boulot et quelques gouttes de sueur derrière çà.
| >
| > Le problème viendrait de là:
| >
| > *****************
| > > avec "table" une plage nommée et pas de criteres car je veut extraire
| > > toutes
| > > les valeurs sans doublons.
| > *****************
| >
| > Si tu veux filtrer, il te faut une zone de critères, voyons!
| > Je me suis donc permis d'en insérer une dans le classeur modifié que je te
| > renvoie.
| >
| > Si tu ne veux pas de doublon, tu fixes l'option Unique à True, point final.
| >
| > Petit +: Je l'ai mis dans le code de la feuille Matrice, dans la procédure
| > Worksheet_Change. Comme çà, dés que tu modifie une cellule de la ligne 2, le
| > filtre se déclenche.
| >
| > Ton classeur modifié: http://cjoint.com/?ikoiCQ4EK1
| >
| > Essaie de saisir en C2, dans la feuille Matrice les expressions suivantes:
| >
| > exp (pas de ligne sélectionnée)
| > *exp (là il y en a)
| > tu fais SUPPR pour effacer
| > et tu recommences!
| >
| > Tu essaies ensuite de combiner plusieurs critères en les renseignant
| > successivement.
| >
| > J'espère avoir bien compris le problème initial. Sinon dis-moi, et de toute
| > manière, ceci te servira bien un jour ou l'autre
| >
| > Amicalement
| >
| > Yvan
| >
| > ----- Original Message -----
| > From: "carinecb"
| > Newsgroups: microsoft.public.fr.excel
| > Sent: Tuesday, August 09, 2005 11:18 AM
| > Subject: filtres elaborés et macro
| >
| >
| > > Bonjour
| > > je sollicite votre aide car je n'ai pas trouve parmi toutes les questions
| > > et
| > > les reponses existantes ,une reponse a mon pb:
| > > j'ai une feuille "Matrice" qui contient une liste de Service, Filiere et
| > > Postes (dont voici le debut
| > > SEE CONDUITE Agent conduite
| > > SEE CONDUITE Agent conduite
| > > SEE CONDUITE Conducteur installation
| > > SEE CONDUITE Conducteur installation
| > > SEE CONDUITE Conducteur installation
| > >
| > > une feuille Service qui me permet de nommer les listes de Services,
| > > Filieres
| > > et les postes
| > > Je voudrais pouvoir recuperer les listes de mes entites a partir de la
| > > feuille Matrice en utilisant les filtres elabores.
| > > Mon pb est que lorsque je l'utilise a partir de la feuille cela
| > > fonctionne,
| > > mais a partir du code il y a une erreur d'execution
| > > voici une partie de mon code:
| > > Range("table").AdvancedFilter Action:=xlFilterCopy,
| > > CopyToRange:=Range("A1"
| > > ), Unique:=True
| > > avec "table" une plage nommée et pas de criteres car je veut extraire
| > > toutes
| > > les valeurs sans doublons.
| > >
| > > Je vous remercie d'avance de l'aide que vous pourrais m'apportée
| > >
| >
| >
| >