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 de listbox qui prend soit Null soit ""


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Par défaut Problème de listbox qui prend soit Null soit ""
    Bonjour,
    Après beaucoup de tentatives pour trouver une solution et pas mal de recherches sur internet, je viens vous expliquer mon problème.
    Suite à un projet informatique dans ma formation, on est amené à réaliser une tâche particulière. Celle que moi et mon binôme devons réaliser est assez simple à comprendre :
    Le projet globale visant grâce à des user form à remplir une fiche personnage pour un jeu de rôle. Notre tâche consiste à proposer différents avantages et désavantages à l'utilisateur.
    Le programme marche plutôt bien (je tiens à préciser que je ne code que depuis cette année scolaire donc soyez indulgents ce ne sont sûrement pas les meilleures façons de faire les choses).
    Alors voilà le problème :
    Une fois que l'utilisateur a choisi ses avantages et désavantages, nous devons passer les avantages et désavantages choisis d'une listbox à des cellules. Pour ce faire, on a créé un programme que l'on call le nombre de fois qu'il y a de listbox où sont les valeurs concernées. Mais voilà, les valeurs ne sont copiées qu'environ une fois sur 2 selon les essais de résolution de solution et ça semble assez aléatoire. On a remarqué que lorsque l'on call ce programme, on lui donne en paramètre un objet qui correspond au nom d'une listbox et on ne sait pas pourquoi mais cet objet prend soit la valeur Null (ce qui a pour effet de correctement copier les valeurs), mais il prend aussi certaines fois la valeur "" ce qui laisse un blanc dans la cellule.
    Merci d'avance pour votre aide.
    Si vous avez d’autres suggestions concernant le programme pour l'optimiser ou autre, n'hésitez pas, on a envie d'apprendre à coder correctement !

  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
    Si tu te demandes pourquoi je ne saurais répondre à tes questions, lis donc ceci
    https://www.developpez.net/forums/d8...s-discussions/
    puis lis le texte de ma signature
    puis reviens en montrant que tu sais parfaitement isoler la difficulté rencontrée et les lignes de code qui la concernent seule.
    Merci de faire cet effort.
    EDIT : j'ai essayé (en vain) de comprendre ce que pouvait bien vouloir dire ceci :
    Pour ce faire, on a créé un programme que l'on call le nombre de fois qu'il y a de listbox où sont les valeurs concernées. Mais voilà, les valeurs ne sont copiées qu'environ une fois sur 2 selon les essais de résolution de solution et ça semble assez aléatoire
    A traduire en langage compréhensible, technique et clair, s'il te plait.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Par défaut
    Bonjour,

    Merci pour votre réponse rapide et désolé pour ce message qui n'explique pas très bien le problème.

    Je vais essayer d'être plus clair :

    - On dispose d'un programme qui va chercher des données dans une listbox et qui les met dans une suite de cellules (La première valeur trouvée est mise dans la première cellule, la seconde dans une autre cellule et ainsi de suite.)

    - Ce programme marche parfaitement quand il est utilisé pour une seule listbox.

    - Pour éviter d'avoir le même programme pour chacune des listbox auxquelles on veut appliquer ce programme on a décidé de faire un call de ce programme à chaque fois que nous en avons besoin.

    - Le programme est donc appelé avec en paramètre le nom de la listbox qui nous intéresse à ce moment et ça autant de fois qu'on a de listbox. Call NomDuProgramme(Nomdelalistbox).

    - Le paramètre est définie dans le programme comme un objet, on a écrit : Sub NomDuProgramme (Nomdelavariable as object).

    - Donc lorsque l'on appel ce programme il va s’exécuter dans la listbox demandé.

    - Le problème (enfin ce que nous avons remarqué qui semble expliquer quelque chose) c'est que lorsque l'on appel ce programme avec le nom de la listbox en paramètre, en mode pas à pas on remarque que celle-ci est soit :

    ou bien

    Dans le premier cas, au lieu de mettre la valeur demandé dans la cellule, la cellule reste "vide" ou en tout cas la valeur n'y apparaît pas.

    Dans le second cas la valeur est bien mise dans la cellule.

    Le programme tourne normalement mais des cellules restes blanches.

    J'espère avoir mieux expliquer le problème, si vous voulez plus de précisions n'hésitez pas.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Exemple à placer soit dans le module UserForm soit dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub InitListBox(ctrlListBox As Object, ByVal ListRange As Range)
     ' Initialisation du ListBox
     ' Propriété Width automatique basée sur largeur des colonnes de RowSource
     ' Arguments
     ' ctrListBox : (ListBox) Ctrl ListBox à initialiser
     ' ListRange  : Liste traitée par le ListBox --> Propriété RowSource
     With ctrlListBox
      MsgBox .Name & vbCrLf & .Parent.Name
     End With
    End Sub
    On appelle cette procédure depuis le UserForm concerné par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
     Dim rng As Range
     Set rng = ThisWorkbook.Worksheets("db").Range("A1").CurrentRegion
     InitListBox ListBox1, rng
    End Sub
    Au lieu de déclarer l'argument nommé comme un objet, tu peux aussi le déclarer comme objet ListBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub InitListBox(ctrlListBox As ListBox, ByVal ListRange As Range)
    Moi j'utilise Object car j'emploie cette procédure aussi bien pour les ListBox que les ComboBox mais si la procédure ne doit concerner que les ListBox la deuxième solution est préférable car tu bénéficies du complément automatique des instructions.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Par défaut
    Bonjour,
    merci pour ces explications, j'ai essayé quelques trucs mais je ne pense pas que le problème vienne de là.
    Lorsque j'appelle le programme avec une certaine listbox, selon la listbox le programme va bien me copier les valeurs présentes dans la listbox concernée ou bien il va laisser un blanc dans la cellule où la valeur de la listbox aurait dû être copiée. J'ai l'impression que le problème vient plus de la listbox que du programme.

    PS : Comment faut il faire pour mettre du code dans la discussion comme vous faites ?

    Encore merci pour votre aide !

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    PS : Comment faut il faire pour mettre du code dans la discussion comme vous faites ?
    En effet, on arriverait mieux à t'aider si tu nous montrais ton code
    Copie ton code depuis VBA, colle-le dans ton message. Surligne le code et appuie sur le bouton # (qui se situe en haut du cadre pour écrire le message).

    EDIT : exemple : http://club.developpez.com/aidenouve...es/Balises.gif

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/04/2015, 16h51
  2. Problème avec variable int qui vaut soit 0 soit 1
    Par gkn28 dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2013, 18h55
  3. Problème de valeurs qui se mettent en <null> pour des stocks
    Par Heytabernak dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/11/2008, 11h42
  4. problème de champs not null qui sont marqués null à la création
    Par Elianora la blanche dans le forum Outils
    Réponses: 6
    Dernier message: 02/02/2007, 09h33
  5. Problème de Thread qui prend trop de mémoire
    Par petozak dans le forum Général Java
    Réponses: 20
    Dernier message: 11/12/2006, 15h24

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