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 :

Problème de colorisation de cellules.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Par défaut Problème de colorisation de cellules.
    Bonjour,

    je dois faire une petite macro, assez simple :
    Elle doit parcourir une ligne a partir de la cellule selectionnée et detecter quand il y a plus de 4 cellules vides et si c'est le cas, mettre un fond de couleur au groupe de cellules vides detectées. Voici le code que j'ais pondu, mon problème est que cela semble parcourir correctement mais ne colorie pas les cellules 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub Color()
     
    For j = 1 To 8
     
    Dim i
    i = 0
     
    If IsEmpty(ActiveCell) Then
    i = i + 1
    ActiveCell.Offset(0, 1).Select
     
    ElseIf i > 4 Then Range(ActiveCell.Offset(0, -1), ActiveCell.Offset(0, -i)).Select
        With Selection.Interior
            .ColorIndex = 6
            .Pattern = xlSolid
        End With
    i = 0
     
    Else: ActiveCell.Offset(0, 1).Activate
     
    End If
    Next j
     
    End Sub
    Quelqu'un voit il de quoi cela peut venir ?

  2. #2
    Membre chevronné Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Par défaut
    Voilà une correction procédure qui fonctionne
    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
     
    Sub Color()
        Dim I
        Dim J
     
        For J = 1 To 8
            If IsEmpty(ActiveCell) Then
                I = I + 1
                If I = 4 Then
                    With Range(ActiveCell, ActiveCell.Offset(0, -(I - 1))).Interior
                        .ColorIndex = 6
                        .Pattern = xlSolid
                    End With
                    I = 0
                End If
            End If
            ActiveCell.Offset(0, 1).Activate
        Next J
    End Sub
    Mais pourquoi uniquement sur 8 colonne (j=1 to 8) ?
    Et que fais tu s'il y a + de 4 cellules vides de suite ?

  3. #3
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Par défaut
    Sur 8 car c'est juste un test ^^
    et si il y en a plus de 4 ça continue à parcourir jusqu'à tomber sur une cellule non vide et à ce moment là ça colorie toute les cellules vides précédentes.

    je suppose que si tu me poses la question ça signifie que mon code est complétement faux ^^ en tout cas je test tout de suite ce que tu viens de me fournir, merci :o)

  4. #4
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Par défaut
    Du coup j'ais trouvé la solution !

    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
     
    Sub Color2()
        Dim I
        Dim J
     
        For J = 1 To 40
            If IsEmpty(ActiveCell) Then
                I = I + 1
                ElseIf I > 4 Then
                    With Range(ActiveCell.Offset(0, -1), ActiveCell.Offset(0, -(I))).Interior
                        .ColorIndex = 6
                        .Pattern = xlSolid
                    End With
                    I = 0
                Else: I = 0
     
                End If
     
            ActiveCell.Offset(0, 1).Activate
        Next J
    End Sub
    Merci beaucoup pour ton aide , du coup ça fonctionne bien :o)

  5. #5
    Membre chevronné Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Par défaut
    Dans ce cas il faut corriger comme suit
    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
     
    Sub Color()
        Dim I
        Dim J
     
        For J = 1 To 8
            If IsEmpty(ActiveCell) Then
                I = I + 1
            Else
                If I >= 4 Then
                    With Range(ActiveCell.Offset(0, -1), ActiveCell.Offset(0, -I)).Interior
                        .ColorIndex = 6
                        .Pattern = xlSolid
                    End With
                End If
                I = 0
            End If
            ActiveCell.Offset(0, 1).Activate
        Next J
    End Sub
    Mais réfléchi à la condition d'arrêt de ta boucle quand tu voudras tester plus de 8 colonnes

    Nos réponses se sont croisées

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

Discussions similaires

  1. problème de couleur de cellule dans une JTable
    Par rprom1 dans le forum Composants
    Réponses: 3
    Dernier message: 04/04/2007, 00h01
  2. Problème de formatage de cellule par VBA
    Par ppe52 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/12/2006, 12h12
  3. Problème de coloration de cellules dans un DBGrid
    Par amaurylerouxdelens dans le forum Delphi
    Réponses: 7
    Dernier message: 08/11/2006, 13h47
  4. Problème de lecture des cellules dans une feuille Excel
    Par wangjun dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2006, 09h35
  5. [VBA-E]Gros problème d'actualisation des cellules
    Par soad029 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/04/2006, 10h03

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