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 entier [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Billets dans le blog
    1
    Par défaut Incompatibilité de type entier
    à tous !

    J'ai réalisé la macro suivante qui me permet de déterminer une période (normal, vacance d'été, vacance de noël, etc...) de l'année à partir d'une date donnée :

    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
     
    Sub Periode()
        Dim val, c As Integer
        val = Worksheets(1).Cells(36, 6)
        For c = 2 To 30
            If Month(Worksheets(2).Cells(29, c)) = val Then
                Select Case val
                    Case Is = 1, 3, 5, 6, 9, 11
                        Worksheets(8).Cells(2, c) = "normal"
                    Case Is = 2
                        Worksheets(8).Cells(2, c) = "fevrier"
                    Case Is = 4
                        Worksheets(8).Cells(2, c) = "paques"
                    Case 7 To 8
                        Worksheets(8).Cells(2, c) = "été"
                    Case Is = 10
                        Worksheets(8).Cells(2, c) = "toussaint"
                    Case Is = 12
                        Worksheets(8).Cells(2, c) = "noël"
                End Select
            End If
        Next c
    End Sub
    Le problème c'est que la macro fonctionne, mais elle m'affiche un message d'erreur à la fin "incompatibilité de type" et marque un point d'arrêt à la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Month(Worksheets(2).Cells(29, c)) = val Then
    Au début j'ai pensé que la fonction month() renvoie un type Date.
    Mais ce n'est pas le cas, elle renvoie un entier étant le numéro du mois.
    La variable val contient bien sur le numéro du mois de type entier.
    Alors je ne comprends pas vraiment pourquoi la macro fontionne s'il y a une erreur dans le programme.

    Quelqu'un peut-il m'aider ?

  2. #2
    Membre chevronné Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Par défaut
    Bonjour,
    Dissocie cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Month(Worksheets(2).Cells(29, c)) = val Then
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test = Worksheets(2).Cells(29, c)
    If Month(test) = val Then
    et regarde le type de la valeur de la variable "test".
    (point rouge sur la ligne du "if" et affichage> variable local)
    on aura un ordre d'idée du problème.

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Billets dans le blog
    1
    Par défaut
    Fait !

    Du coup lors du premier test, la variable test est égale à "23/03/15"

  4. #4
    Membre expérimenté

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Billets dans le blog
    1
    Par défaut
    C'est bon j'ai trouvé mon erreur !

    En fait quand je n'ai pas de date j'ai mis une valeur de texte. D'où le message d'erreur.

    Merci quand même pour ton aide, elle m'a été très utile

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Val est une fonction de VB il est donc très fortement déconseillé d'utiliser une variable portant ce nom !
    extrait de l'aide :
    Renvoie le nombre contenu dans une chaîne de caractère sous la forme d'une valeur numérique d'un type approprié.

  6. #6
    Membre chevronné Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    Val est une fonction de VB il est donc très fortement déconseillé d'utiliser une variable portant ce nom !
    extrait de l'aide :
    Renvoie le nombre contenu dans une chaîne de caractère sous la forme d'une valeur numérique d'un type approprié.
    effectivement, et si c'est pas ça, converti ta chaine de caractère en date car la fonction month() demande une variable de type date en entrée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function Month(ByVal DateValue As DateTime) As Integer

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

Discussions similaires

  1. Message incompatibilité de type
    Par Daniel MOREAU dans le forum Access
    Réponses: 5
    Dernier message: 10/10/2005, 20h57
  2. incompatibilité de type
    Par zooffy dans le forum Access
    Réponses: 2
    Dernier message: 13/06/2005, 15h12
  3. Incompatibilité de types dans un formulaire
    Par ahage4x4 dans le forum ASP
    Réponses: 3
    Dernier message: 03/05/2005, 15h39
  4. [XSD] Incompatibilité des types xs:ID et xs:IDREF ?
    Par Cpt.FLAM dans le forum Valider
    Réponses: 6
    Dernier message: 08/04/2005, 14h54
  5. [LG]type entier
    Par fakroun dans le forum Langage
    Réponses: 3
    Dernier message: 20/11/2003, 23h39

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