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 :

Syntaxe condition If


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Par défaut Syntaxe condition If
    Bonjour ,

    J'ai un problème concernant la syntaxe de cette condition If :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Month(ActiveCell.Value) = Month(Sheets("Compte").Cells(i, 8).Value) And Year(ActiveCell.Value) = Year(Sheets("Compte").Cells(i, 8).Value) Then
    Pouvez vous me dire qu'est ce qu'il ne va pas ... ??

    Merci d'avance de votre réponse !!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    As-tu un message d'erreur ? Le résultat n'est pas celui attendu ? Comment se présentent tes données dans les cellules ?

    Philippe

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Par défaut
    En fait cette boucle if est incluse dans une boucle for ; ce qui explique le i .
    Toute les cellules concernées comporte des dates ...

    sinon oui j'ai un message d'erreur : Incompatibilité de type ???

    Merci

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Pour trouver ce qui cloche, mets un point d'arrêt sur le IF et place ton curseur sur chaque month(...) pour voir ce qu'il retourne.

    Si ca ne fonctionne pas, tu peux avant le if ajouter des lignes msgbox month(...) et voir laquelle plante

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par poilou2607 Voir le message
    sinon oui j'ai un message d'erreur : Incompatibilité de type ???
    Pourquoi ne pas le dire tout de suite , je t'ai demandé comment sont tes données, tu n'as pas répondu.

    De plus, comme le signale jfontaine, le point d'arrêt te permettra de savoir lequel bug, car à mon avis c'est comment sont mises tes dates dans tes cellules.

    Philippe

  6. #6
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonjour,

    Sinon oui j'ai un message d'erreur : Incompatibilité de type ??
    Le plus probable, de très loin selon moi, est que la cellule active, ou l’une des cellules balayées dans ta boucle (Sheets("Compte").Cells(i, 8)) contenait du texte ou un autre élément non numérique, lorsque le traitement a été lancé, auquel cas Month() et Year() auront provoqué l’incompatibilité de type.

    D’autre part, voici quelques conseils pour améliorer ton code : utilise des variables pour les cellules auxquelles tu te réfères Ton code sera plus concis et plus lisible.

    Par exemple "RefCpte" pour la cellule de la feuille "Compte", et Ref pour la cellule active. Tu peux également de dispenser des .Value chaque fois que tu fais référence à une cellule unique, car "Value" est la propriété par défaut de l’objet Range. À de très rares cas particuliers près, lorsqu’il s’agit d’une seule cellule, .Value est implicite et il n’est pas nécessaire de l’écrire.

    Voici ce que pourrait donner le code découlant des principes que je propose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Exemple()
    Dim Ref As Range, RefCpte As Range, i As Integer
    Set Ref = ActiveCell
    Set RefCpte = Sheets("Compte").Range("H1")
        For i = 0 To 10
                If Month(Ref) = Month(RefCpte.Offset(i)) And Year(Ref) = Year(RefCpte.Offset(i)) Then
     
                End If
        Next
    End Sub

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    un exemple, tester le type de donnée avant de faire ton test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If IsDate(ActiveCell.Value) Then
         For i = 1 To 27
              If IsDate(Cells(i, 6).Value) Then
                   If Format(ActiveCell.Value, "mmyyyy") = Format(Cells(i, 6).Value, "mmyyyy") Then Cells(i, 6).Interior.ColorIndex = 23
              End If
         Next i
    End If

Discussions similaires

  1. [Syntaxe] conditions sur les JOIN
    Par Aka Guymelef dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/04/2008, 16h56
  2. [phpBB][2] Syntaxe condition
    Par wanagro dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 20/12/2007, 10h13
  3. Syntaxe condition if: AND, OR, elseif
    Par gregounnet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2007, 15h04
  4. syntaxe condition pour lancer script
    Par mussara dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/04/2007, 14h01
  5. Syntaxe condition VraiFaux dans requête
    Par SuperBlaireau dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 16/06/2006, 15h39

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