Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro mise en forme conditionnelle décalée

17 réponses
Avatar
j-pascal
Bonjour à toutes et à tous,
Je fais mon entrée sur le forum, merci d'être indulgent(e)s ! Pour l'adresse
de messagerie, je n'ai pas osé car le forum me paraît être déjà un lieu
d'échanges...
Voici ma question :

En fonction du contenu de la cellule A1, je veux une mise en forme dans la
zone (C1:F1) idem pour la cellule A2 et la zone (C2:F2), etc. Le prob, est
que ça marche la première fois mais quand la valeur A1 change, la mise en
forme de la zone (C1:F1) ne change pas... Et si je veux affecter plusieurs
mises en forme dans la zone (C1:F1)en fonction de différentes valeurs dans
la celulle A1, alors là je sèche lamentablement. Comme je l'ai plus ou moins
indiqué, je souhaite évidemment que cette MEF soit étendues aux lignes
suivantes...

<Ci-après, ce que j'ai fait (à titre d'exemple), sachant que ça ne peut pas
marcher... :

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False
On Error Resume Next

If Target.Value = toto Then
Target(1, 4).Interior.ColorIndex = 30
Target(1, 5).Interior.ColorIndex = 28
Target.Font.ColorIndex = 2
Else (et là le "else" n'a évidemment aucun effet !")
Target(1, 4).Interior.ColorIndex = 28
Target.Font.ColorIndex = 4


If Target.Value = titi Then
Target(1, 4).Interior.ColorIndex = 32
Target(1, 5).Interior.ColorIndex = 29
Target.Font.ColorIndex = 2
Else
Target(1, 4).Interior.ColorIndex = 28
Target.Font.ColorIndex = 4

End If

Merci à celui ou celle... A+

10 réponses

1 2
Avatar
Jacky
Bonjour

Peut-être que..

If Target.Value = "toto" Then
Target(1, 4).Interior.ColorIndex = 30
Target(1, 5).Interior.ColorIndex = 28
Target.Font.ColorIndex = 2
ElseIf Target.Value = "titi" Then
Target(1, 4).Interior.ColorIndex = 32
Target(1, 5).Interior.ColorIndex = 29
Target.Font.ColorIndex = 2
Else
Target(1, 4).Interior.ColorIndex = 28
Target.Font.ColorIndex = 4
End If

Salutations
JJ

"j-pascal" a écrit dans le message de
news:%
Bonjour à toutes et à tous,
Je fais mon entrée sur le forum, merci d'être indulgent(e)s ! Pour
l'adresse

de messagerie, je n'ai pas osé car le forum me paraît être déjà un lieu
d'échanges...
Voici ma question :

En fonction du contenu de la cellule A1, je veux une mise en forme dans la
zone (C1:F1) idem pour la cellule A2 et la zone (C2:F2), etc. Le prob, est
que ça marche la première fois mais quand la valeur A1 change, la mise en
forme de la zone (C1:F1) ne change pas... Et si je veux affecter plusieurs
mises en forme dans la zone (C1:F1)en fonction de différentes valeurs dans
la celulle A1, alors là je sèche lamentablement. Comme je l'ai plus ou
moins

indiqué, je souhaite évidemment que cette MEF soit étendues aux lignes
suivantes...

<Ci-après, ce que j'ai fait (à titre d'exemple), sachant que ça ne peut
pas

marcher... :

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False
On Error Resume Next

If Target.Value = toto Then
Target(1, 4).Interior.ColorIndex = 30
Target(1, 5).Interior.ColorIndex = 28
Target.Font.ColorIndex = 2
Else (et là le "else" n'a évidemment aucun effet !")
Target(1, 4).Interior.ColorIndex = 28
Target.Font.ColorIndex = 4


If Target.Value = titi Then
Target(1, 4).Interior.ColorIndex = 32
Target(1, 5).Interior.ColorIndex = 29
Target.Font.ColorIndex = 2
Else
Target(1, 4).Interior.ColorIndex = 28
Target.Font.ColorIndex = 4

End If

Merci à celui ou celle... A+




Avatar
Philippe.R
Bonjour Jean-Pascal,
Si le nombre de valeurs auxquelles tu souhaites lier une mise en forme particulière est limité à 4, tu
peux avantageusement te tourner vers la MEFC, avec pour support ce classeur à télécharger :
http://www.excelabo.net/moteurs/compteclic.php?nom=av-mefc

Voici en outre une copie du célèbre Message de Bienvenue rédigé par Monique (qui après une brève
apparition est retournée à d'autre nobles occupations) ; il présente une belle collection de références
qui devraient t'aider à progresser.
"==============================début de copie================================"
bienvenue sur mpfe :-)

Sur les sites proposés dans ce message d'accueil, tu découvriras des
cours (avec ou sans VBA), des classeurs d'exemples à télécharger, des
macros, des trucs et astuces...

Pour connaître les habitudes de mpfe (et les erreurs à éviter, comme les
fichiers joints...), tu peux lire ces messages publiés régulièrement
ici, avec l'un de ces intitulés
- FAQ MPFE http://dj.joss.free.fr/netiquet.htm (nétiquette, conseils...)
- [Charte] du forum MPFE
et consulter cette page
http://www.excelabo.net/mpfe/connexion.php
(connexion,conseils...), à consulter absolument si tu suis le forum
depuis un site web (la solution la moins efficace et la moins
confortable) ou avec le serveur de Wanadoo (très peu performant quant au
délai d'affichage et au nombre de messages publiés).
Le serveur à utiliser : news.microsoft.com - ou cliquer directement sur
news:microsoft.public.fr.excel

Pour les débutants, voilà 5 bons trucs pour apprendre vite :
- utiliser souvent l'enregistreur de macro et analyser le code obtenu
- utiliser la touche F1 pour appeler l'aide (à propos du mot-clef, en
VBA, sur lequel se trouve le curseur)
- tester et essayer de comprendre des réponses faites à d'autres
- consulter souvent les sites renseignés
- ne jamais hésiter à poser des questions sur le forum

Voici la liste des sites dédiés à Excel, réalisés par des mpfie(ne)s et
que nous devons tous avoir dans nos favoris.
Débutant ou utilisateur confirmé, tu y trouveras de quoi apprendre,
progresser et résoudre bien des problèmes.
(la date d'une mise à jour est signalée par ** ** )
http://dj.joss.free.fr/faq.htm ** 16/09/04 **
la FAQ du forum, mise en oeuvre par Daniel et à lire absolument par tout
nouveau sur mpfe : la bonne manière de participer au forum (charte,
souriettes, abréviations...), liens, bibliographie, les réponses aux
questions le plus souvent posées, des trucs et astuces, un moteur de
recherche interne et externe (Yahoo), une page débutants
http://www.excelabo.net/xl/debuter.php ** 27/11/04 **
le site humoro-ludique de Misange : une importante rubrique "Trucs et
astuces", des classeurs à télécharger, un glossaire, une page débutants,
des jeux en VBA... et un méta-moteur de recherche sur 6 sites de cette
liste...
mais aussi tout ce qui fait "l'esprit mpfe", les perles, les gifs...
et,sur http://fotoflo.free.fr/ les photos des soupers/dîners de mpfe
http://longre.free.fr/ ** 19/03/03 **
le site de Laurent, notre Grand Chef à Quatre Plumes : de très nombreux
liens commentés, les macros pointues de Laurent... (techniques de
programmation, calculs de dates et d'heures, Api...)
http://jacxl.free.fr/mpfe/ ** 01/03/03 **
le site de : les graphiques, la bourse, le Web, un cours VBA, un
moteur de recherche à la page Aide... et le trombinoscope des
mpfien(ne)s
http://ericrenaud.free.fr/index.html ** 25/04/04**
le site d'Eric : particulièrement destiné aux débutants (UserForm...)
http://frederic.sigonneau.free.fr** 15/08/04**
le site de Frédéric : gestions de temps, VBA pour Excel... une mine d'or
de macros
http://xlbysteph.free.fr/aideinformatique/web.htm ** 27/12/03 **
le site de Stéphane : cours VBA, Excel 4 (ou 5) et Excel 97/2000...
http://perso.club-internet.fr/bdafonse
le site de Bruno : formules, classeurs à télécharger...
http://cherbe.free.fr/ ** 26/02/04 **
le site de Christian : initiation à Excel, initiation à VBA, Excel
avancé sans VBA... (cours à télécharger)
http://www.ilyapa.net/excel/ ** 18/05/04 **
le site de Pascal : procédures VBA, composants par
l'exemple,calendriers, jeux
http://intendant.free.fr/ ** 11/03/02 **
le site de Thierry : cours VBA (début et perfectionnement), graphique,
Excel en bureautique...
http://www.polykromy.com/ ** 24/03/04**
le site de Gaëtan : cours sur Excel sans VBA, les couleurs, des astuces
animées...
http://www.gaboly.com ** 05/02/03 **
le site de Michel, cours Excel et VBA (avec un Mac)...
http://www.excel-downloads.com ** 24/10/04**
le site de David, des programmes Excel à télécharger
http://mapage.noos.fr/pnoss/excel.html ** 23/08/02 **
le site de Philippe, trucs et astuces, Exoutils (barre d'outils pour
Excel à télécharger)...
http://www.champey.com/
le site de Patrice : les langages de programmation (VB, VBS et VBA)
http://www.anthony-penel.fr.st
le site d'Anthony : des macros appliquées à la finance
http://www.fundp.ac.be/~jmlamber/
le site de Jean-Marie : initiation VBA, TCD, listes, solveur...
http://www.ibelgique.com/OfficeAssistant ** 14/03/02 **
le site de Bureauticien : nombreux exemples résolus par VBA,fonctions...
http://www.cathyastuce.com/index.htm ** 28/02/04**
le site de Cathy : cours Excel avec ou sans VBA...
http://perso.wanadoo.fr/jean.duprat
le site de Papy Jean : fiches Excel pour débutants...
http://www.ifrance.com/fleguen/excel.html
le site de Konga : des classeurs d'exercices (fonctions, macros)
http://www.er.uqam.ca/merlin/xw999998/fr/fexcel.htm
le site de Patrice Roy : des conseils clairs pour débuter

Pour une collection très fouillée d'adresses (avec commentaires) :
le classeur de Clément M, à télécharger sur disciplus (Excelabo)
Favoris.xls
Et un lien à y ajouter, la liste des constantes intrinsèques de VBA avec
leur valeur numérique (par versions d'Excel) :
http://support.microsoft.com/support/kb/articles/Q112/6/71.ASP
(télécharger: wc0993.exe)

Pour le passage de Excel 4 à Excel 97, un lien proposé par Geo
http://www.microsoft.com/FRANCE/officedev/infotech/info.asp?mar=/FRANCE/
officedev/infotech/MacroXLtoVBA.html
(le lien tient sur plusieurs lignes, il se termine par html)
ou http://minilien.com/?5vyhNUG62R

Enfin, pour retrouver d'anciens messages, tu peux aller sur
http://groups.google.com/advanced_group_search
avec les conseils de Clément M pour obtenir les meilleurs résultats :
--- Là, il y a un écran "bilingue" qui permet de faire une recherche
plus ou moins pointue, selon les informations dont l'on dispose.
Une fois que l'on a repéré un message, il est possible de récupérer
l'ensemble de la ficelle, en cliquant sur "Voyez Fil de Discussion (x
articles)".
Google fonctionne très mal quand on fait une recherche avec un nom
qui contient des accents. Il semble donc préférable d'utiliser l'adresse
électronique comme nom d'auteur ; avec toutefois encore quelques réserves,
tel ou tel pseudo pouvant être préférable.
Auteur => 496
Auteur la_bonne_adresse_de jps => 5.160 messages
Auteur Sabatier => 13.600 messages
Auteur jps => 76 messages
---
Sinon, pour tailler la bavette, une dernière adresse :
http://www.VBA.fr
Bonne lecture et à bientôt sur mpfe.

"================================fin de copie================================="

--
Amicales Salutations
XL 97 / 2000 / 2002

"j-pascal" a écrit dans le message de news:
%
Bonjour à toutes et à tous,
Je fais mon entrée sur le forum, merci d'être indulgent(e)s ! Pour l'adresse
de messagerie, je n'ai pas osé car le forum me paraît être déjà un lieu
d'échanges...
Voici ma question :

En fonction du contenu de la cellule A1, je veux une mise en forme dans la
zone (C1:F1) idem pour la cellule A2 et la zone (C2:F2), etc. Le prob, est
que ça marche la première fois mais quand la valeur A1 change, la mise en
forme de la zone (C1:F1) ne change pas... Et si je veux affecter plusieurs
mises en forme dans la zone (C1:F1)en fonction de différentes valeurs dans
la celulle A1, alors là je sèche lamentablement. Comme je l'ai plus ou moins
indiqué, je souhaite évidemment que cette MEF soit étendues aux lignes
suivantes...

<Ci-après, ce que j'ai fait (à titre d'exemple), sachant que ça ne peut pas
marcher... :

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False
On Error Resume Next

If Target.Value = toto Then
Target(1, 4).Interior.ColorIndex = 30
Target(1, 5).Interior.ColorIndex = 28
Target.Font.ColorIndex = 2
Else (et là le "else" n'a évidemment aucun effet !")
Target(1, 4).Interior.ColorIndex = 28
Target.Font.ColorIndex = 4


If Target.Value = titi Then
Target(1, 4).Interior.ColorIndex = 32
Target(1, 5).Interior.ColorIndex = 29
Target.Font.ColorIndex = 2
Else
Target(1, 4).Interior.ColorIndex = 28
Target.Font.ColorIndex = 4

End If

Merci à celui ou celle... A+




Avatar
JpPradier
Bonjour Jean-Pascal ( joli prénom ;-)) )

Pourquoi tu ne passes pas par Format/Mise en forme Conditionnelle :
Tu selectionnes ta zone C1:F2 et comme condition : La formule est :
=$A1="toto" et tu choisis ton format. Idem pour la deuxième condition.

j-p
Avatar
j-pascal
Merci Jacky, j'ai un peu ajusté ton code et ça marche nickel (depuis le
temps que je séchais !!!). La "target" peut se trouver dans n'importe quelle
cellule de la feuille, mais si on veut accepter la cible seulement dans une
seule colonne (A par exemple) (la MEFC s'applique seulement si "toto" ou
"titi" se trouve en A) doit on passer par une ligne comme "for each c in
range (A:A) ? A mon avis il y a mieux, non ?
Avatar
j-pascal
Merci ! (et qui me dit que le Jp de Pradier, n'est pas un jean-pascal qui ne
veut pas l'avouer...)
Merci pour ta proposition, en fait j'étais en train de répondre à Jacky qui
m'a mis sur la voie. Ta suggestion est bonne, mais le problème c'est la
limite à 3 des MEFC sur excel. Seul la macro me permet d'aller plus loin.

PS je cafouille pour les réponses. Je veux répondre à ceux qui m'envoient
leurs réponses (c'est à dire sur le forum, mais dans la même ficelle (?))
mais quand je fais "répondre" on me demande de préciser le destinataire
(???). J'ai dû râter une étape...
Avatar
JpPradier
Merci ! (et qui me dit que le Jp de Pradier, n'est pas un jean-pascal qui ne
veut pas l'avouer...)


C'est pas impossible ;-))

Merci pour ta proposition, en fait j'étais en train de répondre à Jacky qui
m'a mis sur la voie. Ta suggestion est bonne, mais le problème c'est la
limite à 3 des MEFC sur excel. Seul la macro me permet d'aller plus loin.

PS je cafouille pour les réponses. Je veux répondre à ceux qui m'envoient
leurs réponses (c'est à dire sur le forum, mais dans la même ficelle (?))
mais quand je fais "répondre" on me demande de préciser le destinataire
(???). J'ai dû râter une étape...


Ben tes réponses apparaissent au bon endroit à priori.

j-p

Avatar
Patrick BASTARD
Bonjour, *j-pascal*
J'ai lu ton post %
avec le plus grand intéret :


le problème c'est la limite à 3 des MEFC sur excel.


Mise en forme par défaut : 1 possibilité
Mises en forle conditionnelles : 3 possibilités
Mise en forme personnalisée : 3 possibilités.
Soit 7 possibilités

Sinon,
Ce .XLA est annoncé comme pouvant permettre d'appliquer jusqu'à 30 formats
conditionnels...
http://www.xldynamic.com/source/xld.CFPlus.Download.html



--
Bien cordialement,
P. Bastard

Avatar
j-pascal
Bonsoir,
Merci pour ta proposition. J'ai chargé le fichier que tu m'as indiqué. Un
peu méfiant (sachant peu mais tout de même assez de ce qu'on peut faire avec
les macros) j'ai ouvert le classeur sans activer les macros ; et je
constate après, que dans vba le code est protégé par mot de passe. Et ça, je
n'aime pas. Il y a tellement de bons programmeurs qui donnent leurs codes
sans réserve, que je n'ai pas envie d'en faire l'économie. Je ne doute pas
que ton conseil soit un bon conseil, mais même si tu me jurais que ce
classeur est ok, je préférerai me passer de la solution que de "tenter le
diable"...
Un grand merci quand même. Je vais guetter la réponse de Jacky, et sur ce
thème, j'aurai déjà de quoi faire. Bonne semaine à toi.
jp
Avatar
Jacky
Re..

Si j'ai bien compris, cela pourrait ressembler à ceci

'----------
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 1 Then
If Target.Value = "toto" Then
Target(1, 4).Interior.ColorIndex = 30
Target(1, 5).Interior.ColorIndex = 28
Target.Font.ColorIndex = 2
ElseIf Target.Value = "titi" Then
Target(1, 4).Interior.ColorIndex = 32
Target(1, 5).Interior.ColorIndex = 29
Target.Font.ColorIndex = 2
Else
Target(1, 4).Interior.ColorIndex = 28
Target.Font.ColorIndex = 4
End If
End If
End Sub
'-----------
Salutations
JJ

"j-pascal" a écrit dans le message de
news:
Merci Jacky, j'ai un peu ajusté ton code et ça marche nickel (depuis le
temps que je séchais !!!). La "target" peut se trouver dans n'importe
quelle

cellule de la feuille, mais si on veut accepter la cible seulement dans
une

seule colonne (A par exemple) (la MEFC s'applique seulement si "toto" ou
"titi" se trouve en A) doit on passer par une ligne comme "for each c in
range (A:A) ? A mon avis il y a mieux, non ?




Avatar
Patrick BASTARD
Bonjour, *j-pascal*


C'est ton droit le plus strict.

Tu ne trouveras ici que des propositions, jamais d'injonction.
Et tu apprendras par toi-même à juger du sérieux des sites -et des codes-
que de nombreux contributeurs mettent gracieusement à notre disposition.

A une prochaine fois, peut-être ?

--
Bien cordialement,
P. Bastard


Bonsoir,
Merci pour ta proposition. J'ai chargé le fichier que tu m'as
indiqué. Un peu méfiant (sachant peu mais tout de même assez de ce
qu'on peut faire avec les macros) j'ai ouvert le classeur sans
activer les macros ; et je constate après, que dans vba le code est
protégé par mot de passe. Et ça, je n'aime pas. Il y a tellement de
bons programmeurs qui donnent leurs codes sans réserve, que je n'ai
pas envie d'en faire l'économie. Je ne doute pas que ton conseil soit
un bon conseil, mais même si tu me jurais que ce classeur est ok, je
préférerai me passer de la solution que de "tenter le diable"...
Un grand merci quand même. Je vais guetter la réponse de Jacky, et
sur ce thème, j'aurai déjà de quoi faire. Bonne semaine à toi.
jp


1 2