VBA TABLEAU EXCEL

cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007 - 13 févr. 2006 à 08:48
benakim29555 Messages postés 1 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 15 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.

J'espère avoir été clair.

Merci infiniment par avnce pour votre aide.

4 réponses

domsig Messages postés 125 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 11 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.

voilà voilà....
bon courage
0
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
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.

@+++
0
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
13 févr. 2006 à 12:34
Re,

Merci, j'essaierai quand j'aurai un peu de temps.

Tchao,
0
benakim29555 Messages postés 1 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 15 novembre 2006
15 nov. 2006 à 08:17
je voudrais extraire les donnee` d`un tableaux en excel et envoyer des donnees sur le port RS 232 du pc ?

abdou
0
Rejoignez-nous