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 :

Module de classe [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut Module de classe
    Bonjour a toutes et tous, Forum bonjour

    Après de multiples essais, je ne parviens pas a faire un module de classe pour le code ci-dessous que je dois répéter 36 fois.

    Actuellement ces 36 procédures tournent et fonctionne bien mais afin d'alléger mon programme je souhaiterai faire un Module de classe.

    j'en ai pourtant déjà fait mais la je coince

    Si quelqu'un veux bien m'aider svp a en créer un nouveau, je vous en remercie par avance.

    Je mets juste le code qui doit être traiter par le module de classe, préférable de repartir du début.

    Label164 à 174 Label chiffre 0 à 9
    Lablel175 à 200 Label lettre A à Z

    J'ai 36 codes identiques a celui ci-dessous, juste le N° du Label change.

    Merci a vous et de votre temps, bonne après midi.

    Cordialement Ray

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Private Sub Label164_Click() 'Chiffre 0
    Dim a As Integer, Cpt As Integer
    For Each Ctrl In Me.Frame4.Controls
    If TypeOf Ctrl Is msforms.Label Then
    If Ctrl.Name = "Label164" Then
    Ctrl.Object.BackColor = RGB(0, 255, 0)
    Else
    If IsNumeric(Ctrl.Object.Caption) Then
    Ctrl.Object.BackColor = &H80C0FF         'Beige
    Else
    Ctrl.Object.BackColor = &HFFC0FF         'Rose
    End If
    End If
    End If
    Next Ctrl
     
    Temp = Me.Label164.Caption
    nbFilm = [ListeFilms].Count
    Me.ListView2.ListItems.Clear      'Suppression anciens éléments
     
    For I = 1 To nbFilm
    If UCase(Left(Range("ListeFilms")(I), Len(Temp))) = UCase(Temp) Then
    Cpt = Cpt + 1
    End If
    Next
     
    If Cpt = 0 Then Me.Label203.Caption = "Aucune vidéo trouvée": Exit Sub
    ReDim tablo(1 To Cpt, 0)
    I = 1
    Do While I <= Cpt
    a = a + 1
    If UCase(Left(Range("ListeFilms")(a), Len(Temp))) = UCase(Temp) Then
    tablo(I, 0) = Range("ListeFilms")(a)
    I = I + 1
    End If
    Loop
     
    With Me.ListView2
    .ColumnHeaders.Clear            'Supprime anciennes entêtes
    .HideColumnHeaders = True    'On cache entêtes
    .ColumnHeaders.Add , , "Nom du film", .Width - 20
    .CheckBoxes = True
     
    '* Boucle sur les fichiers du dossier cible
    For I = 1 To UBound(tablo)       'Vérifie s'il s'agit d'un sous dossier non pris en compte
    .ListItems.Add , , tablo(I, 0): Cpt = 0      'Ajoute 1 ligne
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set Dossier = fs.GetFolder("E:\Affiche")
    Cpt = 0
    For Each f In Dossier.Files
    If f.Name = tablo(I, 0) & ".jpg" Then Cpt = 1
    Next
    If Cpt = 0 Then .ListItems(I).ForeColor = RGB(255, 0, 0)    'Rouge
    Next I
    End With
    End Sub

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, cela pourrait peut-être t'aider ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Salut kiki29, forum

    Merci de ta réponse, déjà parcouru le site pour lecture

    Pas réussi a faire malgré la lecture recommandé et des recherches sur le net

    je vais encore chercher comment faire

    merci bonne fin d'après midi

    Cdtl Ray

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,
    Essaie d'adapter le code du classeur joint (merci Isabelle):

    Dans le module de classe (MesLabels) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public WithEvents Lbl As MSForms.Label
     
    Private Sub Lbl_Click()
        MsgBox Lbl.Caption
    End Sub
    Dans le module de l'userform :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim GrLabels() As New MesLabels
    Private Sub UserForm_Activate()
    Dim c As Control, i As Integer
    For Each c In Me.Controls
        If Left(c.Name, 5) = "Label" Then
            ReDim Preserve GrLabels(i)
            Set GrLabels(i).Lbl = c
            i = i + 1
        End If
    Next
    End Sub
    A toi d'adapter (je n'ai pas trop cherché à comprendre ce que tu voulais faire). N'hésite pas si tu as des questions.

  5. #5
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Salut Daniel

    Merci pour ta réponse, je vais essayer le code proposer

    pour infos: en fait j'ai un userform avec 36 Labels et pour EX: lorsque je clic
    dans le label 175 lettre A, j'ai la liste des vidéos qui commence par la lettre choisie
    ça évite de passer toute la liste en revue, bien plus rapide donc je voulais
    arranger un peu le code qui est lourd avec ces répètitions, voili voila


    Label164 à 174 Label chiffre 0 à 9
    Lablel175 à 200 Label lettre A à Z

    Merci bonne soirée a plus tard

    Cdlt Ray

    Re salut Daniel

    Bon j'ai fait l'essai avec ton code cela fonctionne pas d'erreur mais ca m'affiche uniquement le N° du Label dans lequel je clique

    Ca ne m'affiche pas la liste des vidéos commençant par la lettre choisie

    en tout cas déjà merci pour ça

    Bonne soirée bon app

    Cdlt Ray

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Oui, comme je l'ai dit, je n'ai pas cherché à comprendre la logique de ton code. Toi qui la connaît, il te suffit de remplacer le "MsgBox" par le code qui va bien

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

Discussions similaires

  1. [VBA] Module de classe et évènement
    Par Caroline1 dans le forum Access
    Réponses: 9
    Dernier message: 20/03/2013, 23h23
  2. [Module de classe] Fonction non liée à l'instance?
    Par Caroline1 dans le forum Access
    Réponses: 6
    Dernier message: 07/04/2006, 20h13
  3. Réponses: 4
    Dernier message: 31/03/2006, 15h16
  4. Réponses: 8
    Dernier message: 22/02/2006, 15h09
  5. variables publiques ou module de classe ?
    Par niclalex dans le forum Access
    Réponses: 3
    Dernier message: 04/10/2005, 18h49

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