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 :

Formating conditionnel VBA [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Par défaut Formating conditionnel VBA
    Bonjour,

    Je suhaiterais faire un format conditionnel via VBA et ne parvient pas a faire donctionner mon code.
    J'ai une table dans laquelle je souhaite faire une boucle pour balayer toute la table en ligne et en colonne.
    pour chaque ligne , je souhaite colorer les 25 cellules suivante sur la même ligne si une cellule est égale à 50

    Voici le code que j'ai fait, mais je n'arrive pas a rentrer dans la dernière boucle for...

    Auriez vous des conseils?
    Si il est possible de faire cette mise en forme via la "mise en forme conditionnelle" je suis aussi interessée.

    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
    25
    26
    27
    28
    Sub Essai_MiseEnForme()
     
    Dim FinLigne As Integer
    Dim FinColonne As Integer
    'i=row
    'j=column
     
    FinLigne = Cells(3, 4).End(xlToRight).Column
    FinColonne = Cells(4, 2).End(xlDown).Row
     
     
    For i = 4 To FinLigne
     
        For j = 4 To FinColonne
     
            If Cells(i, j) = 50 Then
            'k = increment pour colorer
                For k = j + 1 To k = j + 25 'ici je n'arrive pas a entrer dans la boucle for
                Cells(i, k).Font.ColorIndex = 41
     
                Next
     
            End If
     
        Next
    Next
     
    End Sub
    Merci beaucoup

  2. #2
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Bonjour

    Sans VBA, as-tu déjà essayé le formatage conditionnel ? Si tu sélectionnes les 25 cellules puis, dans ta condition, tu dis quelque chose comme "supérieur" et "A1>50" (je le fais de tête; sans vérifier), cela doit pourtant fonctionner.

    Note que VBA sera forcément, monstrueusement, plus lent.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur Méthodes Industrialisation
    Inscrit en
    Octobre 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Méthodes Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 39
    Par défaut
    Bonjour JudRos,

    Je pense avoir trouvé 2 petites erreurs à la première lecture de ton code.

    Tu aurais pas inversé FinLigne et FinColonne ?

    Et une petite erreur dans la description de ton For k.

    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 Essai_MiseEnForme()
     
    Dim FinLigne As Integer
    Dim FinColonne As Integer
    'i=row
    'j=column
     
    FinLigne = Cells(3, 4).End(xlToRight).Column  'Nbr de Colonne
    FinColonne = Cells(4, 2).End(xlDown).Row      'Nbr de Ligne
     
    For i = 4 To FinLigne   ' Donc i = 4 to Nbr Colonne ??
        For j = 4 To FinColonne   ' Donc j = 4 to Nbr Ligne ??
            If Cells(i, j) = 50 Then
            'k = increment pour colorer
                For k = j + 1 To j + 25 'tu avais écris k =  j +1 to k = j + 25. Il ne faut pas réécrire ta variable après le "to". Il faut comprendre k = ((j +1) to (j + 25))
                     Cells(i, k).Font.ColorIndex = 41
                Next
            End If
        Next
    Next
     
    End Sub
    Zeabon

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur Méthodes Industrialisation
    Inscrit en
    Octobre 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Méthodes Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 39
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Bonjour

    Sans VBA, as-tu déjà essayé le formatage conditionnel ? Si tu sélectionnes les 25 cellules puis, dans ta condition, tu dis quelque chose comme "supérieur" et "A1>50" (je le fais de tête; sans vérifier), cela doit pourtant fonctionner.

    Note que VBA sera forcément, monstrueusement, plus lent.
    Bonjour cavo789,

    Dans la macro, on remarque que le balayage de la plage est vertical et horizontal.

    Donc si une 25 cellules à gauche ou la cellule même ont la valeur 50, alors elle est colorier.

    En fonction du nombre de colonne, je pense que le formatage conditionnel risque d'être difficile à appliquer.

    Zeabon

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour à tous
    à tester
    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
    25
    Option Explicit
    Sub colorier()
    Dim F As Worksheet
    Set F = Sheets("Feuil1")
    Dim i As Long
    Dim derlig As Long
    Dim dercol As Long
    Dim plage As Range
    Dim Cel As Range
    Dim L As Long
    Dim C As Long
    Dim X As Integer
    derlig = F.Cells.SpecialCells(xlCellTypeLastCell).Row
    dercol = F.Cells.SpecialCells(xlCellTypeLastCell).Column
    Set plage = F.Range(F.Cells(1, 1), F.Cells(derlig, dercol))
    For Each Cel In plage
    If Cel.Value = 50 Then
    L = Cel.Row
    C = Cel.Column
    For C = C To C + 26
    F.Cells(L, C).Interior.Color = RGB(50, 200, 100)
    Next C
    End If
    Next Cel
    End Sub

  6. #6
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Par défaut
    bonjour,

    Merci beaucou pour votre aide, en effet j'ai corrigé les erreurs comme dit par Zeabon et tout roule!

    En effet en formating conditionnel, vu que ce que je souhaite controler est glissant, c'est trop compliqué.

    Merci beaucoup pour votre aide.

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

Discussions similaires

  1. [XL-2010] Format conditionnel (VBA)
    Par b3401m dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/06/2017, 12h53
  2. [Excel-VBA] Format conditionnelle spécifique
    Par MickaSch dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/01/2014, 20h08
  3. [XL-2003] format conditionnel avec vba
    Par didinette56 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/05/2009, 15h37
  4. Format conditionnel vba et excel
    Par caloumaya dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/01/2008, 16h37
  5. syntaxe format cond vba
    Par sorinexp dans le forum Access
    Réponses: 2
    Dernier message: 28/11/2005, 15h02

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