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 :

[E-03] Mise en forme conditionnelle en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Par défaut [E-03] Mise en forme conditionnelle en VBA
    hello!
    voilà l'adresse du fichier:
    http://dl.free.fr/rOjwRSyl4

    Je dois rajouter une mise en forme conditionnelle sur l'onglet calendrier, j'ai déjà utilisé les 3 d'Excel, et j'en ai mis d'autres en VBA.
    Mais là, c'est un peu difficile:
    Dans l'onglet TST colonne U, si la gestion transport ne termine pas par "wall", il faut que dans le calendrier, la cellule correspondante s'écrive en italique.
    J'ai repris cette gestion transport dans l'onglet Calendrier colonne IQ.

    J'avais essayé de faire une macro et de regarder le code, ca m'a donné quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="DROITE(F1014;4)<>""wall"""
    With Selection.FormatConditions(1).Font
    .Bold = false
    .Italic = true
    end with
    Selection.Autofill Destination:=Range("D1014:D1017"), type:=xlFillDefault
    Range("D1014:D1017").Select
    End sub
    Le "delete" me fait un peu peur...
    pour le reste, qu'en pensez vous ?

  2. #2
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 118
    Par défaut
    bonjour,

    je me suis penché sur ton problème, mais je ne comprends pas très bien ce que tu veux faire...

    par exemple : la cellule correspondante qui doit s'écrire en italique

    d'autre part, dans le code que tu publies, il y a des choses bizarres :

    - le false à côté de .bold doit commencer par une majuscule
    - idem pour le true en dessous
    - idem pour le end with

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Par défaut
    hello JMH51

    Déjà, merci de t'être intéressé à mon cas. Je vais essayer de te réexpliquer + clairement.

    Dans l'onglet TST, dans la colonne U, tu dois voir normalement des TJ WALL, FG ES, CK ES, etc...
    Donc je repartis tout ça en 2 catégories:
    -ceux qui finissent par WALL
    -ceux qui ne finissent pas par WALL

    Si tu regardes dans ce meme onglet TST la colonne D, tu dois voir à la date du 20/10/2008 une affaire Malpensa (je t'aide, c'est à la ligne 167 ).
    Tu regardes la cellule U167 et tu vois FG ES.

    Maintenant si tu regardes l'onglet Calendrier à la date du 20/10/2008, tu vois dans cette colonne à la ligne 170 une cellule jaune avec dedans écrit "usine - wallsa" et cette cellule jaune correspond en fait au lieu de chargement et de déchargement de cette affaire Malpensa au 20/10/2008 (colonne I et J de l'onglet TST)

    Beaucoup d'éléments de cet onglet TST sont repris dans l'onglet Calendrier tout a fait a droite avec beaucoup de concaténations qui m'ont aidé à réaliser ce calendrier (colonnes IJ à IQ). En colonne IQ, j'ai repris tous les TJ WALL, FG ES, etc...

    Maintenant, ce qu'il faudrait c'est que cette cellule C170 du Calendrier, étant donné qu'elle correspond à une ligne du tableau TST qui finit par FG ES (c'est à dire "qui ne finit pas par WALL") soit écrite en italique.

    PS: le calendrier est décomposé en 3 parties chacune de 500 lignes
    et le tableau TST contient 500 lignes.
    Les 500 lignes de TST et de Calendrier correspondent une à une.
    Pour mieux comprendre comment se servir de ce fichier, il existe un onglet "Principe" où tout est expliqué.

    Voilà, j'espère avoir été "clair" (c'est pas évident...)

    PPS: pour les bizarreries dans le code que j'ai mis sur le site, c'est parce que je l'ai recopié à la main, mais en vrai, les majuscules étaient bien présentes là où il faut.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Puisque tu as l'intention de faire ça en VBA, un conseil: laisse tomber la mise en forme conditionnelle!

    La mise en forme sera bien conditionnelle, mais ce sera dans le code VBA que se trouvera la condition.

    Ainsi, je te conseille donc d'utiliser la procédure événementielle "Worksheet_Change", dans laquelle l'argument "Target" représente une référence à la cellule dont le texte a été modifié.

    En gros, tout ce que tu auras à faire, c'est analyser le contenu de ta cellule (Target.Value), et lui appliquer une couleur de fond différente suivant les cas. Il ne faudra pas oublier de mettre une couleur de fond par défaut, sinon ta cellule gardera la couleur d'avant.

    Pour changer la couleur de fond, tu auras besoin de modifier la propriété Target.Interior.ColorIndex et de mettre le chiffre correspondant à la couleur désirée.

    Pour analyser la valeur de ta cellule, tu auras besoin des fonctions de traitement de chaines de caractères, dont tu as un index entier dans l'aide en ligne.

    Bon courage: ça ne sera pas facile du tout, surtout avec tes formules Excel.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Par défaut
    hello et merci pour les conseils!

    bon, je ne veux pas mettre une autre couleur sinon, on ne va plus s'y retrouver. Je cherche juste à écrire en italique les "trajets" dont on ne s'occupe pas (ceux qui sont "non-WALL").

    je sais qu'il faut que je nomme les cellules ("c13:ad512") par exemple pour la 1e partie du calendrier. Ce que je n'arrive pas faire c'est le lien des diverses cellules avec les TJ WALL, FG ES, etc... qui leur correspondent. En gros c'est le "si... alors..." qui me pose probleme.
    Quand on met une formule sur excel, ca va puisque qu'on établit une correspondance entre 2 cellules et ensuite on tire la formule et tout s'adapte. Mais avec le code, c'est pas du tout la meme chose. Il faudrait que je prenne les cellules une par une. Je n'aurais pas assez de toute une vie...

    Bref, c'est pas gagné. J'en viens meme a me demander si c'est possible...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Aaahhh OK j'ai enfin compris.

    En fait, je pense que c'est la manière de fonctionner de ton classeur qui ne colle pas.

    Déjà, je ne comprends pas très bien comment il marche. Ce que je te conseille de faire, c'est d'insérer quelque part un bouton qui lance une procédure dans laquelle l'utilisateur devra insérer des informations dans des formulaires, et c'est VB qui s'occupera d'insérer les informations aux bons endroits avec de bonnes formules, de bonnes relations (ou pas de relations car cela serait superflu) et au bon format.

    Est-ce que j'ai été assez clair?

Discussions similaires

  1. Mise en forme conditionnelle et VBA
    Par LeLaid dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/10/2007, 14h50
  2. Réponses: 2
    Dernier message: 29/05/2007, 14h16
  3. [Formulaire] Mise en forme conditionnelle en VBA
    Par léti07 dans le forum IHM
    Réponses: 26
    Dernier message: 16/10/2006, 09h12
  4. mise en forme conditionnelle et vba
    Par malabar92 dans le forum Access
    Réponses: 4
    Dernier message: 26/04/2006, 14h18
  5. Mise en forme conditionnelle en VBA / Cut-Paste
    Par priest69 dans le forum IHM
    Réponses: 4
    Dernier message: 03/09/2005, 13h54

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