Sélectionner des feuilles sous condition pour les enregistrer au format PDF

Bonjour à tous !

Je suis nouveau sur le forum ! Je pratique et apprends Excel un peu tout seul ^^ je sèche depuis 2 jours sur une manip'

Mon problème est le suivant :

J'ai un fichier avec plusieurs feuilles. La première feuille étant un récap' des suivantes. Chacune des feuilles contient des articles en fonction d'un thème (ex: une feuille par pièce de la maison avec des colonnes contenant des articles, quantité, et prix).
Le but final étant d'enregistrer un fichier au format PDF contenant; la synthèse (1er feuille, toujours), et les feuilles dont le montant total n'est pas nul (car nul = pas utilisée).
Il y a le total dans chaque feuille.

Mais voilà, mon problème est que je n'arrive pas à sélectionner uniquement la 1er feuille et les feuilles dont le montant est différent de 0.

Je "connais" le code pour enregistrer au format PDF, je connais le array pour sélectionner les feuilles, les fonctions If, etc ... mais je n'arrive pas à marier tout ce beau monde.
Je me disais que je n'avais cas "trier" a coup de fonction "IF" les feuilles dont le total est différente de 0 & sélectionner la synthèse mais ....je sèche.

Je joins un excel =)

Dans cette exemple, on doit enregistrer un fichier au format PDF, avec les feuilles synthèse, cuisine et salon. La feuille chambre ne doit pas être enregistrée car le total est à 0€.

Je vous remercie d'avance pour le temps consacré !

21excel-forum.xlsm (10.43 Ko)

Hello,

Voici ce que je te propose (il faut modifier le chemin d'enregistrement)

R@g

43excel-forum.xlsm (23.90 Ko)

Bonjour Rag,

Ton code fonctionne ! mais je ne connais pas les fonctions que tu utilises et du coup j'ai du mal à le convertir dans mon fichier.

Il ne faut pas que tu m'explique tout mais presque ^^' (désolé) Pourquoi les variables I, J et Y ont un % ??
Je ne comprends pas non plus pourquoi le fait d'incrémenter des variables permet de faire ça. Oo

Si tu as le temps de m'expliquer.

En tout cas ça marche ! Merci beaucoup.

Hello

Voici ce que je peux faire pour toi :

Sub Macro1()

Dim i%, y%, j% 'Le % indique que ce sont des variable integer ==> i% = i as integer
Dim Tab_Sh, Feuille
Dim Aucun_Positif As Boolean ' Variable boolean pour tester si on a au minimum une valeur positive

Aucun_Positif = False
With Sheets("synthèse") 'Avec la feuille "synthèse"
    i = 3 ' Premiere ligne tu tableau de synthese sans les en-tetes
    y = 0
    ' Boucle de compteur d'element du tableau Tab_Sh (je cherche à savoir combien j'ai de valeur supérieures à zéro)
    While Not .Cells(i, 1) = "" 'Tant que la cellule n'est pas vide (la cellule ligne =i colonne = 1 )
        If .Cells(i, 2) > 0 Then y = y + 1 'Si la colonne 2 est supérieur à 0, y vaut y +1
        i = i + 1 ' ligne suivante
    Wend
    If y = 0 Then Aucun_Positif = True 'Si aucune feuille ne possède de resultat  passage du boolean à vrai
    If Not Aucun_Positif = True Then 'Si le boolean est faux on continu
        y = y - 1 ' je soustrait 1 à ma variable car mon tableau Tab_Sh commence à 0
        ReDim Tab_Sh(y) 'Je redimensionne mon tableau en fonction de mon compteur de valeur supérieur à 0
        i = 3 ' On reviens au debut du tableau de la feuille synthèse
        j = 0 'Indice  tableau Tab_Sh de départ
        While Not .Cells(i, 1) = "" 'Tant que la cellule n'est pas vide (la cellule ligne =i colonne = 1 )
            If .Cells(i, 2) > 0 Then 'Si valeur supérieure à 0
                Tab_Sh(j) = .Cells(i, 1) ' on ajoute le nom de la feuille qui est en colonne 1 de la feuille synthèse
                j = j + 1 ' augmentation de l'indice du tableau Tab_Sh
            End If
            i = i + 1 'Ligne suivante
        Wend
        Sheets(Tab_Sh).Select 'Selection de toutes les feuille du tableau Tab_Sh
        Application.DisplayAlerts = False 'Desactive les alertes
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Downloads\excel-forum.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True 'Export des feuilles au format PDF
        Application.DisplayAlerts = True 'Remet les alertes
        MsgBox "Export PDF réussi" 'Message de fin
    End If
End With

R@g

Salut Rag !

Désolé, mais je bloque sur la seule ligne que tu n'as pas décrite ^^' Mais je me situe déjà beaucoup mieux. Je vois bien le fait que tu travail sur une feuille, dans un tableau que tu nommes "Tab_Sh". Mais je n'arrive pas à trouver/comprendre ce point.

Comment utilises-tu la variable Tab_Sh, ?? Tu as crée un tableau quelque part ? Je n'arrive pas à adapter ce point sur mon programme...

Lorsque que je lance le programme j'ai une erreur sur la ligne : " Sheets(Tab_Sh).Select " à la fin (err 9 => indice appartient pas à la sélection). Donc il me manque une pièce au puzzle.

Encore merci pour le temps consacré.

C'est un tableau virtuel, il n'existe que lors de l'execution du code et se supprime à la fin du code.

Dedans je stocke les noms des feuilles qui se trouvent la feuille 1 à partir de la ligne 3. et je stock uniquement les feuilles avec un montant supérieur à 0

Bonjour Rag !

Ca marche nikel !! j'ai réussis à l'adapter et il fonctionne trop bien même !

Encore merci et bonne continuation à toi !

Rechercher des sujets similaires à "selectionner feuilles condition enregistrer format pdf"