Recherche cellule en défaut avec conditio et la coloriser (VBA)

Résolu
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   -  
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J’ai un tableau ou il y a que des 1 et 2.

Ce que je cherche à faire :

Pouvoir lancer une fonction contrôle qui :

Trouve dans chaque colonne si les séquences de 1 et 2 est bien toujours dans l’ordre sinon coloriser la cellule en défaut en vert.

exemple : https://www.cjoint.com/c/FKkjfwvilTt

Merci pour l'aide

Bien cordialement
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
dans ton exemple, je ne comprends pas quel est est le critère que tu utilises exactement pour décider de la couleur d'une cellule. pourquoi e13 et g11 sont-elles différentes?
0
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   11
 
Bonjour,

Merci d’avoir pris du temps sur mon sujet.

Effectivement il y a des erreurs dans mon tableau:

les cellules E13 et E15 ainsi que les cellules D14 et D17 ne devraient pas être colorisées. Mise en jaune dans le fichier joint. J’espère que ce sera plus compréhensible avec la rectification de mon erreur.

Je recherche la solution avec un code mais pas encore trouvé, car je ne maitrise pas le VBA. (Mon code est dans le fichier joint) : https://www.cjoint.com/c/FKkmI34GWAt

Bien cordialement
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
Je propose de faire ainsi :
- pour identifier les "mauvais" deux, parcourir les colonnes de haut en bas, et marquer en vert les deux qui ne sont pas précédés d'un un.
- pour identifier les mauvais un, parcourir les colonnes de bas en haut, et marquer en vert les un qui ne sont pas "précédés" d'un deux

Code non testé :
For co = codeb To cofin

    ' verifions les deux
    recherche = 1 'numéro à trouver
    For li = lideb To lifin
        resultat = Cells(li, co).Value
        Select Case resultat
            Case 1:
                recherche = 2
            Case 2:
                If recherche = 1 Then
                     ' mettre la cellule en vert
                Else
                    recherche = 1
                End If
        End Select
    Next li
                   
    ' verifions les un
    recherche = 2 'numéro à trouver
    For li = lifin To lideb
        resultat = Cells(li, co).Value
        Select Case resultat
            Case 1:
                If recherche = 2 Then
                    ' mettre la cellule en vert
                Else
                    recherche = 2
                End If
            Case 2:
                recherche = 1
        End Select
    Next li
Next co
0
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   11
 
Bonjour,

Merci pour ce travail.

La détection des 2 fonctionne bien mais pas pour les 1 , je ne comprend pas ce qu'il faudrait faire ?

Après deux heures de recherche, je viens de trouver le petit problème qui semble évident.

Si en plus j’avais fait une bonne lecture de ton message, j’aurai peut-être compris plus vite.

pour identifier les mauvais un, parcourir les colonnes de bas en haut, et marquer en vert les un qui ne sont pas "précédés" d'un deux

le code dans vérifions les un devient :

For li = lifin To lideb Step -1


Bien cordialement
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Désolé de t'avoir induit en erreur, j'ai imaginé que le vba allait deviner ce que je voulais...
Connais-tu la possibilité d’exécuter du code en mode "débogage"? Cela facilite beaucoup le travail.
0
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   11 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour,


Tu ne m'a pas induit en erreur, l'erreur m'a fait réfléchir, et cela est toujours une bonne chose, donc merci

Pour répondre à ton interrogation, effectivement je ne connais pas la possibilité d’exécuter du code en mode "débogage"?

Je vais regarder ce point.

Bien cordialement
0