VBA Sélection feuille active Aléatoire

bonjour je n'ai pas réussi à trouver sur le forum la réponse a ma question j'espère l'obtenir avec ce post merci d'avance pour votre aide

si dessous mon code pour générer un pdf en fonction des feuilles actives

Dans ce code il y a que 2 conditions mes cela peux monter a 20

la feuille accueil doit toujours rester visible mes ne jamais être pris en compte dans la génération du pdf, il ce peux que les deux feuilles ne soit pas

avce ce bout tous fonctionne mes si une des feuille n'est pas active alors ca bug

Sheets(Array("PLATS TEMOINS", "EXCEDENTS")).Select

Sub Boucle_les_feuilles_sélectionnées_Enregistrer_au_format_PDF()

'bloc les animations
Application.ScreenUpdating = False

'Creation variables
Dim ws As Worksheet
Dim sheetArray As Variant

'vérifie que la valeur est vrai
If Sheets("Accueil").Range("D41") = "Vrai" Then
Sheets("PLATS TEMOINS").Visible = xlSheetVisible
Sheets("PLATS TEMOINS").Activate
    End If
 If Sheets("Accueil").Range("D44") = "Vrai" Then
Sheets("EXCEDENTS").Visible = xlSheetVisible
Sheets("EXCEDENTS").Activate
    End If

 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
je souhaiterais sélectionnée toute les feuilles sauf la feuille accueil"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 "
'Capturer les feuilles sélectionnées
Set sheetArray = ActiveWindow.SelectedSheets

'Boucle à travers chaque feuille de calcul sélectionnée
For Each ws In sheetArray
    ws.Select
    ws.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "/" & ws.Name & ".pdf"
Next ws

'Resélectionnez les feuilles sélectionnées
sheetArray.Select

 'laisse visible la page d'acceuil uniquement
   For Each ws In Sheets
                If ws.Name <> "Accueil" Then ws.Visible = False
            Next ws
'Réactive les animations
Application.ScreenUpdating = True
End Sub

bonjour,

essaie ceci

Sub Boucle_les_feuilles_sélectionnées_Enregistrer_au_format_PDF()

    'bloc les animations
    Application.ScreenUpdating = False

    'Creation variables
    Dim ws As Worksheet
    Dim sheetArray As Variant

    'vérifie que la valeur est vrai
    If Sheets("Accueil").Range("D41") = "Vrai" Then 'si chaine de caractère ="Vrai"
     'If Sheets("Accueil").Range("D41") Then 'si booléen VRAI ou FAUX
        Sheets("PLATS TEMOINS").Visible = xlSheetVisible
    End If
    If Sheets("Accueil").Range("D44") = "Vrai" Then
        Sheets("EXCEDENTS").Visible = xlSheetVisible
    End If

    '"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    'je souhaiterais sélectionner toutes les feuilles sauf la feuille accueil"
    '"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    '"
    'Capturer les feuilles sélectionnées

    'Boucle à travers chaque feuille de calcul sélectionnée
    For Each ws In Worksheets
        If ws.Name <> "Accueil" Then
            ws.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=ThisWorkbook.Path & "/" & ws.Name & ".pdf"
        End If
    Next ws

    'Resélectionnez les feuilles sélectionnées

    'laisse visible la page d'acceuil uniquement
    For Each ws In Worksheets
        If ws.Name <> "Accueil" Then ws.Visible = False
    Next ws
    'Réactive les animations
    Application.ScreenUpdating = True
End Sub

bonjour H2so4 merci pour ta réactivité

mes cela ne fonctionne pas le message suivant apparait car les feuille ne sont sélectionner ton effectue juste un balayage

j'ai tenter de mettre ws.select mes ca ne marcha pas non plus

image image

apres réflexion je pense que je devrais boucler sur le numéro des feuilles active mes je n'arrive pas a trouver mon bonheur

si quelqu'un connait la procédure je suis preneur et l'en remercie d'avance

Bonjour,

je me suis basé sur ceci

'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

'je souhaiterais sélectionner toutes les feuilles sauf la feuille accueil"

'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

c'est ce que fait la macro proposée.

si tu veux exporter toutes les feuilles sélectionnées, puis les rendre invisibles,( sauf accueil)

Sub Boucle_les_feuilles_sélectionnées_Enregistrer_au_format_PDF()

    'bloc les animations
    Application.ScreenUpdating = False

    'Creation variables
    Dim ws As Worksheet
    Dim sheetArray As Variant

    'vérifie que la valeur est vrai
    If Sheets("Accueil").Range("D41") = "Vrai" Then 'si chaine de caractère ="Vrai"
        'If Sheets("Accueil").Range("D41") Then 'si booléen VRAI ou FAUX
        Sheets("PLATS TEMOINS").Visible = xlSheetVisible
    End If
    If Sheets("Accueil").Range("D44") = "Vrai" Then
        Sheets("EXCEDENTS").Visible = xlSheetVisible
    End If
    listesheets = "PLATS TEMOINS,EXCEDENTS"

    '"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    'je souhaiterais sélectionner toutes les feuilles sélectionnées + plats temoins et excedents, sauf la feuille accueil"
    '"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    '"
    'Capturer les feuilles sélectionnées

    'Boucle à travers chaque feuille de calcul sélectionnée
    For Each ws In ActiveWindow.SelectedSheets
        If ws.Name <> "Accueil" Then
            listesheets = listesheets & "," & ws.Name
        End If
    Next ws
    For Each wsn In Split(listesheets, ",")
        Set ws = Sheets(wsn)
        ws.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "/" & ws.Name & ".pdf"
Next wsn

'Resélectionnez les feuilles sélectionnées

'laisse visible la page d'acceuil uniquement
For Each ws In Worksheets
    If ws.Name <> "Accueil" Then ws.Visible = False
Next ws
'Réactive les animations
Application.ScreenUpdating = True
End Sub

si tu veux exporter uniquement plats temoins et excedents

Sub Boucle_les_feuilles_sélectionnées_Enregistrer_au_format_PDF()

    'bloc les animations
    Application.ScreenUpdating = False

    listesheets = "PLATS TEMOINS,EXCEDENTS"

    For Each wsn In Split(listesheets, ",")
        Set ws = Sheets(wsn)
        ws.Visible = xlSheetVisible
        ws.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "\" & wsn & ".pdf"
        ws.Visible = False
    Next wsn

    'Réactive les animations
    Application.ScreenUpdating = True
End Sub

Merci H2so4 c'est exactement cela que je souhaitais désolé pour la mauvaise formulation

Rechercher des sujets similaires à "vba selection feuille active aleatoire"