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 :

Ranger des cellules suivant critère


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 59
    Par défaut Ranger des cellules suivant critère
    bonjour tout le monde,

    j'ai une variable col de type range
    j'ai une instruction de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set col = Range("A2:A15")
    ça marche très bien sauf que maintenant je ne dois pas stocker dans col toutes les cellules c a d je stocke uniquement les cellules répondants à un critère ( si Ai="toto" je ne le stocke pas ) i de 2 à 15 comment faire
    SVP
    merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour, le plus simple pour apprendre ...

    il faut parcourir ta plage de données, cellule par cellule, et tester sa valeur
    si ta cellule doit figurer dans ta variable Range finale, alors tu l'ajoutes à ta variable via la méthode Union

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set Myrange = application.union(MyRange,MyCell)
    avec MyRange ta variable range finale et MyCell la cellule actuellement testée dans ta boucle For Each MyCell in MaPlage.Cells

    Bons travaux

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 59
    Par défaut
    merci pour votre réponse
    j'ai fait la chose suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 2 To Derli
     
          If Cells(i, 1) <> "toto" Then
     
          Set col = Application.Union(col, Cells(i, 1))
          End If
     
    Next i
    avec col de type Range, derli la dernière ligne de la colonne A
    alors j'ai un message d'erreur "la méthode 'Union de l'objet '_Application a échoué

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    On ne peut pas utiliser Union pour unir rien avec quelque-chose
    le principe est celui-ci (à toi de comprendre et appliquer)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim col as range
    if col is nothing then
      set col = ....une plage ...
    else
      set col = union(col, ... une plage ...)
    end if

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    il faut absolument que Col soit "quelque chose" si tu veux l'unir à un autre objet
    donc la première cellule que tu mets dans Col ne doit pas l'être par Union mais par affectation directe

    par exemple, en reprenant textuellement le tiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub io()
    Dim Col As Range, Derli As Long
    Derli = 15 'pour l'exemple
        For i = 2 To Derli
            If Cells(i, 1) <> "toto" Then
                If Not Col Is Nothing Then
                    Set Col = Application.Union(Col, Cells(i, 1))
                Else
                    Set Col = Cells(i, 1)
                End If
            End If
        Next i
    End Sub

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 59
    Par défaut
    merci beaucoup pour votre aide
    je ne sais pas pourquoi quand je met le code dans un module ca ne marche pas j'ai ce message d'erreur "la méthode 'Union de l'objet '_Application a échouéet quand je le met dans le UF il marche alors comment faire car je suis oblige de le mettre dans le module
    un grand merci pour joe.levrai

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Peut-être parce-que ton code ne précise pas à quelle feuille appartiennent les cellules que tu traites. Sinon : aucune autre raison d'erreur possible avec ce code.

    Au passage : je n'aime pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i, 1) <> "toto"
    Qui pourrait prêter à confusion. Je sais que VBA est tolérant, mais prends l'habitude de spécifier la propriété utilisée -->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i, 1).value <> "toto"
    EDIT : j'appelle par ailleurs ton attention sur le fait que si l'une des cellules parcourues de ta colonne A est en erreur, tu auras une incompatibilité de type !

Discussions similaires

  1. [XL-2010] Additionner des cellules suivant 2 critères
    Par elsabio dans le forum Excel
    Réponses: 2
    Dernier message: 08/01/2013, 22h42
  2. [AC-2003] Rendre visible ou pas des champs suivant critères
    Par ortiz dans le forum IHM
    Réponses: 2
    Dernier message: 07/10/2011, 08h51
  3. Griser certaines cellules suivant critères
    Par tchoutchou69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/03/2011, 10h50
  4. Réponses: 16
    Dernier message: 25/03/2007, 09h56

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