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 à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Points : 11
    Points
    11
    Par défaut erreur d'exécution 13, incompatibilité de type
    Bonjour, j'ai l'erreur suivante, comment y remédier ?
    "erreur d'exécution 13"
    "incompatibilité de type"
    Je souhaite enlever les espaces de toute cellule de mon tableau

    1/ Fonction pour enlever les espaces

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function EnleverEspaces()
    Dim Cell As range
    For Each Cell In Selection
    Cell.Value = Trim(Cell.Text)
    Next Cell
    End Function
    2/ Ma sélection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim DepartColonne
    Set DepartColonne = Worksheets("PRIX").range("A3:T200")
    3/ Mon appel de la fonction au sein d'une autre fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnleverEspaces (DepartColonne)

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    1ere chose remplacer la fonction par une procédure, car aucun résultat n'est renvoyé.
    Ensuite rajouter un paramètre à cette procédure, sinon ça ne sert à rien de définir au préalable la plage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub EnleverEspaces(plage As Range)
        Dim Cell As range
        For Each Cell In plage.Cells
            Cell.Value = Trim(Cell.Text)
        Next Cell
    End Sub

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Points : 11
    Points
    11
    Par défaut erreur d'exécution 424 - objet requis
    Merci

    Je comprends la fonction ou plutôt SUB

    J'ai mis la SUB en dehors de ma fonction, en haut dans le module.
    Pour l'appeler, je fais :
    EnleverEspacesAvantApres (DepartColonne)

    Ce qui donne l'erreur suivante :
    erreur d'exécution 424 - objet requis

    Je passe donc mal le paramètre de ma plage à traiter ?
    Comment faire ?

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Peux-tu nous montrer ton code? et nous dire à quelle ligne tu as l'erreur?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Points : 11
    Points
    11
    Par défaut code total
    Voici le 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
    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
    Sub EnleverLesEspaces(plage As range)
        Dim Cell As range
        For Each Cell In plage.Cells
            Cell.Value = Trim(Cell.Text)
        Next Cell
    End Sub
     
    Function MiseAjour()
     
    'sélection multiple'
     
    Dim Depart As range
    Set Depart = Worksheets("PRIX").range("A3:C200")
    Dim Depart2 As range
    Set Depart2 = Worksheets("PRIX").range("G3:G200")
     
    Dim Destination As range
    Set Destination = Worksheets("PRODUIT").range("A3:C200")
    Dim Destination2 As range
    Set Destination2 = Worksheets("PRODUIT").range("F3:F200")
     
    'copie'
     
    Depart.Copy Destination
    Depart2.Copy Destination2
     
    'tri des deux tableaux en respectant les formules'
     
    Dim DepartColonne
    Set DepartColonne = Worksheets("PRIX").range("A3:T200")
     
    'fonction qui genere l'erreur erreur d'execution 424 objet requis '
    EnleverLesEspaces (DepartColonne)
     
     
    DepartColonne.Sort Key1:=Worksheets("PRIX").range("A2"), Order1:=xlAscending, Key2:=Worksheets("PRIX").range("B2"), Order2:=xlAscending, MatchCase:=False, Orientation:=xlTopToBottom
     
    'ajout de ligne à chaque fin de marque et coloriage premiere occurence'
    Dim x As Integer, i As Integer
     
    x = Worksheets("PRIX").range("A65536").End(xlUp).Row
     
    For i = x To 2 Step -1
        If Cells(i, 1) <> Cells(i - 1, 1) And Cells(i, 1) <> "" Then
            Cells(i, 1).Interior.ColorIndex = 4
            Cells(i, 1).EntireRow.Insert
        End If
    Next i
     
    Dim DestinationColonne
    Set DestinationColonne = Worksheets("PRODUIT").range("A3:T200")
    DestinationColonne.Sort Key1:=Worksheets("PRODUIT").range("A2"), Order1:=xlAscending, Key2:=Worksheets("PRODUIT").range("B2"), Order2:=xlAscending, MatchCase:=False, Orientation:=xlTopToBottom
     
    End Function

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonjour,

    Essaye d'appeler ta procedure comme ceci:

    EnleverLesEspaces DepartColonne


    Cordialement,

    Tirex28/

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Erreur de compilation - Type d'argument ByRef incompatible
    Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnleverLesEspaces DepartColonne
    Réaction :
    Erreur de compilation
    Type d'argument ByRef incompatible
    Cette erreur se produit en cliquant n'importe où sur la feuille, et pas seulement sur mon bouton d'action suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As range)
    If Target.Address = "$B$1" Then range("$C$1") = MiseAjour()
    End Sub

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Resolu
    J'ai contourné le problème.
    Dans ma fonction, en tout début j'ai mis cette action.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set Source = Worksheets("PRIX").range("A3:C200")
        Dim Cell As range
        For Each Cell In Source.Cells
            Cell.Value = Trim(Cell.Text)
        Next Cell
    Je vais tout de même essayer de le faire par le moyen que vous m'aviez donné.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    STP, mets ton code dans des balises # ça sera bcp bcp plus lisible...
    Modifies ton code comme suit :
    Il faut que tu déclares ta variable DepartColonne comme un Range, puisque tu forces le paramètre de la procédure EnleverLesEspaces à un Range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim DepartColonne As Range
    Set DepartColonne = Worksheets("PRIX").Range("A3:T200")
     
    ' syntaxe correcte pour appel d'une colonne
    EnleverLesEspaces DepartColonne
    'ou
    'Call EnleverLesEspaces(DepartColonne)
    Encore une fois, ce n'est pas une Function mais une Sub puisque cela ne te retourne rien. Et pour l'appeler tu n'auras pas à faire : range("$C$1") = MiseAjour(), mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Call MiseAjour
    'ou simplement
    MiseAjour

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

Discussions similaires

  1. [XL-2003] erreur d'exécution 13 incompatibilité de type
    Par joelweb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/07/2012, 17h07
  2. Erreur d'exécution "13" incompatibilité de type
    Par zenico64 dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 14/12/2010, 10h45
  3. 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
  4. 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
  5. "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

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