cs_ZANUS
Messages postés126Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 février 2007
-
13 févr. 2006 à 08:48
benakim29555
Messages postés1Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention15 novembre 2006
-
15 nov. 2006 à 08:17
Bonjour à tous
Je cherche à créer un code VBA (pas en VB : je ne l'ai pas)me permettant de résoudre le problème suivant. Sur Excel, j'ai un tableau. Je connais le nombre de colonnes qui est fixe mais pas le nombre de lignes. Il est variable.
Je veux faire des filtres et faire une impression par filtre.Je suis passé par l'enregistreur avec un exemple très simple. Je veux imprimer la page des personnes ayant répondu non à une enquête (F représente la colonne des réponses) et imprimer la page des personnes ayant répondu oui.
L'exemple est j'espère très simple pour que vous compreniez. Voici donc mon code:
Columns("F:F").Select 'Sélectionner la colonne F
Selection.AutoFilter 'Filtrer cette colonne
Selection.AutoFilter Field:=1, Criteria1:="NON" 'Sélectionner NON
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 'Imprimer page
Selection.AutoFilter Field:=1, Criteria1:="OUI" 'Sélectionner OUI
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True'Imprimer page
Le problème est que j'ai toutes sortes de réponses. Je ne veux pas saisir à chaque fois Criterial: "Réponse filtrée". Si j'ai 200 sortes de réponses dans ma colonne filtrée, ce n'est pas pratique.
Ce que je veux, c'est un code qui va me permettre de m'imprimer une page pour chacun de mes filtres sans avoir à saisir systématiquement la réponse filtrée.Si ma colonne filtrée comporte 200 critères, en lançant ma macro, je veux donc au moins 200 pages imprimées.
domsig
Messages postés125Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention11 mai 2010 13 févr. 2006 à 09:55
bonjour
je propose un truc du style :
1°) trier les lignes sur la colonne F
2°) boucler du début à la fin en faisant un test sur la valeur de la ligne en cours, colonne F, filtrer sur cette valeur et imprimer
3°) passer à la ligne suivante : si c'est la même valeur, on passe à la ligne suivante, si c'est vide on arrête, si c'est une valeur différente on filtre dessus et on imprime.
kalobit
Messages postés169Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 7 avril 20082 13 févr. 2006 à 09:58
salut,
Je te propose de charger tous les critères possible dans un tableau
ensuite, tu lance ton impression en bouclant sur le tableau
exemple pour charger les critères :
dim tableau()
dim i as integer
dim j as integer
dim compteur as integer
Fin = range("f65536").end(xlup).row
for each cell in range("f2:f" & fin).cells ' pour chaque ligne de ton tableau
for j = 1 to ubound(tableau) 'On boucle dans le tableau de critère
if tableau(j) = cell.value then goto suite ' si on trouve l'occurence, ligne suivante
next ' sinon
compteur = compteur +1
redim preserve tableau(1 to compteur)
tableau(compteur) = cell.value 'on rajoute le critère dans le tableau
suite:
next
Voilà pour ces quelques lignes.
Le goto est pas super mais bon, ça marche.
Ensuite, il te reste plus qu'à lancer ta macro en bouclant sur tableau pour changer les critères.