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


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 12
    Par défaut Incompatibilité de type
    Bonjour,

    J'ai une variable "num" pour laquelle je voudrais "si elle change" qu'un code s'execute.
    Je connaissais "If Application.Intersect(Range("V1"), Target) Is Nothing Then..."
    utilisée lorsque la valeur d'une cellule (ici V1) change mais si je mets ma variable j'obtiens "incompatibilité de type" de même que si je fais "If num is Change"....

    Pouvez vous m'indiquer pourquoi j'obtiens cette erreur? Merci d'avance pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Simplement car ta variable "num" n'est pas un type "Range". En effet, lorsque tu passes en paramètre Application.Intersect(Range("V1"), Target) des variables qui ne sont pas des "Range" la fonction retournera une incompatibilité de type.

    Il faudrait que tu nous en dise d'avantage pour que nous puissions t'aider !

  3. #3
    Membre averti
    Inscrit en
    Février 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 12
    Par défaut
    Voilà mon 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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim Num As Long, n As Long
    Num = 0
    n = Target.Row
    For x = 1 To 17
     
    If Cells(n, 4) = "canceled" And Cells(n, 17) = "Validé" Then
    Cells(n, x).Interior.ColorIndex = 41
    End If
    If Cells(n, 4) = "canceled" And Cells(n, 17) = "Validé" Then
    Num = Cells(n, 6)
    End If
    If Num Is Change Then    'A ce niveau j'obtiens= incompatibilité de type
        For A = 9 To 100
        For b = 1 To 17
        If Cells(A, 6) = Num Then
        Cells(A, b).Interior.ColorIndex = 41
        End If
        Next b '
        Next A '
    End If
    Next x '
    End Sub
    Je sais qu'il attent un Range avec "Application.Intersect(Range("V1"), Target) Is Nothing Then", mais , sauf si je me trompe, je peux aussi utilisé "Is nothing" et "is change" avec une variable. Du coup je ne comprends pas l'erreur.

    Au début je l'initialise à 0, puis SI elle j'ai des conditions "canceled" et "validé" alors elle change. Du coup, SI elle change (la ou ça bug) une ligne donnée change de couleur...

    Est ce que c'est plus clair ? (peut-etre encore moins?)

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Où as-tu vu une fonction/méthode "Change" ?!

  5. #5
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Voici ce que je comprends de ton code :
    Lorsqu’une cellule de la feuille est modifiée,
    sur la ligne modifiée, s’il y a "canceled" en colonne D et "Validé" en colonne Q, alors la plage de A à Q est colorée en bleu.
    Ensuite, on compare la valeur en colonne F de la ligne modifiée avec les valeurs en colonne F des lignes 9 à 100. Si les valeurs sont identiques, la plage de A à Q est colorée en bleu.
    Si cela correspond bien à ce que tu souhaites faire, le code ci-dessous doit suffire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim n As Long
        n = Target.Row
        If Cells(n, 4) = "canceled" And Cells(n, 17) = "Validé" Then
            Range(Cells(n, 1), Cells(n, 17)).Interior.ColorIndex = 41
            For A = 9 To 100
                If Cells(A, 6) = Cells(n, 6) Then
                    Range(Cells(A, 1), Cells(A, 17)).Interior.ColorIndex = 41
                End If
            Next A
        End If
    End Sub
    Cordialement.

Discussions similaires

  1. Incompatibilité de type ListBox
    Par priest69 dans le forum Access
    Réponses: 1
    Dernier message: 16/11/2005, 11h19
  2. Message incompatibilité de type
    Par Daniel MOREAU dans le forum Access
    Réponses: 5
    Dernier message: 10/10/2005, 20h57
  3. incompatibilité de type
    Par zooffy dans le forum Access
    Réponses: 2
    Dernier message: 13/06/2005, 15h12
  4. Incompatibilité de types dans un formulaire
    Par ahage4x4 dans le forum ASP
    Réponses: 3
    Dernier message: 03/05/2005, 15h39
  5. [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

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