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 :

Vérifier contenu de plusieurs cellules


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 71
    Points : 27
    Points
    27
    Par défaut Vérifier contenu de plusieurs cellules
    Bonjour tout le monde,

    J'ai déjà vu plusieurs sujets sur la question mais je n'arrive à faire ce que je veux.
    Selectionner les cellules de la colonne 1 qui contiennent la chaine de caractère "AAA" si l'une des cellules de la ligne corresponde contient la valeur "1".

    Pour l'instant j'en suis là mais ça nne fonctionne pas:

    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
    18
    19
    20
    21
    22
    Sub ITK()
    Dim DAT, PLANT As Range
    Dim d, p As Range
     
    derlig = Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
     
    Set DAT = Range(Cells(2, 1), Cells(derlig, 1))
    Set PLANT = Range(Cells(2, 2), Cells(derlig, 13))
     
    For Each d In DAT
        For Each p In PLANT
     
    If d.Value Like "*ANT*" And p.Value = "1" Then
     
    d.Select
     
    End If
     
        Next
    Next
     
    End Sub
    Merci beaucoup à la personne qui pourra m'aider!!!

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Déjà :
    si l'une des cellules de la ligne corresponde contient la valeur "1"
    tu peux donc utiliser Worksheetfunction.countif pour voir si cette condition est vérifiée, non ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu pourrais te mettre une formule RechercheV (ou NB.SI) dans une colonne vide à droite pour rechercher la valeur 1 dans la ligne.
    Il te suffira à faire un filtre sur AAA dans la colonne A et sur 1 dans cette colonne.

    Edit: je n'avais pas vu ta réponse unparia... On se rejoint tout de même dans l'idée...
    MPi²

  4. #4
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 910
    Points
    55 910
    Billets dans le blog
    131
    Par défaut
    Salut.

    VBA pour Excel => D'abord penser à Excel... Observe le tableau suivant qui montre que l'on peut s'en sortir par une formule... (La colonne O n'est là que pour illustrer la construction de la formule)

    Nom : 2017-05-30_200939.png
Affichages : 1067
Taille : 19,6 Ko

    Dès lors, on peut utiliser Evaluate en VBA...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Colorer()
      Dim xCell As Range
     
      For Each xCell In Range(Range("a2"), Range("a1048576").End(xlUp))
        If Evaluate("and(iferror(search(""ANT""," & xCell.Address & "),false),countif(" & xCell.Offset(0, 1).Resize(1, 12).Address & ",1)>0)") = True Then xCell.Interior.Color = vbRed
      Next xCell
    End Sub
    Tu peux aussi utiliser ceci, qui utilise ton LIKE et dont la philosophie est la même que pour l'exemple ci-dessus, mais sans Evaluate, en utilisant la fonction Countifs de Application (ou Application.WorksheetFunction) et qui demande peut-être moins de traitement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub AuteSolution()
      Dim xCell As Range
      Dim Result As Range
      For Each xCell In Range(Range("a2"), Range("a1048576").End(xlUp))
        If xCell.Value Like "*ANT*" And Application.CountIfs(xCell.Offset(0, 1).Resize(1, 12), 1) > 0 Then xCell.Interior.Color = vbRed
      Next xCell
    End Sub
    Cela étant, tu veux les colorer ou les sélectionner?

    Si tu veux les sélectionner, tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Selectioner()
      Dim xCell As Range
      Dim Result As Range
      For Each xCell In Range(Range("a2"), Range("a1048576").End(xlUp))
        If Evaluate("and(iferror(search(""ANT""," & xCell.Address & "),false),countif(" & xCell.Offset(0, 1).Resize(1, 12).Address & ",1)>0)") = True Then
          If Result Is Nothing Then
            Set Result = xCell
          Else
            Set Result = Union(Result, xCell)
          End If
        End If
      Next xCell
      If Not Result Is Nothing Then Result.Select
    End Sub

    Sans VBA...

    Si tu dois colorer les cellules, tu pourrais aussi, sans VBA, utiliser une Mise en Forme Conditionnelle formulée en utilisant la formule en O2 dans une MFC formulée sur A2:A12 (dans l'illustration ci-dessus).

    Tu vois qu'il y a plusieurs solutions en fonction du résultat final que tu souhaites obtenir...
    "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...
    ---------------

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 71
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Vraiment merci pour vos réponses!!

    @Parmi En fait c'est une partie de ce que je souhaite faire et comme je sais que la suite ne peux pas se faire avec excel donc je me suis dis que c'est mieux de faire comme ça...

    @unparia J'ai essayé avec la fonction Worksheetfuntion.countif mais ça me donne le même résultat!

    @Pierre Fauconnier Le code marche! mais je suis entrain de l'analyser car je ne l'ai pas encore bien compris!

    Ce que je cherche à faire est un peu plus compliqué! Donc je regarde si avec vos réponses j'arrive à m'en sortir! Avant de valider la discussion...

    Merci encore!!

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 71
    Points : 27
    Points
    27
    Par défaut
    Re-bonjour,

    Merci pour la solution avec "like" car je n'ai pas encore bien compris la fonction "evaluate" et je trouve peu de chose sur internet (utilisé comme ça) pour le moment.

    Si c'est possible je me permets d'exposer la deuxième et dernière partie de mon problème, j'ai mis une image car c'est un peu compliqué à expliquer:

    En fait sur l'image la ligne 2 réponds aux deux conditions ("ANT" + "1"), alors je dois chercher la condition suivante : présence de "TAR" dans la colonne1.
    Comme la deuxième cellule répond à cette condition: alors entrer "1" dans la cellule .offset(0, 3) à partir du numéro de colonne de la cellule contenant "1" à la ligne2.
    Nom : Exemple.png
Affichages : 1017
Taille : 3,5 Ko
    C'est un exemple sur deux lignes mais je dois le faire pour un grand tableau et pour différentes conditions. Les conditions sont liées: ici j'applique à "TAR" la formule si "ANT"+"1" est vérifié.
    Est-ce que c'est possible de savoir si le code que tu m'as donné est un bon début, et avoir quelques indications pour la suites?

    En tout cas merci encore!

Discussions similaires

  1. [VBA] verifier le contenu de plusieurs cellules avant impression
    Par franckla dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/10/2017, 13h24
  2. [XL-2003] afficher le contenu de plusieurs cellule dans une seule
    Par Philippe76 dans le forum Excel
    Réponses: 4
    Dernier message: 02/04/2011, 19h00
  3. Concatener le contenu de plusieurs cellules selon couleurs
    Par ludion62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/05/2010, 20h05
  4. Macro pr nommer dossier comme contenu de plusieurs cellules
    Par tony020422 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/06/2009, 09h34
  5. Concaténer le contenu de plusieurs cellules dans une cellule
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/03/2008, 15h15

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