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 :

Erreur d'exécution '13': Incompatibilité de type


Sujet :

Macros et VBA Excel

  1. #1
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut Erreur d'exécution '13': Incompatibilité de type
    Bonjour à toutes et tous,

    J'ai l'erreur indiquée dans le titre de mon poste au moment de passer à cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set b = Sheets("Formations")
    b.Cells(LbPersonnel2.List(LbPersonnel2.ListIndex, 13), 14) = CbOrganisme2
    Je n'arrive pas à comprendre pourquoi.


    Auriez-vous des pistes pour m'aider ?

    D'avance, merci beaucoup

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Peut-être que la 13ème colonne de ta ListBox ne contient pas un nombre.
    Peut-être qu'elle renvoie également un nombre mais sous forme de String.

    Tester son contenu, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set b = Sheets("Formations")
    MsgBox LbPersonnel2.List(LbPersonnel2.ListIndex, 13)
    b.Cells(LbPersonnel2.List(LbPersonnel2.ListIndex, 13), 14) = CbOrganisme2
    Si le MsgBox affiche le bon numéro de ligne, modifiez comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set b = Sheets("Formations")
    b.Cells(CLng(LbPersonnel2.List(LbPersonnel2.ListIndex, 13)), 14) = CbOrganisme2

  3. #3
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Bonjour Pijaku,

    Merci pour ton retour.

    En effet, ma colonne 13 de ma listbox contient du Texte et non des chiffres.

    J'ai testé ceci comme tu me le propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox LbPersonnel2.List(LbPersonnel2.ListIndex, 13)
    Ca ne me retourne pas le numéro de ligne mais bien le contenu de la cellule (donc du texte également) que je souhaite modifier qui est sur la bonne ligne.

    Et donc ceci ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    b.Cells(CLng(LbPersonnel2.List(LbPersonnel2.ListIndex, 13)), 14) = CbOrganisme2
    J'ai toujours "Incompatibilité de type"

    Qu'est ce qui peut bien poser problème ? :s

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Que te retourne, maintenant,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox LbPersonnel2.ListIndex
    Y a-t-il une corrélation (+1 ou +2, ou +31, ou -2 ou -1...) avec ton numéro de ligne?

    Si oui, alors :
    b.Cells(LbPersonnel2.ListIndex +- Delta), 14) = CbOrganisme2

  5. #5
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Alors ça me retourne le chiffre 0.

    Le numéro de ligne où doit se modifier le contenu de la cellule est le 18.

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par Mél3790 Voir le message
    Alors ça me retourne le chiffre 0.
    Tu as sélectionné une ligne dans ta ListBox avant? La première ligne?

    Citation Envoyé par Mél3790 Voir le message
    Le numéro de ligne où doit se modifier le contenu de la cellule est le 18.
    Je supposes donc que tes données vont de la ligne 18 à la ligne xxxx...

    Si oui, alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    b.Cells(LbPersonnel2.ListIndex + 18), 14) = CbOrganisme2

  7. #7
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    En fait, ma listbox se remplie en fonction du choix d'une combobox.

    Mon tableau dans ma feuille 1 commence bien à la ligne 1.

    Mais étant donné que ma listbox est filtrée, la ligne 18 de mon tableau peut en effet être la 1ère ligne de ma listbox selon le choix de ma combobox.

  8. #8
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Quand tu as fait ce test (cf plus haut) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox LbPersonnel2.List(LbPersonnel2.ListIndex, 13)
    est-ce que la valeur retournée est systématiquement unique dans ton tableau?

  9. #9
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Bonjour Pijaku,

    Excuses moi de ne pas être revenue vers toi plus tôt, le reste de mon travail ne m'a pas permis de continuer ce projet excel....

    Alors, avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox LbPersonnel2.List(LbPersonnel2.ListIndex, 13)
    Le message qui apparaît est bien le mot dans ma dans la cellule de la colonne 13 de la ligne que j'ai bien sélectionné dans ma listbox.

    Cette valeur est unique dans la ligne.

  10. #10
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Le souci est que tu remplis ta ListBox avec une plage de cellules filtrée.
    Par conséquent, tu ne peux pas retrouver directement ton numéro de ligne.
    Il te faut donc stocker tes numéros de ligne dans une nouvelle colonne de ta ListBox, colonne que tu rendras "invisible" en réglant la propriété ColumnWidth de ta listBox.

    Peux tu nous donner ici le code :
    > du ou des événements Initialize et/ou Activate de ton Userform
    > de remplissage de ta ListBox

    Merci.
    A++

  11. #11
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Ma listbox se remplie d'après un choix de combobox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CbFormation2_change()
     
    Set BD = f.Range("A2:AG" & f.[AG65000].End(xlUp).Row)
     
       Dim a()
       Ligne = 0
       For i = 1 To BD.Rows.Count
         If BD.Cells(i, 5) = Me.CbFormation2 Then
           Ligne = Ligne + 1
           ReDim Preserve a(1 To BD.Columns.Count, 1 To Ligne) 
           For k = 1 To BD.Columns.Count: a(k, Ligne) = BD.Cells(i, k): Next k
          End If
       Next i
       Me.LbPersonnel2.Column = a

  12. #12
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Essaye ceci, tu devrais voir tes numéros de ligne apparaître en 1ère colonne de ta listBox :

    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
       Set BD = f.Range("A2:AG" & f.[AG65000].End(xlUp).Row)
     
       Dim a()
       Ligne = 0
       For i = 1 To BD.Rows.Count
          If BD.Cells(i, 5) = Me.CbFormation2 Then
             Ligne = Ligne + 1
             ReDim Preserve a(1 To BD.Columns.Count + 1, 1 To Ligne)
             a(LBound(a, 1), Ligne) = i    'on stocke en colonne 1 le numéro de ligne
             For k = LBound(a, 1) + 1 To UBound(a, 1)  'je préfères boucler d'une borne à l'autre d'une variable tableau
                a(k, Ligne) = BD.Cells(i, k)
             Next k
          End If
       Next i
       Me.LbPersonnel2.Column = a

  13. #13
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Ah oui, déjà ok ça fonctionne, je vois bien des numéros dans ma 1ère colonne de ma listbox

  14. #14
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bon.
    A mon avis cela va être inutile...
    Mais bon.

    Tu remplis ta listbox en filtrant une plage d'une feuille A.
    Ok.
    Tu sélectionnes une (ou des) ligne(s) dans ta listBox, lignes que tu veux mettre après dans une autre feuille que la feuille A.

    Expliques nous exactement ce que tu veux faire.

  15. #15
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Je sélectionne une ligne de ma listbox.
    Mes combobox et textbox se remplissent en fonction de ma sélection de cette façon :

    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
    33
    34
    35
    36
    37
    38
    39
    Dim i As Integer
        For i = 0 To LbPersonnel2.ListCount - 1
            If LbPersonnel2.Selected(i) = True Then
                'FrameCaract2
                TbFormationNTS2 = LbPersonnel2.List(i, 5)
                TBType = LbPersonnel2.List(i, 11)
                TbJours2 = LbPersonnel2.List(i, 9)
                TbHeures2 = LbPersonnel2.List(i, 10)
                TbInEx2 = LbPersonnel2.List(i, 12)
                TbCoutF°2 = LbPersonnel2.List(i, 16)
                'FrameProg2
                CbDébut3 = LbPersonnel2.List(i, 6)
                CbFin3 = LbPersonnel2.List(i, 7)
                TbSemaine3 = LbPersonnel2.List(i, 8)
                CbOrganisme2 = LbPersonnel2.List(i, 13)
                CbLieu2 = LbPersonnel2.List(i, 14)
                Tbcommande2 = LbPersonnel2.List(i, 21)
                If LbPersonnel2.List(i, 20) = "OK" Then
                CheckPréRequis2.Value = True
                Else
                CheckPréRequis2.Value = ""
                End If
                If LbPersonnel2.List(i, 22) = "OK" Then
                CheckConvocation2.Value = True
                Else
                CheckConvocation2.Value = ""
                End If
                'FramePnt2
                Lundi2 = LbPersonnel2.List(i, 27)
                Mardi2 = LbPersonnel2.List(i, 28)
                Mercredi2 = LbPersonnel2.List(i, 29)
                Jeudi2 = LbPersonnel2.List(i, 30)
                Vendredi2 = LbPersonnel2.List(i, 31)
                ObservationsPnt2 = LbPersonnel2.List(i, 32)
                'FrameObs2
                TbObs2 = LbPersonnel2.List(i, 26)
     
            End If
            Next i

    Tout roule.

    Si par exemple Monsieur DUPONT a une formation auprès de l'organisme TRUC, ma combobox CbOrganisme2 va afficher TRUC. Si je me suis trompée et que finalement sa formation a lieu auprès de l'organisme BIDULE, je choisi dans ma combo BIDULE.
    Ok, jusque là.

    Ce que je souhaite et que je n'arrive pas à faire : Pour que BIDULE s'inscrive à la place de TRUC dans ma 13ème cellule de ma ligne sélectionnée, je dois cliquer sur un bouton "MODIFIER".
    Je ne sais pas comment coder cette partie -_-"

  16. #16
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Ce que je souhaite et que je n'arrive pas à faire : Pour que BIDULE s'inscrive à la place de TRUC dans ma 13ème cellule de ma ligne sélectionnée, je dois cliquer sur un bouton "MODIFIER".
    Je ne sais pas comment coder cette partie -_-"
    Même avec le numéro de ligne tu n'y arrives pas?

  17. #17
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Je suis désolée, mais non. J'ai bien ton MsgBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox LbPersonnel2.List(LbPersonnel2.ListIndex, 13)
    qui me montre bien le contenu de la cellule avant que celui-ci soit écrasé.

  18. #18
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    J'ai essayé des choses, ça ne fonctionne pas. Je suis sûre que la solution est facile, mais pour moi cela n'est pas tout à fait simple.

    C'est ce petit bout de code qui me bloque pour tout le reste , après mon projet sera terminé. Et grâce à vous !

    Svp, puis-je avoir un peu d'aide encore ?

  19. #19
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Peux-tu nous envoyer ton fichier, avec un minimum de données, anonymisé?

  20. #20
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Bonjour,

    D'accord j'essai de faire ça dans la journée, sinon la semaine prochaine car je ne travaille pas vendredi.
    Merci beaucoup d'être revenu vers moi

    A très vite.

Discussions similaires

  1. Erreur d'exécution "13" incompatibilité de type
    Par zenico64 dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 14/12/2010, 10h45
  2. Erreur d'exécution 13 : incompatibilité de type
    Par Ptikir dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/04/2009, 15h59
  3. erreur d'exécution 13 incompatibilité de type
    Par glamgeek dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/03/2009, 12h03
  4. "erreur d'exécution 13 : incompatibilité de type"
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 19/07/2007, 15h47
  5. erreur d'exécution 13, incompatibilité de type
    Par PHPdudimanche dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/06/2007, 15h20

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