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 :

Surligner les lignes en fonction d'une condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut Surligner les lignes en fonction d'une condition
    Bonjour à tous,

    Une petite interrogation. J'ai déjà réussi à faire ce code une fois, mais je ne me souviens plus de comment j'ai procédé. Sur le code que je vais posté ci-dessous, j'ai un souci d'incompatibilité de type... (Mais pourquoi?)

    Ce que j'aimerai faire, c'est surligner les lignes de la première colonne active, à la dernière colonne active à partir du moment où il y a une mention "En retard" dans la ligne.

    Est-ce que quelqu'un aurait une correction avec des explications de préférence ?

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub misencouleur()
     
    Dim DernLigne As Long
    DernLigne = Range("A1", Selection.End(xlDown)).Cells.Count
    Dim DernCols As Long
    DernCols = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
     
    If Range(Cells(2, 1), Cells(DernLigne, DernCols)).Value <> "En retard" Then Rows(i).Interior.ColorIndex = 3
    End Sub
    Merci d'avance,

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Plutôt que de passer par du vba je te conseillerais d'utiliser une mise en forme conditionnelle, beaucoup plus simple.

    Mais pour répondre a ta question.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(2, 1), Cells(DernLigne, DernCols)).Value
    Tu lui demande la valeur d'une plage et à juste titre il ne comprends pas.
    Exemple: si tu as: 1 2 3 4 5 6 "un" "deux" quel valeur tu choisis ?

    Il faudrait faire une boucle sur chaque cellule de la plage.

    à partir du moment où il y a une mention "En retard" dans la ligne.
    Tu as codé l'inverse.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Plutôt que de passer par du vba je te conseillerais d'utiliser une mise en forme conditionnelle, beaucoup plus simple.
    Alors je suis d'accord avec toi sur la simplicité, j'ai effectivement réussi à la faire (mais ça ne marchait pas très bien, me surlignant un peu n'importe quoi...). Cependant, comme ma macro prends en compte une certain nombre d'opérations de mise en page qui permet aux utilisateurs de ne pas avoir à faire autre chose qu'activer la macro.

    Alors je regardais un petit peu au niveau de la boucle. J'ai cette boucle qu'on avait travaillé ensemble il me semble qui fonctionne très bien pour supprimé des lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim DernLigne As Long
    Range("A2").Select
    DernLigne = Range("A1", Selection.End(xlDown)).Cells.Count
     
    For i = DernLigne To 2 Step -1
    If Range("AC" & i).Value <> "Sans suite" Then Rows(i).Delete
    Next
    Et je voudrais prendre exemple tout en changeant la fonction mais ça ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub misencouleur()
     
    Dim DernLigne As Long
    DernLigne = Range("A1", Selection.End(xlDown)).Cells.Count
    Dim DernCols As Long
    DernCols = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
     
    For i = DernLigne To 2 Step -1
    If Range("I" & i).Value = "En retard" Then Rows(i).Interior.ColorIndex = 3
    Next
    End Sub
    Je galère, ça m'énerve parce que j'avais réussi à la faire fonctionner et je bute bêtement.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    mais ça ne fonctionne pas.
    Pas très précis.
    Un message d'erreur?
    Un résultat inattendu?

    ps: comme tu ne supprime pas de ligne tu peux boucler "dans le sens normal"

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut
    Je te met mon doc en pièce jointe. Il devrait y avoir la macro à l'intérieur. Copie de Offre client-8.xls

    Dis-moi si ça si ça fonctionne ou pas.

    Jean

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Je n'ouvre pas les pièces jointes, cf l'article épinglé en haut de la section avec écrit IMPORTANT devant.

    A priori je ne vois pas d'erreur dans le dernier code que tu as posté, j'aimerais savoir ce que tu veux dire par "ça fonctionne pas"

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/02/2016, 15h52
  2. Réponses: 2
    Dernier message: 03/09/2014, 15h13
  3. [XL-2007] Compter les cellules identiques en fonction d'une condition
    Par pecroxxxx dans le forum Excel
    Réponses: 9
    Dernier message: 31/03/2013, 22h41
  4. sed et ajout d'une ligne au début d'un fichier en fonction d'une condition
    Par sheepolata dans le forum Administration système
    Réponses: 2
    Dernier message: 14/10/2010, 11h23
  5. Calcul du nombre de lignes en fonction d'une condition
    Par didier roustand dans le forum Débutez
    Réponses: 7
    Dernier message: 27/01/2010, 18h32

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