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 :

Condition: > ou < à une variable


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
    Avril 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 28
    Par défaut Condition: > ou < à une variable
    Bonjour,

    J'essaye de renseigner 1 cellule de chaque ligne et mettre "RECENTE" dedans.

    Pour se faire, voici 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
    Set Ceclasseur = Application.ThisWorkbook 'mon classeur de travail
    Set classeurtempo = Workbooks.Open(MONFICHIER REFERENCE.xls)
    classeurtempo.Activate
     
    Dim plageOC As Range, OCMAX As String
    Set plageOC = Range("A:A")
    OCMAX = Application.WorksheetFunction.Max(plageOC)
     
    Ceclasseur.Activate
    Dim ligne As Long
    For ligne = 2 To Range("A65000").End(xlUp).Row
    If Cells(ligne, 5).Value > "" & OCMAX & "" And Cells(ligne, 13) = "" Then Cells(ligne, 13) = "RECENTE"
    Next ligne
    classeurtempo.Close False
    end sub
    Donc, je repere le valeur la plus grande (OCMAX) dans ma plage (PLAGEOC) de mon classeur de reference (classeurtempo), puis je compare par rapport à colonne 5 de mon classeur de travail (CECLASSEUR) où l'on retrouve les meme références.

    à l'heure actuelle mon OCMAX=101555
    Ensuite sur chaque ligne j'applique ma condition. donc dans ma colonne 13 il me met bien "RECENTE" qd dans la colonne 5 la valeur est > à 101555. MAIS, il met aussi "RECENTE" quant la valeur est inférieur à "100000"..

    Je pense que le probleme vient du cap des "100000", pk ce bug ? Probleme de format ? je ne pense pas mais bon..

    A votre disposition,
    Merci pour votre aide,

  2. #2
    Membre éclairé Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

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

    Pourquoi ne pas faire la comparaison avec OCMAX sachant que c'est un double (valeur retourner par Max)???

    comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(ligne, 5).Value > OCMAX And Cells(ligne, 13) = "" Then
    Essaye comme cela après pourquoi tu test si Cells(ligne, 13) est vide?

    Bastien

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Par défaut
    Citation Envoyé par bastou93 Voir le message
    Essaye comme cela après pourquoi tu test si Cells(ligne, 13) est vide?
    Pour ne rien y écrire si il y a déjà quelque chose, je suppose.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 28
    Par défaut
    Oui c'est ça Joe

    Je comprends pas ce qu'apporte ta proposition Bastou, à part supprimer les "& &" autour de la variable que je pensais nécessaire, mais finalement nan lol.

  5. #5
    Membre éclairé Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim ligne As Long
    For ligne = 2 To Range("A65000").End(xlUp).Row
    If Cells(ligne, 5).Value > OCMAX And Cells(ligne, 13) = "" Then
       Cells(ligne, 13) = "RECENTE"
    end if
    Next ligne
    Si OCMAX à la bonne valeur il devrai pas y avoir de problème tu peux le tester avec debug ou Msgbox ou pas à pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    msgbox OCMAX 
    Dim ligne As Long
    For ligne = 2 To Range("A65000").End(xlUp).Row
    If Cells(ligne, 5).Value > OCMAX And Cells(ligne, 13) = "" Then
       Cells(ligne, 13) = "RECENTE"
    end if
    Next ligne
    et vérifier OCMAX ait la bonne valeur

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    Bonjour rapheb, bonjour à tous

    Citation Envoyé par rapheb Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim plageOC As Range, OCMAX As String
    OCMAX = Application.WorksheetFunction.Max(plageOC)
    Je ne comprend pas pourquoi tu utilise OCMAX en String plutot que double ou Long ou autre format de nombre ?

  7. #7
    Membre éclairé Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Par défaut
    Je ne comprend pas pourquoi tu utilise OCMAX en String plutot que double ou Long ou autre format de nombre ?
    Exact dodo j'avais pas vu voici le code final que tu dois tester:

    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
    Set Ceclasseur = Application.ThisWorkbook 'mon classeur de travail
    Set classeurtempo = Workbooks.Open(MONFICHIER REFERENCE.xls)
    classeurtempo.Activate
     
    Dim plageOC As Range, OCMAX As Long
    Set plageOC = Range("A:A")
    OCMAX = Application.WorksheetFunction.Max(plageOC)
     
    Ceclasseur.Activate
    Dim ligne As Long
    For ligne = 2 To Range("A65000").End(xlUp).Row
    If Cells(ligne, 5) > OCMAX And Cells(ligne, 13) = "" Then
       Cells(ligne, 13) = "RECENTE"
    end if
    Next ligne
    classeurtempo.Close False
    end sub

  8. #8
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    ^^ Pour une fois que je peux être utile

    Par contre je ne comprend pas non plus le "65000"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For ligne = 2 To Range("A65000").End(xlUp).Row
    Si la version n'est pas Excel 2003, et que la feuille contient plus de 65000 lignes, il ressortira 1 comme résultat ( et donc une erreur)

    Essaye de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For ligne = 2 To Range("A65000").End(xlUp).Row
    Par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For ligne = 2 To Cells(Rows.Count, 1).End(xlUp).Row

    Cordialement
    DoDo

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 28
    Par défaut
    Yes en As Long ça fonctionne
    Les variables c'est le genre de trucs que je maîtrise vraiment pas.

    Dodo, je suis en Excel 2000, et j'ai toujours fait comme ça pour balayer toutes mes lignes.. mais ta manière est sans doute plus propre.. Concrétement ça represente quoi Cells(Rows.Count, 1) ? En fait, surtout le 1 ? Que fait il qd il lit ça ?

  10. #10
    Membre éclairé Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Par défaut
    Moi souvent je fais l'inverse je pars d'en haut et je chope la derniere ligne (x1down)

  11. #11
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    Citation Envoyé par rapheb Voir le message
    Concrétement ça represente quoi Cells(Rows.Count, 1) ? En fait, surtout le 1 ? Que fait il qd il lit ça ?
    Concretement, cette fonction va chercher la dernière ligne utilisée en Colonne 1 ( voilà pourquoi le "1")

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2007, 15h39
  2. Réponses: 8
    Dernier message: 16/05/2007, 21h16
  3. Condition dans une variable
    Par nicoalafac dans le forum Langage
    Réponses: 5
    Dernier message: 12/03/2007, 14h49
  4. Réponses: 11
    Dernier message: 16/10/2006, 14h05
  5. Condition contenu dans une variable string
    Par tomo0013 dans le forum Access
    Réponses: 6
    Dernier message: 01/12/2005, 14h15

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