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 :

chargement incomplet, non systématique, de combobox par boucle for-next [Toutes versions]


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
    retraité
    Inscrit en
    Septembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2019
    Messages : 29
    Par défaut chargement incomplet, non systématique, de combobox par boucle for-next
    Bonjour,
    J’utilise un Userform pour le renseignement d’un formulaire.
    Ce formulaire comporte 4 combobox.
    Les listes de ces combobox étant évolutives, j’utilise, pour les charger, une boucle « for-next » à l’initialisation du Useform.
    Le programme fonctionnait bien jusqu’à ce que mes deux premières combobox ne me proposent qu’une partie de liste.
    3 sur 17 pour la première, 1 sur 3 pour la deuxième. Et toujours la même proposition. Pour la première combobox c’est toujours la première, cinquième et treizième de liste. Pour la deuxième combobox, c’est toujours la première. Les troisième et quatrième combobox fonctionnent bien.
    Voici 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub UserForm_Initialize()
    On Error Resume Next
    nb_rang = Worksheets("Listes modifiables").Range("i65536").End(xlUp).Row
        For x = 1 To nb_rang
            If Cells(x, 9) <> "" Then
            CBX_rang.AddItem Worksheets("Listes modifiables").Cells(x, 9).Value
            End If
        Next x
    nb_affectation = Worksheets("Listes modifiables").Range("k65536").End(xlUp).Row
        For x = 1 To nb_affectation
            If Cells(x, 11) <> "" Then
            CBX_affectation.AddItem Worksheets("Listes modifiables").Cells(x, 11).Value
            End If
        Next x
    nb_emploi = Worksheets("Listes modifiables").Range("a65536").End(xlUp).Row
        For x = 1 To nb_emploi
            If Cells(x, 1) <> "" Then
            CBX_EMPLOI.AddItem Worksheets("Listes modifiables").Cells(x, 1).Value
            End If
        Next x
    nb_SPE = Worksheets("Listes modifiables").Range("d65536").End(xlUp).Row
        For x = 1 To nb_SPE
            If Cells(x, 4) <> "" Then
            Cbx_SPE.AddItem Worksheets("Listes modifiables").Cells(x, 4).Text
            End If
        Next x
    J’ai pu vérifier que mes variables correspondant aux nombres de lignes de mes listes modifiables sont justes.
    Le pire c’est que le problème peut disparaitre un temps. C’est pourquoi j’y perds mon latin.
    Peut-être pourrez-vous m’aider.
    Merci de m'avoir lu.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MULTON Voir le message
    Bonjour,

    Et avec ce 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
    18
    19
    20
    21
     
    Private Sub UserForm_Initialize()
     
    Dim X As Long
     
       With Worksheets("Listes modifiables")
            For X = 1 To .Range("A65536").End(xlUp).Row
                If .Cells(X, 1) <> "" Then CBX_EMPLOI.AddItem .Cells(X, 1).Value
            Next X
            For X = 1 To .Range("D65536").End(xlUp).Row
                If .Cells(X, 4) <> "" Then Cbx_SPE.AddItem .Cells(X, 4).Text
            Next X
            For X = 1 To .Range("I65536").End(xlUp).Row
                If .Cells(X, 9) <> "" Then CBX_rang.AddItem .Cells(X, 9).Value
            Next X
            For X = 1 To .Range("K65536").End(xlUp).Row
                If .Cells(X, 11) <> "" Then CBX_affectation.AddItem .Cells(X, 11).Value
            Next X
        End With
     
    End Sub

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Et sans le On Error Resume Next (dont on se demande à quoi il sert), ça donne quoi ?

  4. #4
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2019
    Messages : 29
    Par défaut
    Merci Eric pour cette réponse si rapide.
    Apparemment cela a l'air de fonctionner. Le bug n'étant pas permanent j'attends un peu avant de considérer le problème comme résolu.
    Mais serait -il possible d'avoir une explication quant à la non fiabilité de ma méthode ?

    Pour Menhir, j'avais rajouté le "On Error Resume Next" car j'avais une erreur à un moment donné dans la procédure du Userform. Je l'ai retiré.

    Merci encore pour vos réponses.
    Cordialement

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MULTON Voir le message
    Dans ces lignes de code, si vous n'êtes sur l'onglet "Listes modifiables", Cells se rattache à quoi ? Nb : Cela n'explique pas la raison pour laquelle vous auriez des valeurs dans vos combobox...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Cells(x, 9) <> "" Then

  6. #6
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2019
    Messages : 29
    Par défaut
    Merci Eric,
    Oui l'explication est là, avec effectivement la question de la présence de données (incomplètes mais toujours les mêmes) dans mes deux premières Combobox et la totalité dans les deux suivantes.
    L’essentiel est que maintenant mon programme est fiable.
    Merci encore pour cette aide précieuse et rapide. Bravo !
    Un super site d'entraide !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/10/2015, 15h08
  2. Réponses: 4
    Dernier message: 17/06/2014, 07h43
  3. boucle FOR NEXT et remplacer chiffres par lettres ou mots
    Par momoram dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/12/2013, 12h02
  4. VB6 Arret boucle FOR NEXT par appui sur un bouton
    Par obel38 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 04/01/2011, 17h35
  5. Réponses: 3
    Dernier message: 03/11/2005, 20h22

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