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 :

selectionner les cellules qui répondent à ma condition


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
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut selectionner les cellules qui répondent à ma condition
    bonjour,
    je souhaiterais sélection toutes les cellules de la colonne A qui ont une valeur supérieur à "60211000"
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub t()
    Dim i As Range
    For Each i In Range("a2:a200")
    Select Case i
    Case Is > 60211000
    i.EntireRow.Select
    End Select
    Next
    End Sub
    quelqu'un voit le hic?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub t()
       Dim i As Range, U As Range
       For Each i In Range("a2:a200")
          If i.Value > 60211000 Then
             If U Is Nothing Then
                Set U = i
             Else
                Set U = Union(i, U)
             End If
          End If
       Next
       U.Select
    End Sub
    Cordialement,

    Tirex28/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut pb
    je pige pas trop
    si je luidemande de me sélection les cellules qui ont une valeur comprise entre "60211000" et "60511000"
    il bloge

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Le premier hic que je vois, c'est que tu n'indentes pas ton code: c'est une bonne habitude à prendre pour la lisibilité.

    Ensuite, l'instruction Select Case n'est faite que pour tester si une variable est égale à tel valeur, telle autre, etc... Il faut donc que tu utilise une instruction If... Then.
    Dernier point: le mot clé Is ne sert qu'à tester si deux références sont identiques (mais je suppose que tu comprends pas ce que ça veut dire vu ton code). Or là tu compares la référence i de ton objet range, à un opérateur >, c'est donc plutôt normal que le compilateur te sort un truc dans le genre "je m'attendais à trouver une référence à cet endroit".

    N'oublie pas que lrosque tu tapes Range("a2:a200"), la signification peut être ambigüe: selon la situation cela désigne la plage en elle-même, ou sa valeur. Personnellement, pour la clarté de mon code je tape toujours Range("a2:a200").Value si je veux avoir la valeur.

    Je te laisse réfléchir un peu à tout ça, ce n'est pas bien dur.*

    EDIT: grillé... pendant que je tapais.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Attention quand on amène un complément d'infos...


    On peut, même si c'est rare de l'utiliser ainsi, utiliser Select case ... pour envisager un seul cas.

    Par contre, on ne peut pas avoir ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim i as range
    for each i in range("a2:a200").value
    Le code suivant (sur l'idée de Tirex) fonctionne très bien
    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
    Sub t()
    Dim i As Range, u As Range
     
        For Each i In Range("a2:a200")
            Select Case i
                Case Is > 60211000
                    If u Is Nothing Then
                        Set u = i
                        Else
                        Set u = Union(u, i)
                    End If
            End Select
        Next
        u.Select
    End Sub
    Mais celui-ci
    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
    Sub t()
    Dim i As Range, u As Range
     
        For Each i In Range("a2:a200").Value
            Select Case i
                Case Is > 60211000
                    If u Is Nothing Then
                        Set u = i
                        Else
                        Set u = Union(u, i)
                    End If
            End Select
        Next
        u.Select
    End Sub
    plantera!
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut toujours pb
    ma logique ne doit pas être bonne
    je n'arrive pas à faire sélectionner les cellules de la colonne A qui ont une valeur comprise entre "60211000" et "60500000"

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If i.Value > 60211000 And i.Value < 60500000 Then
    P.S.: C'est toujours plus simple quand tu mets le bout de code qui pose problème...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 14/02/2014, 15h05
  2. Réponses: 6
    Dernier message: 28/01/2012, 19h02
  3. Réponses: 3
    Dernier message: 16/06/2007, 19h47
  4. Réponses: 6
    Dernier message: 11/07/2006, 10h04
  5. Selectionner les date qui ont minimum une heure d'ecart
    Par uraxyd dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/07/2005, 13h39

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