![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2007
Messages: 13
|
Bonjour le forum.
J'utlise un filtre élaboré dans une macro. Il y a deux semaines il fonctionnait..maintenant il ne fonctionne plus..strange!! Je ne comprends pas le souci. La seule modification que j'ai apporté est que j'ai rajouté une colonne dans ma Database. Est ce que cela change quelque chose? Merci de votre aide. Je vous joints le code: Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 2 And Target.Column = 3 Then Sheets("Bilan").Range("Critères").Calculate Worksheets("Bilan").Range("Database") _ .AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Bilan").Range("Critères"), _ CopyToRange:=Range("A7:E7"), Unique:=False |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2005
Localisation: Orléans
Version Excel : Excel 2007 (PC)
Messages: 424
|
Bonsoir Chouchounette,
L'idéal serait de joindre ton fichier (épures-le toutefois des éventuelles données confidentielles qu'il pourrait contenir) Bonne soirée Kotov |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Sète
Version Excel : Excel 2003 (PC)
Messages: 2 903
|
Bonsoir Chouchounette, Kotov, bonsoir le forum,
D'accord avec Kotov pour un fichier exemple mais les quelques lignes de code que tu nous montres indiquent déjà que le nombre de colonne est pris en compte. Donc rien de très étonnant à ce que ça ne fonctionne plus si tu as rajouté une colonne. ton code commentée : l'événement Change se produit chaque fois qu'il y a un changement dans une cellule (édition, effacement, etc...) Sub Worksheet_Change(ByVal Target As Range) si le changement à lieu dans la ligne 2 et la colonne 3 (soit C2) alors si tu as rajouté une colonne ça peut ne plus fonctionner... If Target.Row = 2 And Target.Column = 3 Then c'est ici que tu dois modifier pour adapter à l'ajout de la colonne la plage nommée "Critères"de l'onglet "Bilan" est recalculée Sheets("Bilan").Range("Critères").Calculate code pour le filtre élaboré de l'onglet "Bilan" sur la plage nommé "Database" Worksheets("Bilan").Range("Database") _ .AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Bilan").Range("Critères"), _ CopyToRange:=Range("A7:E7"), Unique:=False Dernière modification par Robert ; 14/08/2007 à 23h53. |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2007
Messages: 13
|
Bonjour le forum.
Merci Kotov de l'intérêt que tu as porté à ma question et merci Robert de tes éclaircissements. Effectivement le problème réside dans le fait d'avoir ajouté une colonne. J'ai finalement abandonné ce filtre car ma base évolue et ce filtre ne peut pas prendre en compte les rajouts de lignes ou de colonnes. Bonne journée à tous |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: juin 2007
Version Excel : Excel 2003 (PC)
Messages: 3 106
|
Bonjour,
je cite : ce filtre ne peut pas prendre en compte les rajouts de lignes ou de colonnes Bien sûr que si. Il suffit de déterminer dynamiquement ta Database |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2007
Messages: 13
|
Bonjour à tous et à toutes.
Merci bhbh de ta remarque, mais alors comment déterminer dynamiquement ma Database? Pour l'instant j'ai fait (Insertion>Nom>Définir) et je définis une plage "finie" de cellules que j'ai nommé Database..ce qui n'est pas dynamique. Bonne journée! |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: juin 2007
Version Excel : Excel 2003 (PC)
Messages: 3 106
|
Bonjour,
pour déterminer dynamiquement une plage de cellules comportant N colonnes et N lignes, tu fais Insertion/Nom/Définir tu mets donc ton nom Database, et dans la case du bas (Fait Référence à ![]() tu tapes : =DECALER(Feuil2!$A$1;0;0;NBVAL(Feuil2!$A:$A);NBVAL (Feuil2!$1:$1)) Explications : la méthode fonction DECALER permet de définir : - une cellule de référence (Feuil2!$A$1), où ta base débute. - de combien de lignes tu veux la décaler vers le bas : le premier 0 (optionnel, je l'ai rajouté pour l'exemple) si tu mets 3, ta cellule de réf sera donc $A$4 - idem pour les colonnes (le deuxième 0, également optionnel) attention pour ces deux 0, s'ils sont optionnels, les points virgule ne le sont pas - ensuite la hauteur (nb de lignes) de ta base (NBVAL(Feuil2!$A:$A)) ici, on suppose que toutes les cellules de la ligne A seront forcément remplies dans la base, qu'il n'y aura pas de cellules vides au milieu... - et enfin la largeur nb de colonnes) de ta base (NBVAL(Feuil2!$1:$1)) ici, on suppose que tous les en-têtes de colonnes, situées dans la ligne 1 ont une valeur. dans ton cas, si tu as mis tes critères en H1:H2 par exemple, il faut donc enlever 1 au résultat, sinon ta base aura une colonne de trop. donc on fait NBVAL(Feuil2!$A:$A)-1 la formule finale donnera donc : =DECALER(Feuil2!$A$1;;;NBVAL(Feuil2!$A:$A);NBVAL(F euil2!$1:$1)-1) PS pas la peine de tout taper à la main, tu écris : =decaler(**ici, tu cliques sur ta première cellule**;;;**3 points-virgule** puis nbval(**clique sur la colonne A**);nbval(**clique sur la première ligne(le1 à gauche)**)-1) et tu fais entrer. J'espère avoir répondu à ton voeu Bonne lecture Edit : Bonjour également robert; eu des pb de connexion Bien vu pour la méthode vba Dernière modification par bhbh ; 17/08/2007 à 17h58. |
|
|
|
|
|
#8 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Sète
Version Excel : Excel 2003 (PC)
Messages: 2 903
|
Bonjour le fil, bonjour le forum,
Définir la plage dynamiquement peut s'avérer relativement facile à faire du style de A1 à la dernière ligne éditée de la colonne F, ça donnerait : Code:
Dim pl As Range
Set pl = Range("A1:F" & Range("F65536").End(xlUp).Row)
pl.Name = "Database "
Code:
Activesheet.UsedRange.Name = "Database " Édition : Bonjour bhbh on s'est croisés. Chouchounette, tu as maintenant la version Formule et la version VBA. |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| filtre élaboré | DENIS34 | Forum Excel | 6 | 27/09/2006 16h37 |
| Filtre élaboré | Chatroc | Forum Excel | 10 | 13/04/2006 11h06 |
| filtre élaboré | pphilippe | Forum Excel Downloads - Archives | 12 | 15/10/2003 00h51 |
| filtre élaboré | lemegapro | Forum Excel Downloads - Archives | 1 | 28/03/2003 20h26 |
| Pb filtre elaboré | loulou | Forum Excel Downloads - Archives | 2 | 20/01/2003 17h19 |