Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

amélioration de code-onglets

3 réponses
Avatar
Sunburn
Bonjour,
j'ai ce code qui me permet d'imprimer tous mes onglets, du n°17 au dernier,
avec une condition.
Comment prévoir plutot, une impression de l'onglet "DA" au dernier ?
comme ça, si je dois rajouter un onglet avant "DA", mon impression ne
plantera pas.
Merci de votre aide.
YANN

----
Case "Le dossier de contrôle + les FTS + la balance"
'Imprime le dossier de contrôle annuel + balance + fiches suiveuse, de la
page 17 à la dernière page
ActiveWorkbook.Unprotect
Application.Dialogs(xlDialogPrinterSetup).Show 'lance la boite de dialogue
Choix de l'imprimante
NP = Worksheets.Count
For I = 17 To NP 'imprime les onglets 17 au dernier, supposant que le 17 est
l'onglet DA
Set Sh = Sheets(I)
If Not UCase(Trim(Sh.Cells(4, 1).Value)) = "NA" Then
Debug.Print Sh.Name
memVisible = Sh.Visible
Sh.Visible = True
Sh.PrintOut
Sh.Visible = memVisible
End If
Next
Unload Me
ActiveWorkbook.Protect Structure:=True ', Windows:=True 'protection du
classeur

-------

3 réponses

Avatar
Daniel.C
Bonjour.
Non testé :

Case "Le dossier de contrôle + les FTS + la balance"
'Imprime le dossier de contrôle annuel + balance + fiches suiveuse, de
la page 17 à la dernière page
ActiveWorkbook.Unprotect
Application.Dialogs(xlDialogPrinterSetup).Show 'lance la boite de
dialogue Choix de l'imprimante
NP = Worksheets.Count
For I = shets("DA").Index To NP 'imprime les onglets 17 au dernier,
supposant que le 17 est l 'onglet DA
Set Sh = Sheets(I)
If Not UCase(Trim(Sh.Cells(4, 1).Value)) = "NA" Then
Debug.Print Sh.Name
memVisible = Sh.Visible
Sh.Visible = True
Sh.PrintOut
Sh.Visible = memVisible
End If
Next
Unload Me
ActiveWorkbook.Protect Structure:=True ', Windows:=True 'protection du
classeur

Cordialement.
Daniel

Bonjour,
j'ai ce code qui me permet d'imprimer tous mes onglets, du n°17 au dernier,
avec une condition.
Comment prévoir plutot, une impression de l'onglet "DA" au dernier ?
comme ça, si je dois rajouter un onglet avant "DA", mon impression ne
plantera pas.
Merci de votre aide.
YANN

----
Case "Le dossier de contrôle + les FTS + la balance"
'Imprime le dossier de contrôle annuel + balance + fiches suiveuse, de la
page 17 à la dernière page
ActiveWorkbook.Unprotect
Application.Dialogs(xlDialogPrinterSetup).Show 'lance la boite de dialogue
Choix de l'imprimante
NP = Worksheets.Count
For I = 17 To NP 'imprime les onglets 17 au dernier, supposant que le 17 est
l'onglet DA
Set Sh = Sheets(I)
If Not UCase(Trim(Sh.Cells(4, 1).Value)) = "NA" Then
Debug.Print Sh.Name
memVisible = Sh.Visible
Sh.Visible = True
Sh.PrintOut
Sh.Visible = memVisible
End If
Next
Unload Me
ActiveWorkbook.Protect Structure:=True ', Windows:=True 'protection du
classeur

-------


Avatar
FFO
Salut à toi

Dans les lignes d'instruction :
NP = Worksheets.Count
For I = 17 To NP

Tu considères des numéros d'onglets et donc logiquement dire du 17° au dernier

Lorque tu veux réaliser la même démarche en te basant sur les noms des
Onglets tu pourras difficilement dire de l'onglet "DA" au dernier : dernier
est une position numérique dans une série "DA" est un nom d'onglet

La seule possibilité et de repartir du code :

For I = 17 To NP 'imprime les onglets 17 au dernier, supposant que le 17 est
l'onglet DA

et d'exclure ou de n'accepter que certains en fonction de leur nom :

Set Sh = Sheets(I)
If Sheets(I).Name = "DA" (Onglet portant le nom "DA")
Ou
If Sheets(I).Name Like "DA*" (Onglet dont le nom commence par "DA")
Ou
If Sheets.Name Like "*DA*" (Onglet dont le nom contient "DA")
Ou
If Sheets(I).Name Like "*DA" (Onglet dont le nom se termine par "DA")

Etc....

Ou les énumerer ainsi :

If Sheets(I).Name = "DA" or Sheets(I).Name = "DB" or Sheets(I).Name = "DC"
etc....

A toi de voir mais on ne peux pas mélanger une logique numérique avec des noms
Avatar
Sunburn
Impecable, j'ai testé et cela fonctionne.

Merci.
YANN


Case "Le dossier de contrôle + les FTS + la balance"
ActiveWorkbook.Unprotect
Application.Dialogs(xlDialogPrinterSetup).Show 'lance la boite de
dialogue Choix de l'imprimante
NP = Worksheets.Count
For I = sheets("DA").Index To NP
Set Sh = Sheets(I)
If Not UCase(Trim(Sh.Cells(4, 1).Value)) = "NA" Then
Debug.Print Sh.Name
memVisible = Sh.Visible
Sh.Visible = True
Sh.PrintOut
Sh.Visible = memVisible
End If
Next
Unload Me
ActiveWorkbook.Protect Structure:=True ', Windows:=True 'protection du
classeur