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 :

la fonction DatePart incompatibilité de type


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 145
    Par défaut la fonction DatePart incompatibilité de type
    Bonjour le forum,
    Mon code a une erreur de type.

    J'ai un tableau où j'aimerais que si la date (ex : 20/04/2010) est de 2010 je la sourligne en vert, si elle est de 2011 je la sourligne en bleu ... ect

    Sauf que mon soucis aujourd'hui c'est que ma date estsous la forme de jj/mm/yyyy et que je ne veux traiter que la valeur du mois.

    Donc dans mon code voilà la ligne qui cloche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If DatePart("m", .Cells(i, 1)) = strtext Then



    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
    Sub mafonction(strtext As String, intCOlorIndex)
     
    Dim i As Integer, verif As Integer, plage1 As String
    Dim LaDerniere As Integer
     
     
    With Worksheets("CUR ASTREINTE")
       LaDerniere = .Range("A" & .Rows.Count).End(xlUp).Row
       verif = 0
       For i = 1 To LaDerniere
             If DatePart("m", .Cells(i, 1)) = strtext Then
                verif = verif + 1
                If verif = 1 Then
                   plage1 = .Range("a" & i).Address
                   Else
                   plage1 = plage1 & "," & .Range("A" & i).Address
                End If
             End If
       Next i
      If Not Range(plage1) Is Nothing Then Range(plage1).Select
      Range(plage1).Interior.ColorIndex = intCOlorIndex
     
    End With
     
    End Sub
     
     
     
    Sub text1()
    Call mafonction("04", 4)
    End Sub

  2. #2
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour,

    utilise Month à la place de DatePart,

    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
    Sub mafonction(strtext As interger, intCOlorIndex)
    Dim i As Integer, verif As Integer, plage1 As String
    Dim LaDerniere As Integer
    With Worksheets("CUR ASTREINTE")
       LaDerniere = .Range("A" & .Rows.Count).End(xlUp).Row
       verif = 0
       For i = 1 To LaDerniere
             If Month(Cells(i, 1)) = strtext Then
                verif = verif + 1
                If verif = 1 Then
                   plage1 = .Range("a" & i).Address
                   Else
                   plage1 = plage1 & "," & .Range("A" & i).Address
                End If
             End If
       Next i
      If Not Range(plage1) Is Nothing Then Range(plage1).Select
      Range(plage1).Interior.ColorIndex = intCOlorIndex
    End With
    End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 145
    Par défaut
    Bon en fait le soucis je viens de comprendre.
    En fait quand j'appelle mafonction avec celle ligne de code, qui recherche toute les valeur de 2014, ça me crée un bug alors que les autres (avec 2010, 1011, 2012 y a pas de soucis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call mafonction(2014, 2)
    Ca viens du fait que dans mon tableau 2014 n'existe pas alors que les autres apparaissent au moin une fois.
    La ligne qui bug pour 2014 c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Range(plage1) Is Nothing Then Range(plage1).Select
    Je comprends pas pourquoi???
    erreur soulignée "méthode range de l'objet à échoué"
    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
    Sub mafonction(strtext As String, intCOlorIndex)
     
    Dim i As Integer, verif As Integer, plage1 As String
    Dim LaDerniere As Integer
     
     
    With Worksheets("CUR SEMAINE")
       LaDerniere = .Range("A" & .Rows.Count).End(xlUp).Row
       verif = 0
       For i = 3 To LaDerniere
             If Year(.Cells(i, 1)) = strtext Then
                verif = verif + 1
                If verif = 1 Then
                   plage1 = .Range("a" & i).Address
                   Else
                   plage1 = plage1 & "," & .Range("A" & i).Address
                End If
             End If
       Next i
      If Not Range(plage1) Is Nothing Then
      Range(plage1).Select
      Range(plage1).Interior.ColorIndex = intCOlorIndex
      End If
     
    End With
     
    End Sub
     
    Sub text1()
    Call mafonction(2010, 3)
    Call mafonction(2011, 4)
    Call mafonction(2012, 4)
    Call mafonction(2014, 2)
    End Sub

  4. #4
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour adriennoob,

    j'ai fais un test avec ta function et je n'ai pas ce message d'erreur, peut tu essayer ce fichier pour voir si tu as toujours la même erreur,

    http://cjoint.com/?etpZERXTbw

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 145
    Par défaut
    J'ai essayé quelque truc mais ça ne marche vraiment pas.

    Si j'active le tiens non pas en cliquant sut le bouton, mais en passant par l'interface VBA, il bug aussi. Par contre il marche bien si je clic sur le bouton.
    ????????

    Pardon de surcharger la discussion mais juste tu verra que si tu eesaye avec 2009 tu ne pourra pas le sourligner. C'est là mon problème c'est que la date 2009 n'est pas compris dans le tableau de donnée car tu commence a i =3 ...
    Et tu remarque que si la valeur 2009 n'est pas dans les données alors ça buggg

  6. #6
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    essai en modifiant la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Range(plage1) Is Nothing Then
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not plage1 = "" Then

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/01/2012, 12h37
  2. Incompatibilité de type sur fonction Evaluate
    Par Titened dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/03/2011, 08h44
  3. [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
  4. Réponses: 9
    Dernier message: 02/03/2005, 22h46
  5. Fonction divisant argument de type inconnu
    Par Nasky dans le forum C
    Réponses: 9
    Dernier message: 29/07/2003, 00h32

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