Simplification code VBA

  • Initiateur de la discussion Initiateur de la discussion yeti_yeti
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Y

yeti_yeti

Guest
Bonjour à tous,

J'ai créé le code suivant mais je suis sûr qu'il existe un moyen plus "propre" de le faire.

Code:
If OptionButton1.Value = True Then
    With MultiPage1
        .Pages("Geographic").Enabled = True
        .Pages("Product").Enabled = True
        .Pages("Order").Enabled = True
        .Pages("Shipping").Enabled = True
        .Pages("Invoicing").Enabled = True
        .Pages("Wholesaler").Enabled = True
        .Pages("Other").Enabled = True
        .Pages("Actions").Enabled = False
        .Pages("Search").Enabled = False
    End With
End If

J'ai pensé que d'ajouter des virgules aiderait mais apparemment VBA n'accepte pas cette syntaxe:

Code:
If OptionButton1.Value = True Then
    With MultiPage1
        .Pages("Geographic", "Product", "Order", "Shipping", "Invoicing", "Wholesaler", "Other").Enabled = True
        .Pages("Actions", "Search").Enabled = False
    End With
End If

Une petite idée?

Merci 🙂

YeTi
 
Re : Simplification code VBA

bonjour Yeti-Yeti, Porcinet😀

Essaie ceci:
Attention dans ces lignes c'est le nom de la page qui est comparé.
Si les noms sont dans la propriété caption de chaque page alors il faut changer pge.Name par pge.Caption
Code:
Private Sub OptionButton1_Change()
Dim pge As Page
For Each pge In MultiPage1.Pages
   'Si le nom de la page est dans la chaine de caractère
    If InStr(1, "Geographic,Product,Order,Shipping,Invoicing,Wholesaler,Other", pge.[SIZE=3][COLOR=red]Name[/COLOR][/SIZE]) > 0 Then
        pge.Enabled = OptionButton1.Value
    Else
        pge.Enabled = Not OptionButton1.Value
    End If
Next
End Sub

A bientôt
 
Re : Simplification code VBA

Salut Yeti-Yeti, Porcinet, hasco 😀

hasco, désolé mais tu vas croire que je t'en veux...je t'assure que ce n'est pas le cas
- L'idée que tu proposes est astucieuse malheureusement le code va effectuer l'inverse car l'état qui va être attribué au Page va être celui avant que le optionButton ne change soit False 🙁
- Je pense aussi que l'événement Change() serait plus approprié dans le cadre d'une checkbox surtout. Mais faute de plus d'info de Yeti-yeti, je ne préjugerai donc pas.

Sinon j'étais partis pour donner une réponse similaire à la tienne, finalement je propose à yeti-yeti une solution alternative, dans le même esprit, dont l'avantage pourrait être de ne pas passer en revue toutes les pages (mais on sait pas s'il s'agit ici de toutes les pages).

Code:
Dim myArray As Variant
Dim i As Integer
myArray = Array("Geographic", "Product", "Order", "Shipping", "Invoicing", "Wholesaler", "Other")
If OptionButton1.Value Then
    For i = 1 To UBound(myArray)
        MultiPage1.Pages(i).Enabled = True
    Next
End If

dans le cas où tu voudrais activer toutes les pages, je te conseille un truc du genre:
Code:
Dim i As Integer
With MultiPage1
     For i = 0 To .Pages.Count - 1
          .Pages(i).Enabled = True
     Next
End With

Bon courage
 
Re : Simplification code VBA

Re,

Jam, puisque apparement tu demandes justification des choix que je fait dans les réponses:

jam à dit:
L'idée que tu proposes est astucieuse malheureusement le code va effectuer l'inverse car l'état qui va être attribué au Page va être celui avant que le optionButton ne change soit False .

C'est volontairement que j'ai choisis cette option.
jam à dit:
Mais faute de plus d'info de Yeti-yeti
il nous faut donc bien choisir une option en fonction de ce que l'on sent en attendant ses réponses.

De plus pour inverser les conditions il suffit de déplacer le Not OptionButton1.Value au bon endroit.

jam à dit:
Toutes les bonnes idées ne sont pas dans la même tête.

C'est effectivement le cas et c'est pour cela que je ne me permettrais pas de juger de la qualité d'une réponse, ni de théoriser sur ce qui serait possible ou non en étalant mon savoir.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
678
Réponses
7
Affichages
378
Réponses
5
Affichages
926
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour