IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Utilsation de mot dans un sub


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    paramédical
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : paramédical
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Par défaut Utilsation de mot dans un sub
    Bonsoir,
    je suis en train de m'arracher les cheveux (et j'en ai vraiment pas beaucoup à la base...) j'apprends excel en autodidacte et trouve plein d'infos sur votre site qui m'est très utile mais là je bloque.
    j'ai un userform qui contient 31 frames contenant chacune 4 checkbox 1 combobox (oui ça fait beaucoup) j'ai commencé à écrire le code mais il ny aurait-il pas un moyen d'automatiser les choses en utilisant for par exemple:
    for i=X to X (oui le même nombre que je souhaiterai récupérer dans le sub
    if me.controls("checkbox"& i)=...then ici peut-on utiliser les caractères du titre du sub pour continuer avec les autres me.controls("checkbox"& i+31).

    Je ne sais pas si j'ai été clair

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut
    bonjour prat974,

    j'ai pas trop compris où tu voulais en venir.
    mais en espérant que ça t'aide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Private Sub UserForm_Activate()
    Dim i As Long
    Dim j As Long
        For i = Me.Controls.Count - 1 To 0 Step -1
            'Attention la procédure est sensible à la casse.
            If TypeName(Me.Controls(i)) = "Frame" Then
                For j = Me.Controls(i).Controls.Count - 1 To 0 Step -1
                    If TypeName(Me.Controls(i).Controls(j)) = "CheckBox" Then
                        Call MaProcedure(Me.Controls(i).Controls(j))
                    ElseIf TypeName(Me.Controls(i).Controls(j)) = "ComboBox" Then
                        Call MaProcedure(Me.Controls(i).Controls(j))
                    End If
                Next j
            End If
        Next i
    End Sub
     
    Sub MaProcedure(MonCtrl As Control)
     
        MsgBox MonCtrl.Name
     
    End Sub

  3. #3
    Membre régulier
    Homme Profil pro
    paramédical
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : paramédical
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Par défaut merci
    Bonjour, merci pour ta réponse je regarde ça et je te tiens au courant.
    Bonne journée

  4. #4
    Membre régulier
    Homme Profil pro
    paramédical
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : paramédical
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Par défaut essai effectué
    en fait voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub ComboBox1_Change()  ' j'aimerai récupérer cette chaîne de caractères automatiquement et en récupérer le numéro
    Dim i As Integer
    For i = 1 To 1 ' pour le mettre ici 
    If ComboBox1 <> "" Then
        UserForm1.Controls("CheckBox" & i).Visible = False
        UserForm1.Controls("CheckBox" & i + 31).Visible = False
        UserForm1.Controls("CheckBox" & i + 62).Visible = False
        UserForm1.Controls("CheckBox" & i + 93).Visible = False
        Else
        UserForm1.Controls("CheckBox" & i).Visible = True
        UserForm1.Controls("CheckBox" & i + 31).Visible = True
        UserForm1.Controls("CheckBox" & i + 62).Visible = True
        UserForm1.Controls("CheckBox" & i + 93).Visible = True
        UserForm1.Controls("Combobox" & i) = ""
        End If
        Next
    End Sub


  5. #5
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut
    Avec ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub ComboBox2_Change()
        Call MaProcedureComboBox(Me.ActiveControl.ActiveControl.Name)
    End Sub
     
    Private Sub ComboBox1_Change()
        Call MaProcedureComboBox(Me.ActiveControl.ActiveControl.Name)
    End Sub
     
    Sub MaProcedureComboBox(NameCtrl As String)
    Dim NbrCBx As Long
    Dim i As Long
        NbrCBx = CLng(Right(NameCtrl, Len(NameCtrl) - 8)) ' Ici on récupéré le N° de la ComboBox
        For i = 1 To NbrCBx
            If ComboBox1 <> "" Then
                UserForm1.Controls("CheckBox" & i).Visible = False
                UserForm1.Controls("CheckBox" & i + 31).Visible = False
                UserForm1.Controls("CheckBox" & i + 62).Visible = False
                UserForm1.Controls("CheckBox" & i + 93).Visible = False
            Else
                UserForm1.Controls("CheckBox" & i).Visible = True
                UserForm1.Controls("CheckBox" & i + 31).Visible = True
                UserForm1.Controls("CheckBox" & i + 62).Visible = True
                UserForm1.Controls("CheckBox" & i + 93).Visible = True
                UserForm1.Controls("Combobox" & i) = ""
            End If
        Next
    End Sub
    petite explication du "Me.ActiveControl.ActiveControl.Name"
    1er ActiveControl pour la frame
    2eme pour la Combobox

    Attention, il faut mettre la propriété Style sur 2 - fmStyleDropDownList pour que l'utilisateur doit choisir une valeur dans la liste.
    Sinon tu lanceras le code à chaque caractère tapé.

    Après tu peux faire un mixte entre le 1er code que je t'ai donné et celui là, à la condition que les CheckBox et ComboBox en question soit dans le même Frame
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Private Sub ComboBox2_Change()
        Call MaProcedureComboBox(Me.ActiveControl)
    End Sub
     
     
    Private Sub ComboBox1_Change()
        Call MaProcedureComboBox(Me.ActiveControl)
    End Sub
     
     
    Sub MaProcedureComboBox(MonCtrl As Control)
    Dim Rempli As Boolean
    Dim i As Long
     
        For i = MonCtrl.Controls.Count - 1 To 0 Step -1 'ici on vérifie si la ComboBox est rempli
            If TypeName(MonCtrl.Controls(i)) = "ComboBox" Then
                If MonCtrl.Controls(i).Value = "" Then
                    Rempli = False
                Else
                    Rempli = True
                End If
            End If
        Next i
     
        For i = MonCtrl.Controls.Count - 1 To 0 Step -1
            If TypeName(MonCtrl.Controls(i)) = "CheckBox" Then
                If Rempli = True Then
                    MonCtrl.Controls(i).Visible = False
                Else
                    MonCtrl.Controls(i).Visible = True
                End If
            ElseIf TypeName(MonCtrl.Controls(i)) = "ComboBox" Then
                If Rempli = True Then
                    MonCtrl.Controls(i).Visible = True
                Else
                    MonCtrl.Controls(i).Visible = False
                End If
            End If
        Next i
     
    End Sub
    Ce dernière me semble plus judicieux, il permet de mettre/changer des noms à tes Controls

  6. #6
    Membre régulier
    Homme Profil pro
    paramédical
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : paramédical
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Par défaut
    Merci, désolé pour la réponse tardive.... Il y a encore des choses qui m'échappent mais pour l'instant je mets le projet en attente....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 17h40
  2. [TP]Recherche de mots dans un Doc.
    Par Loceka dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 04/10/2004, 20h04
  3. Suppression de mots dans une chaîne
    Par psychomatt dans le forum Langage
    Réponses: 7
    Dernier message: 06/08/2004, 16h34
  4. Comment changer des mots dans un fichier?
    Par ptitbonum dans le forum Linux
    Réponses: 5
    Dernier message: 08/04/2004, 00h42
  5. Comptage de mots dans une chaîne
    Par kikinou dans le forum Pascal
    Réponses: 10
    Dernier message: 01/01/2003, 03h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo