Imprimer si valeur d'une formule donne un résultat

Bonjour,

J'aurais à nouveau grand besoin de votre aide pour l' écriture d' un code VBA?

Cela fait pas mal de temps que je ne suis pas venue sur le forum et j'ai du mal à adapter à mon nouveau fichier le code que vous m'aviez donné très aimablement en 2016 avec des explications en plus!

Je dois imprimer en noir et blanc certaines cellules d'un fichier excel :

1) obligatoirement la plage A1:H5

2) ensuite à compter de la ligne 6 les cellules des colonnes A:H, uniquement si le résultat des formules figurant en colonne D est différent de "" ( rien).

Voici le code que vous m'aviez donné le 25/01/206 22:05 dans un fichier un peu différent.

J'avais ajouté un bouton "imprimer".

Public Sub Imprimer()

Dim n As Long

n = 9

With Feuil1

.Unprotect Password:="melba"

Do

If .Cells(n + 1, 1).Value = "" Then .Rows(n + 1).Hidden = True

n = n + 1

Loop While .Cells(n + 1, 1).Formula <> ""

With .PageSetup

.BlackAndWhite = True

.PrintArea = "$A1:N" & n

End With

.PrintOut Preview:=True

.Rows.Hidden = False

.Protect Password:="melba", UserInterFaceOnly:=True

End With

End Sub

Par avance je vous remercie

Bonne soirée à tous

Bonjour,

votre fichier est endommagé, s.v.p., faite la réparation.

melbamelba fichier endommage

Bonjour,

A-priori :

Sub Imprimer()
    Dim n As Long
    n = 5
    With Feuil1
        .Unprotect "melba"
        Do
            If .Cells(n + 1, 4).Value = "" Then .Rows(n + 1).Hidden = True
            n = n + 1
        Loop While .Cells(n + 1, 4) <> ""
        With .PageSetup
            .BlackAndWhite = True
            .PrintArea = "$A1:N" & n
        End With
        .PrintOut Preview:=True
        .Rows.Hidden = False
        .Protect "melba", UserInterFaceOnly:=True
    End With
End Sub

NB- Depuis 2016, tu aurais pu apprendre à utiliser les balises Code pour insérer du code dans un post...

Cordialement.

Bonjour,

Merci pour vos réponses.

Avant de poster j'ai bien essayé de modifier de façon empirique certains paramètres mais sans succès.

Je pense que mon fichier avait effectivement un problème dans l'affichage des pages et je viens de le modifier.

Du coup le code fonctionne sauf que lorsque j'appuie sur le bouton imprimer j'ai bien la zone d'impression escomptée mais aussi une page vierge!!

Cela vient-il du code ou de ma modification de l'onglet "affichage " / " aperçu sauts de page"?

Je constate que par rapport au code reçu en 2016, le début du code n'est plus "public sub Imprimer" mais "Sub Imprimer" : cela a une importance?

Et surtout ce qui change c'est If . Cells (n+1,4), ce petit 4 a tout changé, je vais méditer là-dessus.

Et pourquoi avoir laissé la plage "PrintArea = "$A1:N" & n", je peux mettre PrintArea = "$A1:H" & n, sans endommager le code?

Si vous pouviez me donner encore un coup de pouce pour cette page vierge, ce serait super.

Hourrah!

Je viens de comprendre pourquoi j'avais une feuille vierge, c'est justement à cause de cette zone PrintArea = "$A1:N" & n.

Pour aller jusqu'à la colonne N il fallait bien 2 pages .

Je viens de modifier et ai mis PrintArea = "$A1:H " & et ça va beaucoup mieux.

Cependant merci de me dire si le public sub imprimer a une importance.

Bonne soirée

Je constate que par rapport au code reçu en 2016, le début du code n'est plus "public sub Imprimer" mais "Sub Imprimer" : cela a une importance?

Aucune : toutes les procédures sont publiques par défaut, donc mettre Public ou ne rien mettre, c'est du pareil au même, et c'est plus court de ne rien mettre !

Par contre si une procédure doit être privée, il faut Private (mais rarement utilisé).

Cas particulier : les évènementielles toujours Private..., elle le sont par définition et enlever le Private ne les rendra pas publiques.

Attention c'est l'inverse pour les variables : on utilise Dim (et en principe jamais Private) mais les variables sont privées par défaut. Là Public est indispensable pour les rendre publiques (y accéder d'un autre module que le leur, cela ne vaut que pour les variables de niveau module, dans une procédure elles y sont confinées....)

Et surtout ce qui change c'est If . Cells (n+1,4), ce petit 4 a tout changé, je vais méditer là-dessus.

C'est toi qui a indiqué que le contenu de la colonne D (=4) était déterminant...

Et pourquoi avoir laissé la plage "PrintArea = "$A1:N" & n", je peux mettre PrintArea = "$A1:H" & n, sans endommager le code?

Sans problème ! Au contraire, c'est un oubli de ma part !

Cette histoire de page vierge me surprend ! Je vais regarder.


Pas de page vierge chez moi ! Une seule page à l'impression !

Je n'ai plus la page vierge depuis que j'ai changé la zone d'impression et mis PrintArea = "$A1:H" & n.

Je suis ravie et te dis encore mille fois merci.

Je vais essayer de noter tout ceci pour une prochaine fois.

Bonne soirée

Bonne continuation.

Rechercher des sujets similaires à "imprimer valeur formule donne resultat"