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 :

compteur et condition pour sélectionner les cases d'un tableau [XL-2000]


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

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Par défaut compteur et condition pour sélectionner les cases d'un tableau
    Bonjour à tous,

    je cherche à ajouter de la visibilité à un fichier, je vais essayer d'être le plus clair possible:

    après divers maccros je dispose d'un tableau qui ressemble à peu près à:

    A...F1...0...0
    B...F1...1...0
    C...F1...0...1
    D...F1...0...1
    A...F3...1...0
    B...F3...0...0
    A...F4...0...0
    B...F4...0...1
    C...F4...0...1
    D...F4...0...1
    E...F4...0...0
    A...F7...0...0
    ...
    par exemple (avec 10k lignes, une trentaine de colonnes)

    A,B... représentant un code article de produit,
    F les numéros de lots de fabrications
    le reste du tableau, sous forme binaire, représente des impacts liés à divers contraintes.

    A étant le code de référence, et dépendant des B,C... qui le suivent, j'aimerais mettre en couleur les cases du tableau sur la ligne du A où il existe des contraintes sur les codes qui lui sont liés.

    pour l'illustration: le premier 0 du tableau doit se trouver dans une cellule rouge puisque le B de F1porte un 1.
    Le A de F4 correspondra à une case sans couleur puisque pas de contraintes sur le produit F4.

    Je n'arrive pas à partir pour écrire le code...
    je pense qu'il faudrait un compteur qui repère les A, place une range dans le bout de colonne correspondante, cherche un 1 dedans, si 1 première ligne du range en rouge...
    ça ne me parait pas tellement compliqué mais je n'y arrive vraiment pas...

    je vous remercie par avance de jeter un oeil à mon problème,
    j'espère que c'est assez clair...

  2. #2
    Membre Expert
    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
    Par défaut
    Salut Rrrroh et le forum
    Les valeurs de la première colonne sont tous différents ?
    Peut-on faire une recherche sur le format de la ligne A ? Dans ton explication, c'est la seule en gras/bold. Ou sinon, comment peut-on distinguer les A des autres codes ?
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    Est-ce seulement ton A qui est dépendant des autres ou A est dépendant de B,C,D... et B est dépendant de C,D... etc.

    Et chaque colonne sont-elle indépendante l'une des autres?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    J'ai fait un début de macro elle fonctionne selon ce que j'ai compris

    Elle fonctionne de façon à ce que si exemple A1 = a et C1 = 0, si les cellules en dessous avant A5 (car c'est le prochain "a") sont = 1, C1 devient rouge. et ainsi de suite. le processus recommence ensuite sur la prochaine colonne.

    Mais ce code prend compte que c'est seulement A qui peut être dépendant des autres.

    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 test()
    Dim Lg, col As Integer
    Dim i, j, x As Integer
     
    Lg = Range("A65536").End(xlUp).Row
    col = Range("A1").End(xlToRight).Column
     
    For x = 3 To col
        For i = 1 To Lg
            If Cells(i, 1) = "a" And Cells(i, x) = 0 Then
            j = i + 1
                Do While Cells(j, 1) <> "a" And Cells(j, 1) <> ""
                    If Cells(j, x) = 1 Then
                    Cells(i, x).Interior.ColorIndex = 3
                    End If
                j = j + 1
                Loop
            End If
        Next i
    Next x
    End Sub
    cordialement

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Par défaut
    Bonjour bonjour, alors pour vous répondre,
    (dsl si j'ai été un peu long)

    Les valeurs de la première colonne sont du texte (pour simplifier j'ai mis A, B, C...) et cela repasse toujours par A, le reste étant une déclinaison de A.
    (et non pas de bold c'était plus pour marquer le référent, la recherche s'effectue par la recherche d'un texte)

    un A ne dépend que de sa "déclinaison", filiation, comme vous voulez... à chaque fois qu'un A réapparait ça veut dire qu'on a changer de lot de production et qu'un nouveau correspond à ce code article.

    je regarde ce que tu as fait bobinette, merci

    edit: c'est pas mal, sauf que cela colorie toute la colonne en remontant jusqu'au "A", et je ne voudrais que la case sur la ligne du "A".

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Par défaut
    J'avais modifié le code de bobinette pour répondre à mon problème,
    ça fonctionne mais la maccro générale tourne vraiment plus longtemps qu'avant l'ajout de ce code.

    Y aurait il un moyen de le remplacé par quelque chose de plus rapide?:

    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
    Lg = Range("A65536").End(xlUp).Row
    col = Range("A1").End(xlToRight).Column
     
    For x = 5 To col
        For i = 5 To Lg
            If Cells(5, 2) = "A" And Cells(i, x) = 0 Then
            j = i + 1
                Do While Cells(j, 2) <> "A" And Cells(j, 2) <> ""
                    If Cells(j, x) = 1 Then
                        If Cells(i, 2) = "A" Then
                        Cells(i, x).Interior.ColorIndex = 3
                        End If
                    End If
                j = j + 1
                Loop
            End If
        Next i
    Next x
    merci bien par avance

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

Discussions similaires

  1. Décalage avec les cases d'un tableau pour étendre mes évènements
    Par Chouller dans le forum PHP & Base de données
    Réponses: 42
    Dernier message: 16/04/2009, 09h51
  2. Réponses: 1
    Dernier message: 02/09/2008, 02h11
  3. [MySQL] Condition pour éviter les doublons
    Par guismoman33 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/01/2008, 21h23
  4. Editer une colonne de radio pour sélectionner les beans
    Par spidereck dans le forum Struts 1
    Réponses: 5
    Dernier message: 26/04/2007, 11h07
  5. Réponses: 2
    Dernier message: 01/12/2006, 10h09

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