Comment lancer une macro sur les lignes affichées uniquement?

Bonsoir à vous tous.

Je suis nouveau sur le forum ainsi que sur la création de macro VBA.

Dans le cadre de mon travail, je travaille sur un fichier Excel avec quelques macros. Hors il en manque une qui pourrais nous simplifier la vie.

A la fin de notre traitement des demandes, nous avons besoin d'imprimer des fiches d'identification, à ce jour, la macro VBA permet de les faire mais une par une. Nous avons donc eu l'idée de faire une macro pour les imprimer toutes les unes après les autres. J'ai réussis à faire un code qui fonctionne. Mon seul soucis c'est que lors du lancement des impressions, notre tableau est filtré et mon code ne tiens absolument pas compte de ce filtre et imprime toutes les lignes, y compris celle qui ne sont pas affichées.

Pouvez-vous m'aider à résoudre ce soucis s'il vous plaît?

Je vous passe mon code:

Sub IDENT_APPRO_ALL()

debut:

Cells(ActiveCell.Row, 7).Select 'Sélectionne la cellule "ID Barecode" de la ligne active

If Cells(ActiveCell.Row, 7).Value = "" Then GoTo fin 'Si la valeur de la cellule est vide alors aller à "fin"

If Cells(ActiveCell.Row, 7).Value = Cells(ActiveCell.Row + 1, 7) Then GoTo suite 'Si la valeur de cette cellule est égale à celle de la cellule du dessous alors aller à "suite"

Call IDENT_APPRO 'lance la macro d'impression des fiches appro (IDENT_APPRO)

Application.Wait Now + TimeValue("0:00:02") 'Temporisation de 2 secondes

suite:

Cells(ActiveCell.Row + 1, 7).Select 'Sélectionne la cellule du dessous de la colonne "ID Barecode"

GoTo debut 'Aller à "debut"

fin:

MsgBox ("Impression terminée.")

End Sub

Bonsoir

Une solution simple serait de copier le résultat du filtre sur une feuille temporaire et de lancer l'impression de puis cette copie.

Cordialement

Bonsoir Yal.

Je suis d'accord avec toi, mais le but d'une macro est de se simplifier la vie, pas de devoir faire des manipulations pour arriver au même résultat.

Du coup, nous préférons cliquer sur un bouton pour lancer nos impressions.

Cdlt

Bonjour,

If Cells(ActiveCell.Row, 7).EntireRow.Hidden = False Then Call IDENT_APPRO 'lance la macro d'impression des fiches appro (IDENT_APPRO)

Beaucoup d'erreurs de débutant en fait :
- il faut fuir les .Select inutile dans 99% des cas.
- éviter de travailler avec ActiveCell si ce n'est pas impératif
- les Goto ne servent plus qu'aux traitements d'erreurs. Ne pas utiliser autrement, les boucles et les testspermettent de traiter tous les cas.
Je ne rentrerai pas plus dans le détail, je te laisse faire tes découvertes

eric

Bonjour FabK

Les remarques de eriiic sont pour le moins judicieuses. Quand à ma suggestion elle est parfaitement et assez simplement entièrement automatisable.

Merci beaucoup Eriiic, ça marche nikel (mais tu devais t'en douter ).

Il y a encore du progrès à faire de mon côté.

Rechercher des sujets similaires à "comment lancer macro lignes affichees uniquement"