Code VBA $B6 => $B65521 tout seul à l'ouverture du fichier

Bonjour à tous,

A l'aide d'un des membres du forum, je suis en train de réaliser un tableau excel qui sera modifié quotidiennement en termes de nombres de lignes. Pour avoir une homogénéité dans la mise en page, nous avons créer le code VBA suivant :

With Sheets("Feuil1").Range("C6:U65000")
    ' ---------- 1ère MFC = BORDURES SANS FOND -------------
    .FormatConditions.Delete ' supprime toutes les MFC de la plage C6:U65000
    'installe la formule de la mfc
    .FormatConditions.Add Type:=xlExpression, Formula1:="=SI($B6<>"""";MOD(LIGNE();2)=1;"""")"
    ' propriétés de la mfc
    .FormatConditions(.FormatConditions.Count).SetFirstPriority
    'cadre de la mfc
    .FormatConditions(1).Borders.Weight = xlHairline 'xlThin 'pour traits continus
    .FormatConditions(1).StopIfTrue = False 'interrompre si vrai

Normalement, dès que j'ouvre mon classeur, les MFC précédentes s'effacent et les nouvelles prennent place. Le HIC, c'est que la formule dans mes MFC devient nous pas : =SI($B6<>"""";MOD(LIGNE();2)=1;"""") mais =SI($B65521<>"""";MOD(LIGNE();2)=1;"""").

Et donc, les MFC ne fonctionnent pas.

Comment faire pour que le $B6 reste en $B6 à l'ouverture du classeur ?

Merci de votre aide

Bonjour

Pour info

Après plusieurs fermetures/ouvertures du fichier aucun souci, la formule reste tel quelle

Il faudrait le fichier en cause pour espérer (sans en être sur) trouver une solution

Bonjour,

Ta formule irait dans une cellule mais n'est pas une formule de format conditionnel. Seule la condition importe, qui renvoie VRAI ou FAUX et si VRAI, le format retenu s'applique aux cellules concernées, sinon il ne s'applique pas.

Si ta condition consiste à appliquer un format sur les lignes impaires, la formule doit être :

=MOD(LIGNE();2)=1

Et tu peux même te limiter à : =MOD(LIGNE();2) , car ne va renvoyer que 1 (=VRAI) ou 0 (=FAUX).

Cordialement

Ferrand

Bonjour à vous,

Le $B6 vient du fait que la mise en page s'arrête une fois que la celulle (par exemple B305) n'est plus remplie.

Du coup, mon code VBA deviendrait :

.FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(LIGNE();2)=1;"""")"

?

Je dépersonnalise le fichier et j'essai de vous le faire parvenir

Merci

Re,

Formula1:="=MOD(LIGNE();2)=1"

Faut pas chercher à trop en mettre...

C'est bien ce que je pensais. Les 65000 lignes sont mises en page

Est-il possible de limiter ça aux lignes remplies ?

Oui avec ET :

=ET($A1<>"";MOD(LIGNE();2)=1)

Choisir la colonne qui stisfait le mieux la condition (toujours remplie quand il faut appliquer le format).

Malheureusement, ça me donne un argument ou une procédure incorrecte.

Curieux mais erreur toujours possible !

Sans fichier (avec erreur) difficile de diagnostiquer.

Le voici

13fichier-juju.zip (65.83 Ko)

Bonjour,

Fais-tu attention à la cellule active quand tu ajoutes ta MFC vu que tu as des références relatives ?

eric

Bonjour Eric,

Non, je ne fais pas attention à ma cellule active, puisque de toutes manières, la MFC se met à jour à l'ouverture du fichier.

Voilà le problème :

"=ET($B6<>"""";MOD(LIGNE();2)=1)"

Cordialement

Ferrand

MFerrand a écrit :

Voilà le problème :

"=ET($B6<>"""";MOD(LIGNE();2)=1)"

Cordialement

Ferrand

Merci Ferrand. Effectivement, ça supprime l'erreur. Mais ça change rien au niveau des MFC

Ah ! si ! La MFC s'applique correctement. Je viens de le tester.

Vous avez Excel 2010 ou 2013 ?

2010. Mais cela ne devrait pas avoir d'incidence. Le dispositif MFC n'a plus changé depuis 2007.

Et pourtant, ça ne marche pas chez moi

Tu as essayé sur le fichier que j'ai regardé ?

6fichier-juju.zip (60.45 Ko)

Bonjour,

Oui j'ai bien essayé avec ce fichier. Mais voilà ce que ça donne : =ET($B65515<>"";MOD(LIGNE();2)=0) à la place du $B6

Rechercher des sujets similaires à "code vba b65521 tout seul ouverture fichier"