j'ai trouv=E9 ce code g=E9nial sur le net (merci a eux), le seul hic et
que j'ai plus de 40 feuilles.
Et donc la boite qui s'affiche ne comprend qu'une colonne . J'aimerais
qu'il y est plusieur colonnes afin qu'il puisse avoir plus de 100
feuilles.
MErci a tous
Sub AccesSection()
'code diffus=E9 par Ren=E9 Roy, mpfe
' Permet l'affichage d'une bo=EEte de dialogue pour l'acc=E8s
' =E0 la feuille de son choix
Dim i As Integer
Dim TopPos As Integer
Dim SheetCount As Integer
Dim PrintDlg As DialogSheet
Dim CurrentSheet, FeuilleD=E9part As Worksheet
Dim cb As OptionButton
Application.ScreenUpdating =3D False
' Ajoute une feuille de dialogue temporaire
Set CurrentSheet =3D ActiveSheet
Set FeuilleD=E9part =3D ActiveSheet
Set PrintDlg =3D ActiveWorkbook.DialogSheets.Add
PrintDlg.Visible =3D xlSheetHidden
SheetCount =3D 0
' Ajoute les boutons d'option
TopPos =3D 40
For i =3D 1 To ActiveWorkbook.Worksheets.Count
Set CurrentSheet =3D ActiveWorkbook.Worksheets(i)
' Ne tient pas compte des feuilles vide ou masqu=E9es
If Application.CountA(CurrentSheet.Cells) <> 0 And _
CurrentSheet.Visible Then
SheetCount =3D SheetCount + 1
PrintDlg.OptionButtons.Add 78, TopPos, 150, 16.5
PrintDlg.OptionButtons(SheetCount).Text =3D _
CurrentSheet.Name
If CurrentSheet.Name =3D FeuilleD=E9part.Name Then _
PrintDlg.OptionButtons(SheetCount).Value =3D xlOn
TopPos =3D TopPos + 13
End If
Next i
' Positionne les boutons OK et Annuler
PrintDlg.Buttons.Left =3D 240
' Dimensionne la hauteur, la largeur et le titre de la bte de
dialogue
With PrintDlg.DialogFrame
.Height =3D Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width =3D 230
.Caption =3D "A quelle feuille souhaitez-vous acc=E9der ? "
End With
' Change l'ordre de tabulation des boutons OK et Annuler
' afin de donner le focus au premier bouton d'option
PrintDlg.Buttons("Button 2").BringToFront
PrintDlg.Buttons("Button 3").BringToFront
' Affiche la bo=EEte de dialogue
FeuilleD=E9part.Activate
Application.ScreenUpdating =3D True
If SheetCount <> 0 Then
If PrintDlg.Show Then
Application.ScreenUpdating =3D False
For i =3D 1 To SheetCount
If PrintDlg.OptionButtons(i).Value =3D xlOn Then
Worksheets(PrintDlg.OptionButtons(i).Caption).Activate
'autre code selon besoin
End If
Next i
End If
Else
MsgBox "Toutes les feuilles sont vides."
End If
' Supprime la feuille de dialogue temporaire (sans message
d'avertissement)
Application.DisplayAlerts =3D False
PrintDlg.Delete
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
isabelle
bonjour S3com,
je l'ai modifié comme ça,
Sub AccesSection() 'code diffusé par René Roy, mpfe ' Permet l'affichage d'une boîte de dialogue pour l'accès ' à la feuille de son choix Dim i As Integer Dim TopPos As Integer Dim SheetCount As Integer Dim PrintDlg As DialogSheet Dim CurrentSheet, FeuilleDépart As Worksheet Dim cb As OptionButton Application.ScreenUpdating = False
' Ajoute une feuille de dialogue temporaire Set CurrentSheet = ActiveSheet Set FeuilleDépart = ActiveSheet Set PrintDlg = ActiveWorkbook.DialogSheets.Add PrintDlg.Visible = xlSheetHidden
SheetCount = 0
' Ajoute les boutons d'option TopPos = 40 colonne = 78 For i = 1 To ActiveWorkbook.Worksheets.Count x = x + 1 ' x servira à incrémenter le nombre de colonne au besoin Set CurrentSheet = ActiveWorkbook.Worksheets(i) ' Ne tient pas compte des feuilles vide ou masquées If Application.CountA(CurrentSheet.Cells) <> 0 And _ CurrentSheet.Visible Then SheetCount = SheetCount + 1 PrintDlg.OptionButtons.Add colonne, TopPos, 150, 16.5 PrintDlg.OptionButtons(SheetCount).Text = _ CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Or Not x >= 40 Then _ PrintDlg.OptionButtons(SheetCount).Value = xlOn TopPos = TopPos + 13 End If
' vérifie le nombre de bouton sur la colonne et ' incrémente le nombre de colonne au besoin
If x >= 20 Then TopPos = 40: colonne = colonne + 60: x = 0
Next i
' Positionne les boutons OK et Annuler PrintDlg.Buttons.Left = (150 + (ActiveWorkbook.Worksheets.Count / 20) * 50)
' Dimensionne la hauteur, la largeur et le titre de la bte de 'dialogue With PrintDlg.DialogFrame .Height = 300 .Width = 150 + (ActiveWorkbook.Worksheets.Count / 20) * 50 .Caption = "A quelle feuille souhaitez-vous accéder ? " End With
' Change l'ordre de tabulation des boutons OK et Annuler ' afin de donner le focus au premier bouton d'option PrintDlg.Buttons("Button 2").BringToFront PrintDlg.Buttons("Button 3").BringToFront
' Affiche la boîte de dialogue FeuilleDépart.Activate Application.ScreenUpdating = True If SheetCount <> 0 Then If PrintDlg.Show Then Application.ScreenUpdating = False For i = 1 To SheetCount If PrintDlg.OptionButtons(i).Value = xlOn Then Worksheets(PrintDlg.OptionButtons(i).Caption).Activate 'autre code selon besoin End If Next i End If Else MsgBox "Toutes les feuilles sont vides." End If
' Supprime la feuille de dialogue temporaire (sans message 'd 'avertissement) Application.DisplayAlerts = False PrintDlg.Delete End Sub
isabelle
Bonjour,
j'ai trouvé ce code génial sur le net (merci a eux), le seul hic et que j'ai plus de 40 feuilles. Et donc la boite qui s'affiche ne comprend qu'une colonne . J'aimerais qu'il y est plusieur colonnes afin qu'il puisse avoir plus de 100 feuilles.
MErci a tous
bonjour S3com,
je l'ai modifié comme ça,
Sub AccesSection()
'code diffusé par René Roy, mpfe
' Permet l'affichage d'une boîte de dialogue pour l'accès
' à la feuille de son choix
Dim i As Integer
Dim TopPos As Integer
Dim SheetCount As Integer
Dim PrintDlg As DialogSheet
Dim CurrentSheet, FeuilleDépart As Worksheet
Dim cb As OptionButton
Application.ScreenUpdating = False
' Ajoute une feuille de dialogue temporaire
Set CurrentSheet = ActiveSheet
Set FeuilleDépart = ActiveSheet
Set PrintDlg = ActiveWorkbook.DialogSheets.Add
PrintDlg.Visible = xlSheetHidden
SheetCount = 0
' Ajoute les boutons d'option
TopPos = 40
colonne = 78
For i = 1 To ActiveWorkbook.Worksheets.Count
x = x + 1 ' x servira à incrémenter le nombre de colonne au besoin
Set CurrentSheet = ActiveWorkbook.Worksheets(i)
' Ne tient pas compte des feuilles vide ou masquées
If Application.CountA(CurrentSheet.Cells) <> 0 And _
CurrentSheet.Visible Then
SheetCount = SheetCount + 1
PrintDlg.OptionButtons.Add colonne, TopPos, 150, 16.5
PrintDlg.OptionButtons(SheetCount).Text = _
CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Or Not x >= 40 Then _
PrintDlg.OptionButtons(SheetCount).Value = xlOn
TopPos = TopPos + 13
End If
' vérifie le nombre de bouton sur la colonne et
' incrémente le nombre de colonne au besoin
If x >= 20 Then TopPos = 40: colonne = colonne + 60: x = 0
Next i
' Positionne les boutons OK et Annuler
PrintDlg.Buttons.Left = (150 + (ActiveWorkbook.Worksheets.Count / 20) * 50)
' Dimensionne la hauteur, la largeur et le titre de la bte de
'dialogue
With PrintDlg.DialogFrame
.Height = 300
.Width = 150 + (ActiveWorkbook.Worksheets.Count / 20) * 50
.Caption = "A quelle feuille souhaitez-vous accéder ? "
End With
' Change l'ordre de tabulation des boutons OK et Annuler
' afin de donner le focus au premier bouton d'option
PrintDlg.Buttons("Button 2").BringToFront
PrintDlg.Buttons("Button 3").BringToFront
' Affiche la boîte de dialogue
FeuilleDépart.Activate
Application.ScreenUpdating = True
If SheetCount <> 0 Then
If PrintDlg.Show Then
Application.ScreenUpdating = False
For i = 1 To SheetCount
If PrintDlg.OptionButtons(i).Value = xlOn Then
Worksheets(PrintDlg.OptionButtons(i).Caption).Activate
'autre code selon besoin
End If
Next i
End If
Else
MsgBox "Toutes les feuilles sont vides."
End If
' Supprime la feuille de dialogue temporaire (sans message
'd 'avertissement)
Application.DisplayAlerts = False
PrintDlg.Delete
End Sub
isabelle
Bonjour,
j'ai trouvé ce code génial sur le net (merci a eux), le seul hic et
que j'ai plus de 40 feuilles.
Et donc la boite qui s'affiche ne comprend qu'une colonne . J'aimerais
qu'il y est plusieur colonnes afin qu'il puisse avoir plus de 100
feuilles.
Sub AccesSection() 'code diffusé par René Roy, mpfe ' Permet l'affichage d'une boîte de dialogue pour l'accès ' à la feuille de son choix Dim i As Integer Dim TopPos As Integer Dim SheetCount As Integer Dim PrintDlg As DialogSheet Dim CurrentSheet, FeuilleDépart As Worksheet Dim cb As OptionButton Application.ScreenUpdating = False
' Ajoute une feuille de dialogue temporaire Set CurrentSheet = ActiveSheet Set FeuilleDépart = ActiveSheet Set PrintDlg = ActiveWorkbook.DialogSheets.Add PrintDlg.Visible = xlSheetHidden
SheetCount = 0
' Ajoute les boutons d'option TopPos = 40 colonne = 78 For i = 1 To ActiveWorkbook.Worksheets.Count x = x + 1 ' x servira à incrémenter le nombre de colonne au besoin Set CurrentSheet = ActiveWorkbook.Worksheets(i) ' Ne tient pas compte des feuilles vide ou masquées If Application.CountA(CurrentSheet.Cells) <> 0 And _ CurrentSheet.Visible Then SheetCount = SheetCount + 1 PrintDlg.OptionButtons.Add colonne, TopPos, 150, 16.5 PrintDlg.OptionButtons(SheetCount).Text = _ CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Or Not x >= 40 Then _ PrintDlg.OptionButtons(SheetCount).Value = xlOn TopPos = TopPos + 13 End If
' vérifie le nombre de bouton sur la colonne et ' incrémente le nombre de colonne au besoin
If x >= 20 Then TopPos = 40: colonne = colonne + 60: x = 0
Next i
' Positionne les boutons OK et Annuler PrintDlg.Buttons.Left = (150 + (ActiveWorkbook.Worksheets.Count / 20) * 50)
' Dimensionne la hauteur, la largeur et le titre de la bte de 'dialogue With PrintDlg.DialogFrame .Height = 300 .Width = 150 + (ActiveWorkbook.Worksheets.Count / 20) * 50 .Caption = "A quelle feuille souhaitez-vous accéder ? " End With
' Change l'ordre de tabulation des boutons OK et Annuler ' afin de donner le focus au premier bouton d'option PrintDlg.Buttons("Button 2").BringToFront PrintDlg.Buttons("Button 3").BringToFront
' Affiche la boîte de dialogue FeuilleDépart.Activate Application.ScreenUpdating = True If SheetCount <> 0 Then If PrintDlg.Show Then Application.ScreenUpdating = False For i = 1 To SheetCount If PrintDlg.OptionButtons(i).Value = xlOn Then Worksheets(PrintDlg.OptionButtons(i).Caption).Activate 'autre code selon besoin End If Next i End If Else MsgBox "Toutes les feuilles sont vides." End If
' Supprime la feuille de dialogue temporaire (sans message 'd 'avertissement) Application.DisplayAlerts = False PrintDlg.Delete End Sub
isabelle
Bonjour,
j'ai trouvé ce code génial sur le net (merci a eux), le seul hic et que j'ai plus de 40 feuilles. Et donc la boite qui s'affiche ne comprend qu'une colonne . J'aimerais qu'il y est plusieur colonnes afin qu'il puisse avoir plus de 100 feuilles.