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'Incompatibilité de type


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut Problème d'Incompatibilité de type
    Bonjour à tous et bonne année 2009

    J'ai tapé ce code qui me permet, normalement, lorsque je sélectionne une donnée en Cb3, d'afficher un prix dans T4 et T5 qui sont des TextBox.
    Cependant, un message apparait lors de la sélection : "Incompatibilité de type"
    Private Sub Cb3_Change() est sélectionné ainsi que B1 et B2.

    Pouvez-vous m'aider s'il vous plait ?
    Merci par avance

    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
     
    Private Sub Cb3_Change()
    Dim Cell As Range
    Dim B1(0 To 50, 0 To 1) As String
    Dim B2(0 To 50, 0 To 1) As String
    Dim L As Byte
    Dim I As Byte
        If Me.Cb3.Value <> "" Then
            L = Len(Cb3)
                For Each Cell In Sheets("Données").Range("B2:D57")
                If UCase(Left(Cell.Text, L)) = UCase(Cb3.Text) Then
                B1(I, 0) = Cell.Offset(0, 2).Text
                B2(I, 0) = Cell.Offset(0, 1).Text
            I = I + 1
            End If
        Next
        Me.T4.Text = B1()
        Me.T5.Text = B2()
    End If
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    J'ai essayé en changeant Change par autre chose, mais toujours avec le même résultat.
    Je ne comprens pas où ça coince. Je continue mes investigations.
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    novembre 2003
    Messages
    18 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 18 969
    Points : 55 572
    Points
    55 572
    Billets dans le blog
    128
    Par défaut
    Bonjour

    C'est quoi, CB3?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour,

    C'est une ComboBox, elle est chargée selon un choix fait dans une autre ComboBox (CB2).
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    novembre 2003
    Messages
    18 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 18 969
    Points : 55 572
    Points
    55 572
    Billets dans le blog
    128
    Par défaut
    Sur quelle ligne s'arrête le débogueur?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Sur Private Sub CB3_Change(), ainsi que B1() et B2() en fin de code
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    J'ai trouvé ce qui ne colle pas: tu essaye d'affecter un tableau de textes à une propriété qui n'accepte qu'un texte simple.

    Alors soit tu veux vraiment charger un tableau dans lequel tu dois choisir une entrée et pour ça tu optes des combobox.
    Soit tu veux plutôt une seule entrée, m'est avis que c'est le cas, et là dans ce cas il serait bon que tu expliques ce que tu cherches à faire avec tes tableaux, car j'ai beau comprendre comment c'est codé, je ne comprends pas du tout le résultat recherché.

  8. #8
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Je vais expliquer ce que je cherche à faire.

    Toutes les données proviennent de la feuille "Données"

    A partir d'une Combo (Cb2) je sélectionne une donnée (Par exemple "Ciné UGC")
    1er code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Cb2_Change()
    Set mondico = CreateObject("Scripting.Dictionary")
        For I = 1 To Range("Motif").Count
            If Range("Profil")(I) = Me.Cb2 Then
            temp = Range("Motif")(I)
            mondico.Add temp, temp
        End If
        Next I
        Me.Cb3.List = mondico.items
    End Sub
    Dans la Combo suivante (Cb3) apparaît "Billet unique"
    2ème 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
    Private Sub Cb3_Change()
    Dim Cell As Range
    Dim B1(0 To 50, 0 To 1) As String
    Dim B2(0 To 50, 0 To 1) As String
    Dim L As Byte
    Dim I As Byte
        If Me.Cb3.Value <> "" Then
            L = Len(Cb3)
                For Each Cell In Sheets("Données").Range("B2:D57")
                If UCase(Left(Cell.Text, L)) = UCase(Cb3.Text) Then
                B1(I, 0) = Cell.Offset(0, 2).Text
                B2(I, 0) = Cell.Offset(0, 1).Text
            I = I + 1
            End If
        Next
        Me.T4.Text = B1()
        Me.T5.Text = B2()
    End If
    End Sub
    Normalement dans la TextBox (T4) devrait apparaître le montant du prix d'achat et dans la TextBox (T5) le montant du prix de vente qui est différent du prix d'achat (prix d'achat->prix acheté au fournisseur, prix de vente->prix vendu à l'adhérent). Mais ça ne marche pas (affichage du message précédement cité).
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Ah je viens enfin de comprendre ce que tu fais.
    Tu aurais pu me dire que ce que tu stockais dans tes tableaux ce sont tes prix: ce sont des explications comme ça que j'attendais, car ce que tu viens de dire ne m'a pas servi à grand-chose hormis à savoir que tu avais 2 prix dans l'histoire.

    Alors, honnêtement, je pense que tu ne t'y prends pas du tout de la bonne manière.

    Essaie ceci un peu pour voir, et compare avec ta méthode, et surtout essaie de comprendre ce que je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Cb3_Change()
    Dim Cell As Range
    If Me.Cb3.Value <> "" Then
        For Each Cell In Sheets("Données").Range("B2:D57")
            If UCase(Left(Cell.Text, Len(Cb3.Text))) = UCase(Cb3.Text) Then
                Me.T4.Text = Cell.Offset(0, 2).Text
                Me.T5.Text = Cell.Offset(0, 1).Text
                Exit Sub ' Ou Exit For ici revient au même résultat
            End If
        Next
    End If
    End Sub
    Certains auraient utilisé Find, mais à mon avis cette méthode risque d'être moins rapide que ce que tu souhaites.

    J'espère que j'ai bien saisi le problème.

  10. #10
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Super tu as bien compris ce que je voulais et ça marche.
    Par contre moi je n'ai pas tout saisi, si ce n'est le fait que tu affectes directement les données dans les TextBox selon le choix fait dans le combo
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Voilà, c'est exactement ce que je fais.

    Et si jamais t'as saisi quelque chose dans ta cb et que ça ne retrouve pas dans la feuille, eh bien tes texbox ne seront pas changées, même s'il y avait du texte dedans. Si tu veux qu'elles soient effacées s'il n'y a pas de correspondance, tu as juste un petit peu de code à rajouter avant le End Sub.

  12. #12
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Super, merci beaucoup pour ton aide
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

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

Discussions similaires

  1. [XL-2010] Problème de "Incompatibilité de type"
    Par noob73 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/09/2014, 18h12
  2. [XL-2010] Problème d'incompatibilité de type ?!
    Par Jey14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2013, 16h40
  3. [XL-2010] Problème d'incompatibilité de type (erreur d’exécution 13)
    Par Dubbleu dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/07/2013, 16h54
  4. Problème d'incompatibilité de type
    Par dth.0 dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/09/2010, 14h11
  5. Ouverture d'un .doc - Problème d' "Incompatibilité de type"
    Par Amitom dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/03/2009, 15h11

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