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 :

Coloriage ligne selon saisie


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut Coloriage ligne selon saisie
    Bonjour le Forum,

    En saisissant 100 dans la colonne A, grâce au code si dessous, la ligne d'à coté se colorie en bleu. (Ligne B à J)

    Ma Question est :
    Est ce qu'il y a moyen de racourcir ce code ? De l'optimiser ?
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim x As Variant
     
    For Each x In Range("A1:A" & Range("A65536").End(xlUp).Row)
     If x = 100 Then
      x.Rows.Offset(0, 1).Interior.ColorIndex = 8
      x.Rows.Offset(0, 2).Interior.ColorIndex = 8
      x.Rows.Offset(0, 3).Interior.ColorIndex = 8
      x.Rows.Offset(0, 4).Interior.ColorIndex = 8
      x.Rows.Offset(0, 5).Interior.ColorIndex = 8
      x.Rows.Offset(0, 6).Interior.ColorIndex = 8
      x.Rows.Offset(0, 7).Interior.ColorIndex = 8
      x.Rows.Offset(0, 8).Interior.ColorIndex = 8
      x.Rows.Offset(0, 9).Interior.ColorIndex = 8
     End If
    Next x
     
    End Sub
    Merci pour votre aide.

    Cdt, Anto.

    PC.
    Office 2003.
    XP.

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Septembre 2006
    Messages : 108
    Par défaut
    Voila la solution pour la cellule qui se trouve à sa droite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value = 100 Then
         Target.Offset(0, 1).Interior.ColorIndex = 8
    End If
    End Sub

  3. #3
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour Antoniom le forum peut etre comme cela !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
    If Target = 100 Then
     Range(ActiveCell(1, 2), ActiveCell(1, 10)).Interior.ColorIndex = 8
     End If: End If
    End Sub

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Hello, Laeticia, Seba_stien,

    Merci pour vos réponses rapides !

    Sebastien j'imagine que tu as voulu me donner une piste, mais je n'arrive pas à l'exploiter.

    Laeticia, ton code est presque bon, mais il ne fais pas tout à fait ce que je souhaite.
    Comme tel, il colorie la cellule (avec sa ligne) que je selectionne après la saisie, ce que je souhaite c'est qu'il colorie la ligne d'à côté, comme dans le code que j'ai fait.

    J'ai juste modifié cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(ActiveCell(0, 2), ActiveCell(0, 10)).Interior.ColorIndex = 8
    mais même comme ça, je dois taper Enter ou flèche du bas pour qu'il colorie la ligne d'à côté.. hm pas top.

    J'ai également essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(0, 2), Cells(0, 10)).Interior.ColorIndex = 8
    mais évidemment ça ne joue pas.

    Bref en tous cas merci pour votre aide.

    Le post reste ouvert.

    Cdt, Anto.



    Mais ne vous inquiètez pas, mon code va bien, je bvoulais juste savoir si il y avait possibilité de le racourcir un peu.

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    En prenant le soin de se relire, on fait gagner du temps au contributeurs ... et à soi même !

    citation :
    Laeticia, ton code est presque bon, mais il ne fais pas tout à fait ce que je souhaite.
    Comme tel, il colorie la cellule (avec sa ligne) que je selectionne après la saisie, ce que je souhaite c'est qu'il colorie la ligne d'à côté, comme dans le code que j'ai fait.
    une ligne est au dessus ou au dessous, une colonne à côtè, on peut avoir les cellules à droite de celle sélectionnée etc... Savoir à quoi s'en tenir, ce qui se traduit précisément en vba facilement
    cordialement,

    Didier

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Hello,

    Didier, me suis-je mal exprimé ? Faut que j'boive un bon café bien corsé ! (Sûrement ça )

    Ce que je voulais dire, c'est que par exemple si je saisis 100 dans la cellule A3, que la ligne B3:J3 passe en bleu.

    Autre exemple, si A10 = 100 -> B10:J10 = Bleu.

    Etc.

    Sorry encore si j'ai mélangé les pinceaux.

    Cdt, Anto.

  7. #7
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    mais même comme ça, je dois taper Enter ou flèche du bas pour qu'il colorie la ligne d'à côté.. hm pas top.
    Si j'ai bien compri ston problème tu souhaiterais que la macro s'exécute dès que l'utilisateur tape 100 sans qu'il ai besoin de taper "entrée" ou une flèche pour valider sa frappe?

    Si c'est bien ça je ne crois pas que celà soit possible car la frappe n'est pas achevé, mais c'est à confirmer.

  8. #8
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    re Antonium,

    CQFD , qu'on le veuille ou non, à un moment donné (idéalement le plus tôt possible ), dans un projet on prend un papier et un crayon pour écrire ce qu'on veut faire ( ou dessiner : organigramme etc...), ça vous fait gagner du temps, c'est fou !

    citation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ce que je voulais dire, c'est que par exemple si je saisis 100 dans la cellule A3, que la ligne B3:J3 passe en bleu.
    ce que tu as inscrit est irréalisable en vba
    Comprends bien qu'il ne s'agit pas de pinailler pour le plaisir, mais un code ne supporte pas un espace en trop ou autre choses pouvant passer pour broutilles dans la vie courante, donc...

    Tu parles ici d'une plage de cellule, B3:J3 ne peut se traduire en une ligne

    bon courage,

    Didier

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

Discussions similaires

  1. Formulaire avec nombre de lignes de saisie variable
    Par NadègeG dans le forum Langage
    Réponses: 9
    Dernier message: 03/10/2006, 08h10
  2. Réponses: 15
    Dernier message: 09/06/2006, 12h13
  3. Ne pas afficher une ligne selon une valeur
    Par uloaccess dans le forum Access
    Réponses: 3
    Dernier message: 18/11/2005, 14h04
  4. VBA EXCEL - Sélection d'une ligne suivant saisie
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 48
    Dernier message: 15/11/2005, 17h41
  5. Ajout n lignes selon valeur...
    Par nicburger dans le forum Access
    Réponses: 1
    Dernier message: 26/10/2005, 19h49

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