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 :

Incompatibilité de type sous Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Par défaut Incompatibilité de type sous Excel
    Bonjour, quelqu'un aurait une idée de pourquoi j'ai une incompatibilité de type avec cette ligne

    -->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    résultat_granulometrie = obj_granulometrie(h + (k * nbr_pièce_testé) - 1).Value



    Voici le code complet !



    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
    Public obj_granulometrie() As Object
    Dim résultat_granulometrie As Double
     
     
    nbr_pièce_testé = Val(nbr_pièces_UserForm.nbr_pièces.Value)
     
     
    For k = 0 To 1
    For h = 1 To nbr_pièce_testé
     
    résultat_granulometrie = obj_granulometrie(h + (k * nbr_pièce_testé) - 1).Value
    Worksheets("Décanteurs_").Range(Chr(caractere) & LaDernièreLigne + h - 1) = résultat_granulometrie
     
    Next h
     
    caractere = caractere + 1
    Next k
    Merci de votre aide

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 705
    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 705
    Par défaut
    Bonjour,
    Qu'est-ce que obj_granulometrie ? Où est-ce que tu le définies et comment ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Par défaut
    Il sagit d'un tableau dans lequel je range différentes valeurs, et le but de ce code est d'afficher une à une les valeurs du tableau :
    C'est un tableu global définie en dehors de ma fonction


    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
    Public obj_granulometrie() As Object
    ReDim obj_granulometrie(nbr_pièce_testé * 10)
     
     
    For t1 = 1 To nbr_pièce_testé * 10
    Set obj_granulometrie(t1 - 1) = Me.Controls.Add("forms.TextBox.1")
     
        If t1 <= nbr_pièce_testé Then
     
            With obj_granulometrie(t1 - 1)
                .Name = "valeur_" & t1
                .Left = 100
                .Top = 30 * t1 + 40
                .Width = 50
                .Height = 20
            End With

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Par défaut
    En soit le tableau ne pose pas problème je crois, le problème apparait dès que j'ajoute la variable nbr_pièce_testé dans la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    résultat_granulometrie = obj_granulometrie(h + (k * nbr_pièce_testé) - 1).Value
    En résumé,

    Cette ligne fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    résultat_granulometrie = obj_granulometrie(h + k  - 1).Value
    Celle me dit que j'ai une incompatibilité de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    résultat_granulometrie = obj_granulometrie(h + (k * nbr_pièce_testé) - 1).Value

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    pourquoi tu déclares ton tableau comme un objet ?
    Pourquoi tu déclares en public cette variable DANS la procédure ?
    Pourquoi on ne voit pas la déclaration de procédure ? (Sub()...)
    que vaut nbr_pièce_testé ?
    Récupérer la valeur d'un tableau ne passe pas par une propriété .Value

    Que vallent tes variables quand la procédure plante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public obj_granulometrie()
     
    Sub toto()
    nbr_pièce_testé = UnChiffreDeTonChoix
    ReDim obj_granulometrie(nbr_pièce_testé * 10)
    MonToto = obj_granulometrie(14)  ' par exemple
    ....
    End Sub

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Par défaut
    Car je me sers de mon tableau dans un de mes formulaires, en fait je génére un formulaire dynamiquement en fonction de la valeur de nbr_pièce_testé ( nbr_pièce_testé est une variable qui prend une valeur rentré par l'utilisateur dans mon tout premier formulaire ).



    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
    Public obj_granulometrie() As Object
     
    Sub Remplissage()
     
    Dim nbr_pièce_testé As Integer
    'On récupère la valeur du nombre de pièce que l'on test
        nbr_pièce_testé = Val(nbr_pièces_UserForm.nbr_pièces.Value)
    'On calcule la dernière ligne pour pouvoir en ajouter une
        LaDernièreLigne = Range("A65536").End(xlUp).Offset(1, 0).Row
     
    '.......
     
    'Déclaration des variables
    Dim résultat_granulometrie As Double
    Dim caractere As Integer
     
     
    caractere = 89
     
    For k = 0 To 1
    For h = 1 To nbr_pièce_testé
     
    résultat_granulometrie = obj_granulometrie(h + (k * nbr_pièce_testé) - 1).Value
    Worksheets("feuil1").Range(Chr(caractere) & LaDernièreLigne + h - 1) = résultat_granulometrie
     
    Next h
    caractere = caractere + 1
    Next k
     
    End Sub
    Quand ca plante nbr_pièce_testé vaut la valeur que je lui ai donné dans le formulaire, h vaut 1 et k vaut 0

  7. #7
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Ta variable obj_granulometrie n'est pas un objet mais un Tableau

    Là maintenant, nous n'avons même plus la partie de la procédure où tu redimensionnes ton tableau

    La ligne 27 est inutile, autant utiliser caractere + k en ligne 24

    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
    Public obj_granulometrie()
     
    Sub Remplissage()
    Dim résultat_granulometrie As Double
    Dim caractere As Integer
    Dim nbr_pièce_testé As Integer
        nbr_pièce_testé = Val(nbr_pièces_UserForm.nbr_pièces.Value)
        LaDernièreLigne = Range("A65536").End(xlUp).Offset(1, 0).Row
        caractere = 89
     
        For k = 0 To 1
            For h = 1 To nbr_pièce_testé
                résultat_granulometrie = obj_granulometrie(h + (k * nbr_pièce_testé) - 1).Value
                Worksheets("feuil1").Range(Chr(caractere + k) & LaDernièreLigne + h - 1) = résultat_granulometrie
            Next h
        Next k
    End Sub

  8. #8
    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
    Difficile de déterminer avec assurance ce qui ne va pas parmi tant d'imprécisions.
    Je souscris totalement à ce sujet à la remarque de joe.levrai

  9. #9
    Invité
    Invité(e)
    Par défaut
    bonjour,
    ce qui est important ce n'est pas vraiment où tu utilises ton tableau, quoique! mais avant tout ou tu gère ses instance!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set obj_granulometrie(0)=MonObject

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/10/2016, 11h32
  2. [AC-2007] Incompatibilité de type lors de la manipulation d'Excel
    Par yonnel dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/11/2014, 22h25
  3. [XL-2013] Écart type sous Excel 2013
    Par ExKira dans le forum Excel
    Réponses: 1
    Dernier message: 03/12/2013, 11h00
  4. Incompatibilité de type Excel / SQL server
    Par OliverD dans le forum Développement
    Réponses: 2
    Dernier message: 13/08/2009, 09h50

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