OVH Cloud OVH Cloud

Valeur d'un bouton d'option

4 réponses
Avatar
David T.
Bonjour à tous
Etant novice en macro, je repose ma question différement

Dans cette procédure ci-dessous (récupérée sur le site de frédéric),
j'aimerais récupérer la valeur des boutons d'option et l'incrire dans la
cellule P2 de la feuille active.
Je pense que ceci doit être modifié mais je sais pas faire.

Worksheets(PrintDlg.OptionButtons(i).Caption).Activate

Merci de votre aide
Salutations
David

La procédure complète :

Sub Selection_Mois()
' Permet l'affichage d'une boîte de dialogue avec les noms
' des onglets

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
For i = 4 To ActiveWorkbook.Worksheets.Count
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 78, TopPos, 150, 16.5
PrintDlg.OptionButtons(SheetCount).Text = _
CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Then _
PrintDlg.OptionButtons(SheetCount).Value = xlOn
TopPos = TopPos + 13
End If
Next i

' Positionne les boutons OK et Annuler
PrintDlg.Buttons.Left = 240

' Dimensionne la hauteur, la largeur et le titre de la bte de dialogue
With PrintDlg.DialogFrame
.Height = Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width = 250
.Caption = "Sélectionez un mois - A.T.S.U. 02"
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

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
--
direction-ternoise@(supprimerceci)wanadoo.fr

4 réponses

Avatar
papou
Bonjour David
Dim LaF As String
LaF = PrintDlg.OptionButtons(i).Caption
Worksheets(LaF).Activate

PS : As tu absolument besoin d'activer ta feuille ?

Cordialement
Pascal

"David T." <direction-ternoise@(enlever)wanadoo.fr> a écrit dans le message
de news:ebk9QgT$
Bonjour à tous
Etant novice en macro, je repose ma question différement

Dans cette procédure ci-dessous (récupérée sur le site de frédéric),
j'aimerais récupérer la valeur des boutons d'option et l'incrire dans la
cellule P2 de la feuille active.
Je pense que ceci doit être modifié mais je sais pas faire.

Worksheets(PrintDlg.OptionButtons(i).Caption).Activate

Merci de votre aide
Salutations
David

La procédure complète :

Sub Selection_Mois()
' Permet l'affichage d'une boîte de dialogue avec les noms
' des onglets

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
For i = 4 To ActiveWorkbook.Worksheets.Count
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 78, TopPos, 150, 16.5
PrintDlg.OptionButtons(SheetCount).Text = _
CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Then _
PrintDlg.OptionButtons(SheetCount).Value = xlOn
TopPos = TopPos + 13
End If
Next i

' Positionne les boutons OK et Annuler
PrintDlg.Buttons.Left = 240

' Dimensionne la hauteur, la largeur et le titre de la bte de dialogue
With PrintDlg.DialogFrame
.Height = Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width = 250
.Caption = "Sélectionez un mois - A.T.S.U. 02"
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

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
--
direction-ternoise@(supprimerceci)wanadoo.fr




Avatar
Pascal Engelmajer
Salut,
l'objet dont tu cherche la valeur est
PrintDlg.OptionButtons(i)
la propriété PrintDlg.OptionButtons(i).Checked
pour la cellule A1 et le bouton i
[A1]=PrintDlg.OptionButtons(i).Checked
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"David T." <direction-ternoise@(enlever)wanadoo.fr> a écrit dans le message
de news: ebk9QgT$
Bonjour à tous
Etant novice en macro, je repose ma question différement

Dans cette procédure ci-dessous (récupérée sur le site de frédéric),
j'aimerais récupérer la valeur des boutons d'option et l'incrire dans la
cellule P2 de la feuille active.
Je pense que ceci doit être modifié mais je sais pas faire.

Worksheets(PrintDlg.OptionButtons(i).Caption).Activate

Merci de votre aide
Salutations
David

La procédure complète :

Sub Selection_Mois()
' Permet l'affichage d'une boîte de dialogue avec les noms
' des onglets

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
For i = 4 To ActiveWorkbook.Worksheets.Count
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 78, TopPos, 150, 16.5
PrintDlg.OptionButtons(SheetCount).Text = _
CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Then _
PrintDlg.OptionButtons(SheetCount).Value = xlOn
TopPos = TopPos + 13
End If
Next i

' Positionne les boutons OK et Annuler
PrintDlg.Buttons.Left = 240

' Dimensionne la hauteur, la largeur et le titre de la bte de dialogue
With PrintDlg.DialogFrame
.Height = Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width = 250
.Caption = "Sélectionez un mois - A.T.S.U. 02"
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

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
--
direction-ternoise@(supprimerceci)wanadoo.fr




Avatar
David T.
Bonsoir et merci papou

En utilisant ceci, cela fonctionne à merveille

[P2] = PrintDlg.OptionButtons(i).Caption

Encore merci
Salutations


"papou" <DesolePasDeMail> a écrit dans le message de
news:OTCiqrT$
Bonjour David
Dim LaF As String
LaF = PrintDlg.OptionButtons(i).Caption
Worksheets(LaF).Activate

PS : As tu absolument besoin d'activer ta feuille ?

Cordialement
Pascal

"David T." <direction-ternoise@(enlever)wanadoo.fr> a écrit dans le
message

de news:ebk9QgT$
Bonjour à tous
Etant novice en macro, je repose ma question différement

Dans cette procédure ci-dessous (récupérée sur le site de frédéric),
j'aimerais récupérer la valeur des boutons d'option et l'incrire dans la
cellule P2 de la feuille active.
Je pense que ceci doit être modifié mais je sais pas faire.

Worksheets(PrintDlg.OptionButtons(i).Caption).Activate

Merci de votre aide
Salutations
David

La procédure complète :

Sub Selection_Mois()
' Permet l'affichage d'une boîte de dialogue avec les noms
' des onglets

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
For i = 4 To ActiveWorkbook.Worksheets.Count
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 78, TopPos, 150, 16.5
PrintDlg.OptionButtons(SheetCount).Text = _
CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Then _
PrintDlg.OptionButtons(SheetCount).Value = xlOn
TopPos = TopPos + 13
End If
Next i

' Positionne les boutons OK et Annuler
PrintDlg.Buttons.Left = 240

' Dimensionne la hauteur, la largeur et le titre de la bte de dialogue
With PrintDlg.DialogFrame
.Height = Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width = 250
.Caption = "Sélectionez un mois - A.T.S.U. 02"
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

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
--
direction-ternoise@(supprimerceci)wanadoo.fr








Avatar
David T.
Bonsoir et merci pascal

En utilisant ceci, cela fonctionne à merveille

[P2] = PrintDlg.OptionButtons(i).Caption

Encore merci
Salutations

"Pascal Engelmajer" a écrit dans le
message de news:eebURvT$
Salut,
l'objet dont tu cherche la valeur est
PrintDlg.OptionButtons(i)
la propriété PrintDlg.OptionButtons(i).Checked
pour la cellule A1 et le bouton i
[A1]=PrintDlg.OptionButtons(i).Checked
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"David T." <direction-ternoise@(enlever)wanadoo.fr> a écrit dans le
message

de news: ebk9QgT$
Bonjour à tous
Etant novice en macro, je repose ma question différement

Dans cette procédure ci-dessous (récupérée sur le site de frédéric),
j'aimerais récupérer la valeur des boutons d'option et l'incrire dans la
cellule P2 de la feuille active.
Je pense que ceci doit être modifié mais je sais pas faire.

Worksheets(PrintDlg.OptionButtons(i).Caption).Activate

Merci de votre aide
Salutations
David

La procédure complète :

Sub Selection_Mois()
' Permet l'affichage d'une boîte de dialogue avec les noms
' des onglets

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
For i = 4 To ActiveWorkbook.Worksheets.Count
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 78, TopPos, 150, 16.5
PrintDlg.OptionButtons(SheetCount).Text = _
CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Then _
PrintDlg.OptionButtons(SheetCount).Value = xlOn
TopPos = TopPos + 13
End If
Next i

' Positionne les boutons OK et Annuler
PrintDlg.Buttons.Left = 240

' Dimensionne la hauteur, la largeur et le titre de la bte de dialogue
With PrintDlg.DialogFrame
.Height = Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width = 250
.Caption = "Sélectionez un mois - A.T.S.U. 02"
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

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
--
direction-ternoise@(supprimerceci)wanadoo.fr