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 :

Trouver valeur numérique <>0


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 238
    Points : 236
    Points
    236
    Par défaut Trouver valeur numérique <>0
    Bonjour,

    Pour trouver dans une plage une valeur numérique égale à 1 j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With Worksheets("Tempo").Range("G1:G150")
        Set S = .Find(1, LookIn:=xlValues)
    Afin de ne pas répéter les lignes pour trouver les valeurs numériques comme 3, 5, 12 etc..., je veux faire une recherche de toutes les valeurs <>0.
    Evidemment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set S = .Find(<>0, LookIn:=xlValues)
    ne marche pas et me renvoie une erreur "Attendu:Expression" avec le curseur sur <>. Comment écrire de ne pas chercher les valeurs 0 ?
    Merci d'avance de vos suggestions.
    Bonne journée.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut
    à ma connaissance, Find trouve uniquement des valeur, pas des non-valeur. Il marche sur l'égalité.

    Donc, pour ton cas, il ne convient pas. À la place, tu peux faire une boucle qui parcourt tes cellules et qui teste tes valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    dim Cel as range
    '........
    With Worksheets("Tempo")
    for each cel in .Range("G1:G150")
         if isnumeric(cel) then
              if cel<>0 then
                   'traitement
              end if
         end if
    next cel
    end with
    A+

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 238
    Points : 236
    Points
    236
    Par défaut
    Bonjour Gorfael,

    Merci pour ta réponse que je viens de trouver. Dommage que Find ne sache pas trouver des valeurs différentes d'une valeur désignée.

    Je teste ta solution et je tiens au courant.

    Bonne journée.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 238
    Points : 236
    Points
    236
    Par défaut
    Bonjour Gorfael,

    J'ai testé la solution indiquée dans ton code et j'ai obtenu le résultat souhaité. Pour l'intégrer j'ai dû pas mal modifier le code des traitements à faire après identification et sélection des valeurs <>0 mais c'est bon.

    Un grand merci à toi pour ta réponse.

    Cordialement

  5. #5
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour

    pour simplifier la solution de Gorfael et n'avoir qu'un If

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    dim Cel as range
    '........
    With Worksheets("Tempo")
    for each cel in .Range("G1:G150")
         if cel Like "[1-9]" then
                   'traitement
    
         end if
    next cel
    end with
    cordialement

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 238
    Points : 236
    Points
    236
    Par défaut
    Bonjour fred,

    Merci pour ta suggestion ; effectivement, il est toujours bon d'avoir moins de lignes de code.

    Cordialement.

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

Discussions similaires

  1. Trier une colonne avec des valeurs numériques ou textes
    Par jfc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/02/2006, 11h15
  2. Remplacement d'une valeur numérique
    Par Jean-Louis Corbiau dans le forum Access
    Réponses: 9
    Dernier message: 29/09/2005, 15h25
  3. [xslt] filtrer des valeurs numériques
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/09/2005, 12h01
  4. retait d'une valeur numérique au mieu d'un texte
    Par RémiDavid dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/04/2004, 16h20
  5. [Delphi 6] EditBox -> valeurs numériques ?
    Par JBrek dans le forum Composants VCL
    Réponses: 9
    Dernier message: 02/12/2002, 13h08

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