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 dans code - Incompatibilité de type [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Novembre 2019
    Messages : 64
    Par défaut Erreur dans code - Incompatibilité de type
    Bonjour le forum,

    J'ai mis en place le code suivant. Sur la première parte qui est censée cacher toutes les feuilles autres que celle qui est active et la feuille "Accueil".
    Hors j'ai un message d'erreur 13 - Incompatibilité de type, cela concerne la ligne en gras et soulignée (ligne 10)
    Je n'arrive pas à trouver la solution, pouvez-vous m'éclairer s'il vous plait ?
    Je vous en remercie 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub CmbVille_Change()
    Dim ws As Worksheets
    Application.ScreenUpdating = False
    
        Sheets("Arch_Ville").Visible = True
        Sheets("Arch_Ville").Activate
        Range("A3").Select
            
    'Commencer une boucle sur toutes les feuilles du classeur
        For Each ws In ThisWorkbook.Worksheets
    'Vérifie le nom de chaque feuille du classeur
            If ws.Name <> ThisWorkbook.ActiveSheet.Name And Worksheets("Accueil") Then
    'Masquer les feuilles
            ws.Visible = xlSheetVeryHidden
            End If
    'On passe à la feuille suivante
        Next ws
            
                With ListVille
                    .Clear
                    .ColumnCount = 3
                    .Width = 516
                    .ColumnWidths = "235;235;46"
                    
                        If CmbVille <> "" Then
                        For Ligne = 7 To 6000
                        
                            If UCase(Cells(Ligne, 6)) Like "*" & UCase(CmbVille) & "*" Then
                                .AddItem Cells(Ligne, 6)
                                .List(.ListCount - 1, 1) = Cells(Ligne, 8)
                                .List(.ListCount - 1, 2) = Ligne
                            End If
                        Next
                        End If
                End With
                
    Application.ScreenUpdating = True
    End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Tu dois déclarer ta variable ws en type Worksheet, qui est un élément de la collection Worksheets.

    Cet article t'expliquera pourquoi.

  3. #3
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Novembre 2019
    Messages : 64
    Par défaut
    Bonjour mat955

    Merci pour votre aide, mon problème est résolu.
    Je vous souhaite une agréable journée

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Août 2024
    Messages : 8
    Par défaut problème erreur d'éxécution '13' - Incompatibilité de type
    Bonjour

    je suis novice sous VBA - j'ai repris les macros d'un mec qui maitrisait pas mal mais il est parti et je dois me débrouiller tout seul (enfin pas tout seul vu que vous êtes là ;-) )

    la macro tournait bien et du jour au lendemain elle s'est mise à 'merdouiller'
    j'ai l'erreur suivante
    Erreur d'éxécution '13'
    Incompatibilité de type

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
        Dim DerLigne As Integer, ColOrgane As Integer, ColBesoin23 As Integer, ColBesoin24 As Integer, ColBesoin25 As Integer, ColBesoin26 As Integer
        Dim ColNeuf As Integer, ColGR As Integer, ColPR As Integer, ColCasse As Integer, ColAssistance As Integer, ColMAJAssistance As Integer, ColMAJ23 As Integer, ColMAJAssist24 As Integer
        Dim ColCrash As Integer, ColExtraStock As Integer, LigInfo As Integer, ColPrix As Integer, ColPrixCorrige As Integer
        Dim ColReference As Integer, ColQuantiteStock As Integer, ColQuantiteDA As Integer, ColCommande As Integer
     
        LigInfo = 9
        DerLigne = ThisWorkbook.Worksheets("Nomenclature WEC Etude 24").Range("A" & Rows.Count).End(xlUp).Row
        ColOrgane = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Organe", LigInfo)
        'A modifier si on change les cas*************************************************************************************************************************************
        ColReference = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Référence", LigInfo)
        ColQuantiteStock = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Stk Projet Total", LigInfo)
        ColQuantiteDA = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Quantité DA", LigInfo)
        ColCommande = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Quantité restant à livrer", LigInfo)
        ColBesoin24 = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Besoin 2024", LigInfo)
        ColBesoin25 = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Besoin 2025", LigInfo)
        ColBesoin26 = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Besoin 2026", LigInfo)
        ColNeuf = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Neuf", LigInfo)
        ColGR = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Grosse Révision", LigInfo)
        ColPR = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Petite Révision", LigInfo)
        ColMAJ23 = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "MAJ pièce 2023", LigInfo)
        ColCasse = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "casse", LigInfo)
        ColAssistance = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Assistance", LigInfo)
        ColMAJAssistance = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "MAJ Assistance", LigInfo)
        ColMAJAssist24 = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "MAJ assistance def 2024", LigInfo)
        ColCrash = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Crash", LigInfo)
        ColExtraStock = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Extra Stock", LigInfo)
        ColPrix = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Prix dernière commande", LigInfo)
        ColPrixCorrige = ColonneCible(ThisWorkbook.Name, "Nomenclature WEC Etude 24", "Prix corrigé", LigInfo)
        '*********************************************************************************************************************************************************************
     
        '2. On parcours la nomenclature pour définir pour chaque ligne le volume nécessaire'
        'On change de stratégie on va s'appuyer sur les besoins afin de prendre en compte le stock
        'On alimente la cartographie
        ReDim Cartographie(DerLigne, 9)
        ' cartographie(0) = Pos --> Nécessaire
        ' cartographie(1) = Ref
        ' cartographie(2) = Stock
        ' cartographie(3) = DA
        ' cartographie(4) = commande
        ' cartographie(5) = organe
        ' cartographie(6) = prix
        ' cartographie(7) = Besoin 24
        ' cartographie(8) = Besoin 25
        ' cartographie(9) = Besoin 25
     
     
     
        Dim i As Integer, j As Integer, k As Integer, Prix_Retenu As Double
        Dim Reference_Connue As Boolean
        With ThisWorkbook.Worksheets("Nomenclature WEC Etude 24")
            For i = LigInfo + 1 To DerLigne
                If .Cells(i, ColOrgane) <> "" Then
                    Reference_Connue = False
                    'Je vérifier que la référence n'est pas déjà enregistré
                    j = 0
                    Do Until Cartographie(j, 1) = ""
                        If StrComp(Cartographie(j, 1), .Cells(i, ColReference), vbTextCompare) = 0 Then
                            'si trouve on conserve les information Stock,DA, Commande et on ajoute le besoin
                            '?Gestion des organes différents--> On impute sur le 1er organe vu (on a le budget mais au mauvais endroit)
                            Reference_Connue = True
                            Exit Do
                        End If
                        j = j + 1
                    Loop
                    If Reference_Connue = False Then
                        Cartographie(k, 1) = .Cells(i, ColReference)
                        Cartographie(k, 2) = .Cells(i, ColQuantiteStock)
                        Cartographie(k, 3) = .Cells(i, ColQuantiteDA)
                        Cartographie(k, 4) = .Cells(i, ColCommande)
                        Cartographie(k, 5) = .Cells(i, ColOrgane)
                        If .Cells(i, ColPrixCorrige) <> "" Then
                            Cartographie(k, 6) = .Cells(i, ColPrixCorrige)
                        Else
                            Cartographie(k, 6) = .Cells(i, ColPrix)
                        End If
                        Cartographie(k, 7) = .Cells(i, ColBesoin24)
                        Cartographie(k, 8) = .Cells(i, ColBesoin25)
                        Cartographie(k, 9) = .Cells(i, ColBesoin26)
                        k = k + 1
                    Else
                        Cartographie(j, 7) = Cartographie(j, 7) + .Cells(i, ColBesoin24)
                        Cartographie(j, 8) = Cartographie(j, 8) + .Cells(i, ColBesoin25)
                        Cartographie(j, 9) = Cartographie(j, 9) + .Cells(i, ColBesoin26)
                    End If
    la macro s'arrête à cette ligne
    Cartographie(j, 7) = Cartographie(j, 7) + .Cells(i, ColBesoin24)


    ce que je ne comprends c'est qu'elle fonctionnait et d'un seule coup elle a bloqué

    si vous savez m'aider je vous en suis grandement reconnaissant.

    NB

  5. #5
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 208
    Par défaut
    Hello,

    qu'est-ce qu'il y a dans la cellule .Cells(i, ColBesoin24) ?
    A priori ça ne serait pas un nombre

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Août 2024
    Messages : 8
    Par défaut
    bonjour

    j'ai relancé le code et essayé d'avoir plus de détails

    le .cells(i, colBesoin24) ça correspond à la ligne i = 10626 colonne ColBesoin24 = 34
    donc si je comprends bien c'est ligne 10626 colonne AH et oui il a bien un nombre dans cette cellule

    en pièce jointe un word avec des screen shots.

    merci nain porte koi de te pencher sur mon problème

    NBbug macro.docxbug macro.docx

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

Discussions similaires

  1. Erreur dans code VBA
    Par symphyle dans le forum VBA Access
    Réponses: 7
    Dernier message: 23/12/2008, 14h28
  2. erreur dans code vba
    Par Renardo dans le forum IHM
    Réponses: 2
    Dernier message: 15/12/2008, 15h35
  3. [SQL] Erreur dans code PHP
    Par Mans91 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/06/2007, 10h08
  4. erreur dans code: écrir dans un fichier
    Par wiss20000 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 30/03/2007, 09h49
  5. [MySQL] Erreur dans code php
    Par Badr3am dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 31/01/2006, 22h16

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