impression d'une zone si cellule non vide

Crifon

XLDnaute Nouveau
Bonjour,
J'ai en feuille 1 (paramètres) en (B de 4 à 18 soit 15 feuilles élèves) que mes collègues mettent une croix s'ils veulent imprimer une zone se situant ces autres feuilles (feuilles 2 à 16) toujours à la même position ("EI1:ES78).
Exemple : un collègue à mis en x dans la cellule B6 et B16, c'est qu'il souhaite imprimer cette zone située dans la feuille 4 et 14. (ligne - 2 : J'espère être compris)
En appuyant sur un bouton "impression" je lance une fonction qui vérifie cellule par cellule (B4 à B18) si elle n'est pas vide. Seulement dans ce cas elle imprime la feuille-zone adéquate.

Merci d'avance
Crifon
 

Gorfael

XLDnaute Barbatruc
Re : impression d'une zone si cellule non vide

Salut Crifon et le forum
Je ne suis toujours pas devin, ni télépathe, mais je vais essayer.
Code:
Sub test()
Dim X As Long, Plage As String
For X = 2 To 16
'pour x=2 jusqu'à 16
    If Range("B" & X + 2) <> "" Then
    'si la colonne B de la ligne X+2 n'est pas vide, alors
        With Sheets(X)
        'mise en préfixe de la feuille indice X
            Plage = .PageSetup.PrintArea
            'Sauvegarde de la plage d'impression
            .PageSetup.PrintArea = "$EI$1:$ES$78"
            'fixer plage d'impression à EI1:ES78
            .PrintOut
            'imprimer
            .PageSetup.PrintArea = Plage
            'remettre l'ancienne plage d'impression
            Range("B" & X + 2) = ""
            'vider la cellule B
        End With
        'fin préfixe
    End If
    'fin test
Next X
'x suivant
End Sub
Fait exclusivement d'après la demande !

Mais 78 ligne sur 1 page... ça me semble beaucoup.
Si quelqu'un change l'ordre des feuilles...
J'ai supposé que le nombre donné correspondait à l'indice de la feuille (sa place) et que ce n'était pas le nom de l'onglet.
A+
 

Crifon

XLDnaute Nouveau
Re : impression d'une zone si cellule non vide

Bonjour et
merci pour votre aide. Pour tester j'ai remplacé la ligne .Printout par msgbox("Impression de la feuille "&x)
J'obtiens EXACTEMENT ce que je voulais avec une nouveauté (la mise à zéro de la cellule traitée)

Je vous tiens au courant pour l'impression
J'imprime 78 lignes sur une page car le tableau imprimé est une statistique de 66 appréciations comportementales.
Je travaille sur l'indice de la feuille car chaque professeur-titulaire a des noms d'élèves différents (les 15 feuilles élèves étant nommées à la création de la classe)
Je veux bien vous envoyer le classeur (attention au poids de celui-ci) si vous désirez plonger dans mes réflexions.
Une seule difficulté mineure subsiste...
Lorsque j'effectue par macro un copier-coller d'une zone professeur vers une zone élève, les valeurs sont bien transmises MAIS également la mise en forme de la cellule. Dommage car les couleurs de la feuille élève ne sont pas les mêmes que celles de la feuille professeur (question de savoir directement si le titulaire se trouve sur tel ou tel type de feuille.

C'est un détail mais parfois je peaufine mes applications pour la beauté de la recherche intellectuelle et la collaboration avec d'autres développeurs comme vous.

Un immense merci pour votre participation.
 

Gorfael

XLDnaute Barbatruc
Re : impression d'une zone si cellule non vide

Salut Crifon et le forum
Je veux bien vous envoyer le classeur (attention au poids de celui-ci) si vous désirez plonger dans mes réflexions.
Attention à ne jamais transmettre des données confidentielles.

Transmettre un fichier de travail n'est, pour moi, jamais une bonne idée. Il n'est intéressant que pour ceux qui travaillent avec. Nous, ce qui nous intéresse, c'est un fichier de test avec une, ou deux feuilles, et juste des données pour exposer le problème (une dizaine de lignes suffisent en général). Dans le poste, il peut être important de mettre les grandeurs : si on à 20 feuilles ou 200, avec 100 lignes ou 65000 et 2 colonnes ou 200.
Le but n'est jamais de faire travailler avec ce type de fichier, mais de nous indiquer les évidences (comme l'utilisation de MFC), qui ne le sont pas pour nous.
Une seule difficulté mineure subsiste...
Pour la copie, c'est comme d'habitude (<Ctrl>+<C>, ou menu contextuel et copier).
Pour le coller :
Clic-droit sur le cellule d'arrivée (en haut à gauche) => menu contextuel cellule>>Collage spécial
Pour ton cas : section coller option Valeur
Mais regarde toutes les possibilités.
A+
 

Crifon

XLDnaute Nouveau
Re : impression d'une zone si cellule non vide

Merci pour ces conseils
Mes collègues ne sont guère disposés à utiliser les copier-coller manuels (peur de mal-faire)
donc j'ai désiré leur faciliter le travail en informatisant au maximum leurs tâches.

Je vais réduire mon classeur à 5 feuilles (1 paramètres, 2 élèves et 2 professeurs) pour en faire un classeur test que je vous enverrai afin de bien vous faire comprendre mon léger problème.
Merci de me faire part de votre disponibilité sinon je suis déjà ravi de votre collaboration.
A bientôt peut-être
Cordialement
Crifon
 

Crifon

XLDnaute Nouveau
Re : impression d'une zone si cellule non vide

Merci encore pour votre collaboration. L'astuce m'est venue de Microsoft Answers
Il suffisait de remplacer ActiveSheet.Paste par ActiveSheet.PasteSpecial xlPasteFormulasAndNumberFormats.
Je l'ai testé est mes zones sont modifiées (seulement le contenu mais plus le fond-les contours...)
Merci encore pour votre aide
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 046
Membres
104 010
dernier inscrit
Freba