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 :

Boucles et cellules vides


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

    Informations forums :
    Inscription : Février 2010
    Messages : 39
    Par défaut Boucles et cellules vides
    Bonjour,

    J'ai créé une macro qui compare 3 cellules d'une ligne aux 3 de la lignes précédente.
    Si au moins une des 3 cellules est égale a au moins une des trois de la ligne précédente, alors ... rien , sinon on colore la ligne en rouge.

    ex :
    A B C
    D E A ---> rien car A sur les 2 ligne
    F B H ---> en rouge

    Ma macro fonctionnerai si certaines cellules n'étaient pas vides.

    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
    Dim flag As Boolean
    Dim derniere_ligne, i, j, k As Long
    derniere_ligne = ThisWorkbook.Worksheets(a).Range("E65536").End(xlUp).Row
     
    For i = 4 To derniere_ligne
    flag = True
      For j = 9 To 10
        For k = 9 To 10
    If ThisWorkbook.Worksheets(a).Cells(i, j).Text = ThisWorkbook.Worksheets(a).Cells(i - 1, k).Text Then flag = False
    Next k
    Next j
    If flag = True Then ThisWorkbook.Worksheets(a).Range("I" & i & ":K" & i).Interior.ColorIndex = 3
    Next i
     
    Next a

    En effet si j'ai
    A B
    C --> la ligne n'est pas colorée car les cellules de la troisieme colonne par exemple sont identiques (vides)



    J'ai essayé :
    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
     
    Dim flag As Boolean
    Dim derniere_ligne, i, j, k As Long
    derniere_ligne = ThisWorkbook.Worksheets(a).Range("E65536").End(xlUp).Row
     
    For i = 4 To derniere_ligne
    flag = True
      For j = 9 To 10
      If ThisWorkbook.Worksheets(a).Cells(i, j).Text <> "" Then
        For k = 9 To 10
    If ThisWorkbook.Worksheets(a).Cells(i - 1, k).Text <> "" Then
    If ThisWorkbook.Worksheets(a).Cells(i, j).Text = ThisWorkbook.Worksheets(a).Cells(i - 1, k).Text Then flag = False
    Else
    Next k
    End If
    Else
    Next j
    End If
    If flag = True Then ThisWorkbook.Worksheets(a).Range("I" & i & ":K" & i).Interior.ColorIndex = 3
    Next i
     
    Next a
    Mais bon ça ne fonctionne pas (next sans for) ... je ne pense pas qu'il me manque grand chose mais je ne vois pas comment (bien) imbriquer mes boucles et conditions.


    Merci pour votre aide !

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Tu as un peu (beaucoup) melange tes fin d'instructions

    Essaie comme ca
    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
        Dim flag As Boolean
        Dim derniere_ligne, i, j, k As Long
     
        derniere_ligne = ThisWorkbook.Worksheets(a).Range("E65536").End(xlUp).Row
     
        For i = 4 To derniere_ligne
            flag = True
     
            For j = 9 To 10
                If ThisWorkbook.Worksheets(a).Cells(i, j).Text <> "" Then
                    For k = 9 To 10
                        If ThisWorkbook.Worksheets(a).Cells(i - 1, k).Text <> "" And ThisWorkbook.Worksheets(a).Cells(i, j).Text = ThisWorkbook.Worksheets(a).Cells(i - 1, k).Text Then flag = False
                    Next k
                End If
            Next j
            If flag = True Then ThisWorkbook.Worksheets(a).Range("I" & i & ":K" & i).Interior.ColorIndex = 3
        Next i

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

    Informations forums :
    Inscription : Février 2010
    Messages : 39
    Par défaut
    En effet, je me suis bien embrouillé tout seul !

    Merci beaucoup ça fonctionne !

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 20/06/2015, 13h02
  2. [XL-2007] Boucle pour remplir cellule vide d'une boucle variable
    Par laurasoe dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/07/2014, 17h29
  3. Remplir les cellules vides dans une boucle
    Par zoltar_x dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/11/2011, 18h35
  4. [VBA-E] Comment faire une boucle lorsqu'il y a des cellules vides
    Par Annick.w dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/02/2007, 22h39
  5. [XSL-FO] Table avec cellule vide
    Par JustAGphy dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 12/05/2004, 14h11

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