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 :

Surlignage avec condition en vba


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
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Par défaut Surlignage avec condition en vba
    Hello à vous

    Dans une feuille Excel je répertorie :
    Quelques pronostics pour certaines courses de chevaux (chaque Pronostiqueur a son pronostic dans 1 cellule)
    et le Résultat de la course sont dans des cellules séparées
    (je mets chaque pronostic dans 1 cellule pour chacun pour gain de place.)

    voir cette image :


    je souhaiterais, via un bouton,
    => si les 5 cases de "Arrivée" se retrouve dans un des pronostics, celui ci soit surligné en jaune (ou autre couleur peu importe ..)
    cela me permettrait de voir tout de suite si un pronostiqueur a fait le bon pronostic

    Je saurais le faire si les pronostics étaient dans des cellules séparées mais vu que chaque pronostic est dans une cellule unique, je ne vois pas comment faire...

    merci de votre aide par avance

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 432
    Par défaut
    Bonjour,

    Une façon de faire avec une fonction personnalisée utilisée dans une mise en forme conditionnelle.
    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
    Option Explicit
     
    Public Function PTop(cP As Range) As Boolean
        '--- cP: cellule contenant le pronostic
        Dim kR As Long, kC As Long, v As String
        kR = cP.Row
        v = cP.Value & " "      '--- ajout un espace en fin
        PTop = True
        For kC = 6 To 10        '--- n° colonnes arrivées
            If InStr(v, Cells(kR, kC) & " ") = 0 Then
                PTop = False
                Exit For
            End If
        Next kC
    End Function
    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Par défaut
    Re EricDgn,

    Merci de t'être intéressé au pb .

    Possible de me mettre le fichier au format excel 2003 (xls) ?

    .. je ne peux pas ouvrir le format .xlsm (suis sous ecsl 2003)

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 432
    Par défaut
    En attaché la version .xls
    Cordialement.
    Fichiers attachés Fichiers attachés

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Pourquoi ne pas utiliser un MFC (Mise En forme Conditionnelle)?
    Plutôt que de chercher à séparer les valeur contenu dans les 3 premières cellules, pourquoi ne pas concaténer les résultats et le comparer au 3 1ères cellules?

    C'est sans doute améliorable mais dans l'esprit, ça donnerait un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(CHERCHE(CONCATENER(G12;" ";H12;" ";I12;" ";J12;" ";K12);D12);FAUX)
    A placer dans la MFC

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 432
    Par défaut
    Oui c'est tout à fait bon s'il faut considérer le pronostic ok uniquement s'il respecte vraiment l'ordre d'arrivée. Pour ma part j'ai considéré qu'il suffisait que les arrivées soient dans le pronostic, dans l'ordre ou le désordre. On pourrait d'ailleurs surement aussi mettre cela dans une seule formule par 5 CHERCHE() additionnés.

    Bien cordialement.

  7. #7
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bonjour,

    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Une façon de faire avec une fonction personnalisée utilisée dans une mise en forme conditionnelle.
    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
    Option Explicit
     
    Public Function PTop(cP As Range) As Boolean
        '--- cP: cellule contenant le pronostic
        Dim kR As Long, kC As Long, v As String
        kR = cP.Row
        v = cP.Value & " "      '--- ajout un espace en fin
        PTop = True
        For kC = 6 To 10        '--- n° colonnes arrivées
            If InStr(v, Cells(kR, kC) & " ") = 0 Then
                PTop = False
                Exit For
            End If
        Next kC
    End Function
    Cordialement.
    Attention, si on gère avec des tests de chaînes de caractères, il faut également ajouter un espace avant.
    Sinon un pronostic à 15 avec une arrivée à 5 sera considéré bon.

    Note : j'ajouterais également la plage des arrivées à la fonction plutôt que d'avoir en dur les colonnes 6 à 10.

  8. #8
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 432
    Par défaut
    Bonjour,

    Effectivement, bien vu! Aussi, une version corrigée, avec plage des arrivées.
    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
    Option Explicit
     
    Public Function PTop(cP As Range, rA As Range) As Boolean
        '--- cP: cellule contenant le pronostic, rA: plage contenant les arrivées
        Dim kR As Long, kC As Long, v As String
        kR = cP.Row
        v = " " & cP.Value & " "                        '--- ajout espace en fin et en début
        PTop = True
        For kC = 1 To 5                                 '--- n° colonnes arrivées
            If InStr(v, " " & rA(kC) & " ") = 0 Then    '--- idem espace avant et après
                PTop = False
                Exit For
            End If
        Next kC
    End Function
    Cordialement.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. copier plage de donnee avec condition en vba
    Par Bisbis27 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/05/2019, 14h07
  2. [XL-2016] liste déroulante avec conditions en VBA
    Par jessyjef dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/06/2018, 22h46
  3. Insertion ligne avec condition en VBA
    Par KBrownie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2017, 12h45
  4. [XL-2007] Selection plage de cellules avec condition en VBA
    Par Neilah dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/10/2016, 13h31
  5. Pb vlookUp avec condition en VBA
    Par PJ_VBA dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/08/2012, 20h12

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