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 :

Problème d'initialisation de userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    economiste
    Inscrit en
    Février 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : economiste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 28
    Par défaut Problème d'initialisation de userform
    Bonjour à tous et meilleurs vœux

    J'ai un petit soucis.... Je suis débutant et je demande de l'aide....

    J'ai un userform avec ce code pour l'initialiser mais il me mets un message d'erreur comme quoi l'indice ne fait pas parti de la sélection....

    Merci à tous pour vos réponses.

    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
     
    st_nom_vpc.ColumnCount = 4
    lst_nom_vpc.ColumnWidths = "0;50;80;50"
    Dim d As Object, a, Tbl, i%, n%, cd As Boolean
    Set d = CreateObject("Scripting.Dictionary")
    With Worksheets("Données")
    a = .Range("A2:Y" & .[D65000].End(xlUp).Row).Value
    End With
    For i = LBound(a) To UBound(a)
    For n = 1 To 16
    If a(i, n) = "" Then
    cd = True: Exit For
    End If
    Next n
    If a(i, 15) = "" Or a(i, 15) = "" Then d(i) = Array(a(i, 1), a(i, 4), a(i, 5), a(i, 6))
    cd = False
    Next i
    n = d.Count
    If n > 1 Then
    Tbl = WorksheetFunction.Transpose(d.items)
    Me.lst_nom_vpc.List = WorksheetFunction.Transpose(Tbl)
    ElseIf n = 1 Then
    Tbl = d.items
    With Me.lst_nom_vpc
    .AddItem Tbl(0)(0)
    For i = 1 To 16
    .List(0, i) = Tbl(0)(i)
    Next i
    End With
    End If
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je te suggère de bien vouloir modifier on titre (qui ne résume pas la difficulté) et d'indenter ton code. Je le regarderai alors.
    EDIT : tu crois que la modification que tu as faite du titre résume maintenant la difficulté rencontrée ?
    Et tu crois avoir indenté ton code ?

  3. #3
    Membre averti
    Homme Profil pro
    economiste
    Inscrit en
    Février 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : economiste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 28
    Par défaut
    Titre modifié... par contre je ne maîtrise pas l'indentation du code car cela me mets pleins de message d'erreur à chaque fois que j'essaie....

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Le revoilà, ton code, indenté :
    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
      st_nom_vpc.ColumnCount = 4
      lst_nom_vpc.ColumnWidths = "0;50;80;50"
      Dim d As Object, a, Tbl, i%, n%, cd As Boolean
      Set d = CreateObject("Scripting.Dictionary")
      With Worksheets("Données")
         a = .Range("A2:Y" & .[D65000].End(xlUp).Row).Value
      End With
      For i = LBound(a) To UBound(a)
         For n = 1 To 16
            If a(i, n) = "" Then
                cd = True: Exit For
            End If
         Next n
         If a(i, 15) = "" Or a(i, 15) = "" Then d(i) = Array(a(i, 1), a(i, 4), a(i, 5), a(i, 6))
         cd = False
      Next i
      n = d.Count
      If n > 1 Then
         Tbl = WorksheetFunction.Transpose(d.items)
         Me.lst_nom_vpc.List = WorksheetFunction.Transpose(Tbl)
      ElseIf n = 1 Then
         Tbl = d.items
         With Me.lst_nom_vpc
           .AddItem Tbl(0)(0)
           For i = 1 To 16
             .List(0, i) = Tbl(0)(i)
           Next i
        End With
      End If
    End Sub
    Il est maintenant lisible
    on aurait bien aimé pouvoir voir à quel Sub correspond ce End Sub

  5. #5
    Membre averti
    Homme Profil pro
    economiste
    Inscrit en
    Février 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : economiste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 28
    Par défaut
    Merci pour l'indentation. Effectivement cela fonctionne je viens de le tester dans mon code....

    Ce end sub appartient à la commande : Private sub Userform_Initialize()

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Déjà et pour commencer : à quel moment (quelle ligne de ton code) penses-tu, déjà, avoir abondé ton dictionnaire d ?

  7. #7
    Membre averti
    Homme Profil pro
    economiste
    Inscrit en
    Février 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : economiste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 28
    Par défaut
    J'ai pas tout compris, mais je vais essayer de répondre...

    Lorsque je lance l'exécution de mon USERFORM pour vérifier que tout fonctionne, j'ai de suite un msg d'erreur qui m'indique que l'indice ne fais pas parti de la sélection et ne me surligne aucune ligne en particulier.

    Par contre je n'ai pas compris ton histoire de dictionnaire. Si c'est une moquerie, elle doit être trop élevée pour mon niveau intellectuel....

Discussions similaires

  1. [MySQL] 2 boucles sur une requête, pourquoi ça marche pas?
    Par MisterMacPhisto dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/04/2007, 12h32
  2. Pourquoi ca marche pas :-(
    Par Flushovsky dans le forum Langage
    Réponses: 3
    Dernier message: 20/12/2005, 17h55
  3. Comprends pas pourquoi ca marche pas
    Par cellimo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/11/2005, 22h10
  4. [OLE DB] pourquoi ca marche pas ??
    Par aurel89 dans le forum MFC
    Réponses: 3
    Dernier message: 09/09/2005, 17h23
  5. Accept : pourquoi ça marche pas ?
    Par doudblast dans le forum Linux
    Réponses: 16
    Dernier message: 08/03/2005, 11h48

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