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 :

"valeur de propriété non valide" au démarage [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut "valeur de propriété non valide" au démarage
    Bonjour,

    j'ai un petit soucis lors du lancement de mon userform, j'ai le message d'erreur "Valeur de propriété non valide" qui apparait.

    A mon avis, c'est du à ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        commodif.numaff.ListIndex = -1
        commodif.nomfournisseur.ListIndex = -1
    numaff et nomfournisseur étant des combobox sur le userform commodif.

    je suis dans le module "Private Sub UserForm_Initialize()"


    Ces lignes servent à ce qu'aucune valeur des combobox soit sélectionné par défaut. Ce qui est le cas si je n'ai pas ces lignes.

    j'ai essayé avec application.displayalert=false, mais cela ne change rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    i = 1
        While variable.Cells(i, 30) <> ""
            commodif.numaff = variable.Cells(i, 30)
            If commodif.numaff.ListIndex = -1 Then commodif.numaff.AddItem (variable.Cells(i, 30))
            commodif.nomfournisseur = variable.Cells(i, 31)
            If commodif.nomfournisseur.ListIndex = -1 Then commodif.nomfournisseur.AddItem (variable.Cells(i, 31))
            commodif.ordre.AddItem (variable.Cells(i, 32))
            i = i + 1
        Wend
     
        Application.DisplayAlerts = False
        commodif.numaff.ListIndex = -1
        commodif.nomfournisseur.ListIndex = -1
    Comment faire pour supprimer cette fenêtre intempestive ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Par défaut
    Bonjour

    IL faut tester si le combobox contient une valeur avant de faire le test.

    A tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If commodif.numaff.ListCount > 0 then
     If commodif.numaff.ListIndex = -1 Then commodif.numaff.AddItem (variable.Cells(i, 30))
    else
    commodif.numaff.AddItem (variable.Cells(i, 30))
    end if
    JP

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Le problème pour détecter une erreur dans un UF c'est que si une erreur est rencontrée le curseur revient sur le UF.Shows
    Pour trouver la ligne de l'erreur...
    > Mettre un point d'arret sur la première ligne de initialize de l'UF
    > Avancer en pas à pas (F8)
    Et repérer la ligne juste AVANT que ça ne plante.
    Tu peu ainsi savoir où est le problème.
    Quand tu à trouver la ligne tu dis, ce sera plus façile de t'aider.
    Et Variable.Cells(.. tu à un feuille ou un objet worksheet à ce nom ?
    A+

  4. #4
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Bonjour,
    Le problème pour détecter une erreur dans un UF c'est que si une erreur est rencontrée le curseur revient sur le UF.Shows
    Pour trouver la ligne de l'erreur...
    > Mettre un point d'arret sur la première ligne de initialize de l'UF
    > Avancer en pas à pas (F8)
    Et repérer la ligne juste AVANT que ça ne plante.
    Tu peu ainsi savoir où est le problème.
    Quand tu à trouver la ligne tu dis, ce sera plus façile de t'aider.
    Et Variable.Cells(.. tu à un feuille ou un objet worksheet à ce nom ?
    A+
    ce serait trop facile

    je n'ai pas de message d'erreur en mode pas à pas

    Et de plus cela ne plante pas, c'est juste un message d'erreur qui ne bloque pas l'exécution du code. Il suffit de clicker sur OK et cela fonctionne ensuite.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Par défaut
    Bonjour

    En rajoutant
    Si l'erreur n'est pas blocante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    On error resume next
    ......................
    on error goto 0
    JP

  6. #6
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    Merci,
    j'ai essayé mais cela ne change rien.

    Je l'ai peut être mal utilisé, voici le code complet de la procédure :

    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
    Private Sub UserForm_Initialize()
        On Error Resume Next
        init = False
        'parcours des fichiers commandes existants
        Dim Dossier As String
        Dossier = "C:\Documents and Settings\Scale\Bureau\Nouveau dossier\COMMANDES"
        variable.Range("AD:AG").Clear
        ListeFichiers Dossier 'Appelle la procédure de recherche des fichiers -> et les implémentes dans variable.cells(1,30)et plus
     
        i = 1
        While variable.Cells(i, 30) <> ""
            commodif.numaff = variable.Cells(i, 30)
            If commodif.numaff.ListIndex = -1 Then commodif.numaff.AddItem (variable.Cells(i, 30))
            commodif.nomfournisseur = variable.Cells(i, 31)
            If commodif.nomfournisseur.ListIndex = -1 Then commodif.nomfournisseur.AddItem (variable.Cells(i, 31))
            commodif.ordre.AddItem (variable.Cells(i, 32))
            i = i + 1
        Wend
     
     
        Application.DisplayAlerts = False
        commodif.numaff.ListIndex = -1
        commodif.nomfournisseur.ListIndex = -1
     
     
        commodif.devis.Enabled = False
        commodif.détaildelacommande.Enabled = False
        commodif.Framecond.Enabled = False
        commodif.terminer.Enabled = False
        init = True
        On Error GoTo 0
    End Sub

  7. #7
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    Non, il n'est pas nécessaire de vérifier si la combobox contient une valeur, la ligne qu'il y a juste au dessus du test me permet juste d'éviter d'avoir des doublons dans ma combobox.
    C'est du code que j'utilise souvent, il ne pose pas problème.

    Le soucis est que lorsque j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commodif.nomfournisseur.ListIndex = -1
    je sors de la combobox "numaff" dont l'index est à -1, ce qui est interdit par la propriété "Matchrequired=true" de cet objet.

    C'est cela qui fait afficher la fenêtre "valeur de propriété non valide".

    Ce que je ne sais pas c'est comment la supprimer.

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

Discussions similaires

  1. Problème valeur de propriété non valide
    Par Chris171717 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 10/03/2013, 15h44
  2. "Valeur de propriété non valide"
    Par pjtuloup dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/02/2012, 20h06
  3. [Jena] Valeur de propriété non modifiée
    Par Matt112 dans le forum Frameworks
    Réponses: 0
    Dernier message: 15/12/2011, 13h54
  4. [AC-2000] Valeur de propriété non valide
    Par marsupilami34 dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/10/2009, 16h43
  5. SQL et GUID : Valeur de caractère non valide pour la ....
    Par jackfirst72 dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/03/2007, 10h46

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