Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Tous les controles d'un frame sauf les labels

  • Initiateur de la discussion Initiateur de la discussion zeltron
  • 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 !

zeltron

XLDnaute Occasionnel
Bonjour à tout le forum.

Voici mon pb:

J'ai un USF contenant notament un frame avec différents controles: checkbox, textboxs, optionbuttons ect.. et des labels.

J'aimerais savoir si il est possible de dire en code VBA, à l'initialisation du USF; mettre tous les controles du Frame1 à enabled=false sauf les labels.

Quelquechose du genre ( ce code et fictif, il ne fonctionne pas):

Private Sub UserForm_Initialize()
With Frame1.controls
.enabled=false
End With
End sub

'Mais sauf les labels

Avez vous une idée?

Merci d'avance

Zeltron
 
Re : Tous les controles d'un frame sauf les labels

bonjour

a essayer :

Code:
Dim ctrl As Control

With Me.Frame1
    For Each ctrl In .Controls
        ctrl.Enabled = Left(ctrl.Name, 5) = "Label"
    Next ctrl
End With

salut
 
Re : Tous les controles d'un frame sauf les labels

bonjour zeltron
Salut Hervé

Comme les carabiniers !!

Code:
Private Sub UserForm_Initialize()
For Each Control In UserForm1.Controls
   If Left(Control.Name, 5) <> "Label" Then
     Control.Enabled = False
   End If
Next Control
End Sub
 
Re : Tous les controles d'un frame sauf les labels

Merci Hervé pour ta réponse rapide, ca marche impec.

Cependant peux tu m'expliquer si tu as le temps la partie de ton code:
Left(ctrl.Name, 5) = "Label" ;afin que je puisse comprendre, car là je ne vois pas comment cela arrive à indiquer de mettre les control à enabled = false, et de plus a quoi correspond le "5"?

Merci d'avance

Zeltron
 
Re : Tous les controles d'un frame sauf les labels

re zeltron, salut pierrejean

Ce type de syntaxe ce lit de droite à gauche :

Left(ctrl.Name, 5) = "Label" renvoi VRAI ou FAUX suivant les 5 premieres lettres du nom du controle.

donc si le nom ne commence pas par "label" le code renvoi faux à ctrl.enabled.

pierrejean te propose une autre solution, identique dans son raisonnement à la mienne.

si tu as changé les noms de tes controles, tu peux essayer comme ceci :

Code:
Dim ctrl As Control

With Me.Frame1
    For Each ctrl In .Controls
        ctrl.Enabled = TypeName(ctrl) = "Label"
    Next ctrl
End With

salut
 
Re : Tous les controles d'un frame sauf les labels

Merci Hervé pour tes explications on ne peut + précises. Merci Pierre Jean pour cette autre type de code.

1 question; 3 solutions différentes, on ne peut rêver mieux pour s'améliorer efficacement en VBA!!

Merci encore à vous deux.
Bonne journée.

Zeltron
 
- 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

Discussions similaires

Réponses
3
Affichages
430
D
Réponses
1
Affichages
1 K
Disten
D
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…