Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 27/08/2008, 08h55   #1 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut Autofilter : nombre de critères=2 insuffisant

Bonjour,

je voudrais améliorer une routine de consultation du détail de mes comptes de comptabilité.

Le système actuel ne me satisfait pas.

Voici son principe :

Une feuille présente tous les comptes regroupés par nature, avec disposé en colonne le cumul pour chaque mois et un total annuel.
Voici un de ces groupe.
Fournitures 6076000
6076100
6076200
6091000
6107000
6107100
6107200
6107300

je voudrais donner la possibilité à l'utilisateur de visualiser le détail de tout un groupe, mais je n'y parviens pas.

Pour l'instant, je fais sélectionner une cellule en regard avec un seul compte (ex : 6076000) et via un bouton d'action, je sélectionne avec autofilter les records correspondant à cette sélection. le critère 1 sert pour le compte, le critère 2 sert pour le mois.

cela donne ceci :

Code :
 
    Selection.AutoFilter Field:=1, Criteria1:=Account_id
    
    If Sel_Arg2 Then
        Moisx = Mois
        Selection.AutoFilter Field:=5, Criteria1:=Moisx
     Else
        Selection.AutoFilter Field:=5
    End If
 
 
Esil possible d'effectuer une sélection par un autre moyen car je voudrais afficher tout ce qui correspond à un groupe, voir plus.

J'ai bien pensé à un SQL (fichier.DQY) et je suis capable de le faire, mais n'y a t'il pas un moyen plus simple.

Pour information, l'ensemble des données sur lesquelles il faut appliquer un filtre ou une sélection se trouve dans une feuille de mon fichier détail.
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 09h35   #2 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 574
Par défaut

Regarde ici si tu trouves ton bonheur
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 09h46   #3 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut

Outfiiiiiiiiiiiiiiiii. Pas mal du tout.

je dois un peu ruminer le sujet pour assimiler la méthode.

Tu penses que cela va aussi fonctionner si c'est chaque fois la même colonne avec différents critères ?

Oui, tu vas peut-être me dire à juste titre que yaka essayer.

Merci beaucoup en tout cas.
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 10h09   #4 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut

Voilà, j'ai testé et j'ai un soucis.

Apparement, il prend un seul critère par colonne, le dernier.

Voici mon exemple :

Data
Citation:
CG Val Mois
601 1 1
602 2 1
603 3 3
605 4 3
607 5 5
Critères et colonnes
Citation:
Criteres = Array("", "601", "602", "605", "1", "3")
Colonnes = Array("", 1, 1, 1, 3, 3)
je voudrais donc 601, 602 et 603 pour mois 1 et 3

résultat:
Citation:
CG Val Mois
605 4 3


Peut-on mettre un operateur OR ou quelquechose du genre dans un critère.
Ce qui donnerait quelquechose du genre "601 OR 602 OR 605" pour le critère 1.
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.

Dernière modification par Godzestla ; 27/08/2008 à 13h03
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 13h03   #5 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut

j'ai essayé avec des OR, des virgules.... mais cela ne marche pas du tout.
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 13h08   #6 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 574
Par défaut

Montre ton code et explique mieux ce que tu veux faire
Si mois = 1 ou mois = 3
et si critère1 et critère2...
Tu dois pouvoir faire ça
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 13h24   #7 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut

Re,

je veux juste sélectionner des lignes sur 2 critères différents, mais ces 2 critères devraient pouvoir supporter plusieurs valeurs chacun.

je me réexplique :

data ou CG = compte général, val = valeur, Mois = n° du mois
Citation:
CG Val Mois
601 1 1
602 2 1
603 3 3
605 4 3
607 5 5
J'ai bien sur simplifié l'exemple data. le nombre de mois est 12 + 1 colonne pour total année.
le nombre de compte CG est.... important (mais gérable).

je voudrais par exemple sélectionner les records avec =
CG = 601 ou 602 ou 605
et Mois = 1 ou 3

Mon code actuel, qui ne sait pas gérer les critères mutiples, donc 1 seul Cg et 1 seul mois ou tous est :

Code :
 
Selection.AutoFilter Field:=1, Criteria1:=Account_id
    
    If Sel_Arg2 Then
        Moisx = Mois
        Selection.AutoFilter Field:=3, Criteria1:=Moisx
     Else
        Selection.AutoFilter Field:=3
    End If
 
Le problème avec ta solution c'est qu'elle ne prend que le dernier critère de chaque colonne, bien sur (ici CG=605 et mois=3). Et je ne sais pas comment avoir un critère multiple sur une seule colonne.

mais, grace à toi je sais modifier un fichier texte existant et donc mon sql source (.DQY) je pourrais très bien lui faire un petit frère avec ces fameux critères multiples.

Je voulais juste m'enquérir si par hasard, il n'y a pas plus simple.

tu me suis mieux ?
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 13h24   #8 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
Par défaut

Bonjour tlm,

Il me semble que le filtre n'accepte que 2 critères max. par colonne (Field)
La syntaxe est la suivante
Code :
Selection.AutoFilter Field:=1, Criteria1:="toto", Operator:=xlOr, Criteria2:="titi"
yapluka adapter au code de Ousk que je salue au passage
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 13h32   #9 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut

Citation:
Il me semble que le filtre n'accepte que 2 critères max. par colonne (Field)
Salut Fring,

c'est bien mon problème. 2 valeurs c'est beaucoup trop peu.

Je cherche à visualiser uniquement ce qui correspond à ma sélection.
mais l'utilisateur se promène à sa guise dans le fichier et donc change sa sélection au fur et à mesure pour controler ses couts.

Quel est le meilleurs moyen ?

* copy sélectif (avec sélection par find) dans une autre feuille ?
* Nouveau qry (.DQY) sélectif avec importation dans un nouvelle feuille des seules données souhaitées ?

Je ne sais point.
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 18h11   #10 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 574
Par défaut

Crois-tu que "ça" pourrait t'aider ?
Code :
Sub test()
Dim plage As Range
    Set plage = Application.InputBox("Sélectionner une cellule", Type:=8)
    MsgBox plage.Address
End Sub
(Tu peux mettre ça depuis un userform non modal)
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 08h43   #11 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut

Salut ousk,

désolé, mais je ne comprends pas ce que tu me proposes.

Citation:
Crois-tu que "ça" pourrait t'aider ?
Code :
Sub test()
Dim plage As Range
    Set plage = Application.InputBox("Sélectionner une cellule", Type:=8)
    MsgBox plage.Address
End Sub
(Tu peux mettre ça depuis un userform non modal)
Il n'y aurait pas une confusion de post ?
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.

Dernière modification par AlainTech ; 28/08/2008 à 10h11 Motif: Correction balises
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide