Mise en forme personnalisée conditionnelle

Bonjour,

je suis sur excel et j'utilise les données suivantes :

Cellule A1 Lettre "X"==> sur A2, la valeur doit être sous format personnalisé de forme: 0 "$/T FOB"

Cellule B1 Lettre "Y" ==> sur B2, la valeur doit être sous format personnalisé de forme: 0 "$/T CFR"

Cellule C1Lettre "Z" ==> sur C2, la valeur doit être sous format personnalisé de forme: 0 "$/T ExW"

Ma question est:je veux avoir une liste déroulante de telle sorte quand je choisi une Lettre (de la liste déroulante) X ou Y ou Z dans une cellule A1 je veux que la cellule A2 change de format suivant le schéma ci dessus.

c'est à dire quand je choisi Y dans A1 dans A2 la valeur doit être en format 0 "$/T CFR"

MERCI

Bonjour,

Et la liste déroulante, tu sais la créer?

Un petit extrait du fichier (avec la liste déroulante déjà présente, le cas échéant), mais surtout un aperçu de ce qui figure en colonne B serait le bienvenu

Bonjour à tous

Pour cela il faut une mise en forme conditionnelle et le format ne doit pas être 0 "$/T FOB" mais 0" $/T FOB" car si l'espace est en dehors des "" tu auras une division par 1000 (idem pour les 2 autres formats)

Bonjour

Un début avec ce code de Feuille

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
If Target = "X" Then Target.Offset(1, 0).NumberFormat = "0"" $/T FOB"""
If Target = "Y" Then Target.Offset(1, 0).NumberFormat = "0"" $/T CFR"""
If Target = "Z" Then Target.Offset(1, 0).NumberFormat = "0"" $/T ExW"""
End If
End Sub

Cordialement

14classeur1.xlsm (14.70 Ko)

Re-bonjour,

Salut Chris , Amadeus,

Trois formats personnalisés, appliqués via trois MFC à la plage B1:B12, en pièce jointe.

Attention: ne fonctionnera que si les données en colonne B sont véritablement des données numériques. S'il y a des nombres décimaux, le format provoquera un arrondi (cfr B12) ... Ceci pour insister sur l'utilité de joindre un fichier

Bonsoir

c top, c'est ce que je veux, seulement pourriez vous nous expliquer comment vous avez fait inséré le code sur la cellule voulue ?

car car je saisie l'onglet macro, je ne peux pas avoir accès au code vba utilisé ci dessus

merci

Bonjour,

pourriez vous nous expliquer comment vous avez fait inséré le code sur la cellule voulue ?

Précise à quelle solution tu fais référence ... si tu parles de code, c'est que c'est la proposition d'Amadéus qui te convient ?

Bonjour,

c'est à vous monsieur, juste je veux savoir comment insérer le code vba et l'appliquer à la cellule ?

merci

Salut!

Bonjour les experts!

Savez vous activez l'onglet developpeur de excel si oui, cliquez sur le menu développeur puis à gauche cliquer sur "Visual Basic" ensuite dans la fenêtre qui s'ouvre double cliquer sur la feuille et tu colles le code de Amadeus.

Voilà!

c'est à vous monsieur, juste je veux savoir comment insérer le code vba et l'appliquer à la cellule ?

Il y a des jours où je me sens vieux Il n'y a pas de code vba dans ma proposition !

[Edit:] Bonjour stoure

re,

oui effectivement j'ai ouvert la page VB sur mon excel et j'obtiens la code, comme indiqué sur la pièce jointe, sauf que je ne sais pas comment faire fonctionner ce code sur excel

capture

bjr mr U. Milité

ah ok désolé je commence sur l'excel, en tous cas merci pour votre aide, mais pourriez vous nous expliquer votre solution s'il n y a pas de code VBA ?

Merci

On va y arriver, j'en suis sûr !

Comme dit hier:

Trois formats personnalisés, appliqués via trois MFC à la plage B1:B12

Je commence donc par créer 3 formats personnalisés pour répondre à ta demande ... en tenant compte de l'avertissement de 78chris, que tu as certainement lu:

le format ne doit pas être 0 "$/T FOB" mais 0" $/T FOB" car si l'espace est en dehors des "" tu auras une division par 1000 (idem pour les 2 autres formats)

  • dans une cellule au choix > Clic droit > Format de cellule > onglet Nombre > Catégorie personnalisée 1
  • dans la zone Type indiquer le format souhaité 2
  • répéter l'opération pour les 3 formats 3 formatperso

Je crée ensuite trois MFC (Mise en Forme Conditionnelle > onglet Accueil > Groupe Style)

  • Sélectionner la plage B1:B12 > MFC > Nouvelle règle
  • Utiliser une formule pour déterminer ... et recopier la formule =$A1="X" 1
  • Cliquer sur le bouton Format 2 > onglet Nombre > Personnalisée > Sélectionner le format qui convient, parmi les trois
    mfc

re,

oui effectivement j'ai ouvert la page VB sur mon excel et j'obtiens la code, comme indiqué sur la pièce jointe, sauf que je ne sais pas comment faire fonctionner ce code sur excel

Salut!

Sur la page de ton image, regarde sous le menu "Format" il y'a une fléchette en vert foncé, elle permet de lancer le macro et le point blé foncé de l'arrêter.

je ne pense pas que ce soit nécessaire. Étant lié à la feuille, a mon avis le macro doit pouvoir s'exécuter automatiquement....

Bon!!! Les experts sont là pour plus de détails.

La procédure proposée par le même Amadéus est une procédure événementielle (Sub Worksheet_Change) ... le code s'exécutera donc automatiquement à chaque modification du contenu d'une cellule.

En testant If Not Application.Intersect(Target, Range("A1")) Is Nothing Then la procédure ne s'exécutera que si c'est la cellule A1 qui est modifiée. @U.Milité, 14-05-18.

A+

Re

merci tout le monde, U. Milité,stoure et amadeus pour votre aide, ça marche enfin

merci

merci tout le monde [...] ça marche enfin

Elle est pas belle la vie !?


.

@stoure:

Tu pourras aussi utiliser Application. Volatile pour le lancer a l'ouverture de Excel.

je ne pense pas que ce soit nécessaire. Étant lié à la feuille, a mon avis le macro doit pouvoir s'exécuter automatiquement....

... Tu es certain de ce que tu racontes, là

Salut U.Milité!

J'ai mis "je ne pense pas". Si je suis dans l'erreur corrigée moi.

A mon avis, les macros des feuilles et les macros des modules ne fonctionnement pas de la même façon.

Si j'ai dit une bêtise, il faut vite me dire pour que j'edite mon poste pour ne pas embrouiller les autres!!!

Merci!

Si j'ai dit une bêtise, il faut vite me dire

Une petite recherche sur Application.Volatile donne ceci (bon, c'est en Anglais, mais même moi j'ai compris):

Microsoft a écrit :

Marks a user-defined function as volatile. A volatile function must be recalculated whenever calculation occurs in any cells on the worksheet. A nonvolatile function is recalculated only when the input variables change. This method has no effect if it's not inside a user-defined function used to calculate a worksheet cell.

Amadéus n'a pas proposé une fonction personnalisée, mais une procédure.

La procédure proposée par le même Amadéus est une procédure événementielle (Sub Worksheet_Change) ... le code s'exécutera donc automatiquement à chaque modification du contenu d'une cellule.

En testant If Not Application.Intersect(Target, Range("A1")) Is Nothing Then la procédure ne s'exécutera que si c'est la cellule A1 qui est modifiée.

Est-ce plus clair?

En effet, comme l'eau des roches.

Merci @U.Milité.

Je suis un débutant, mais j'aime aidé... Donc je peux souvent passer à côté...

Heureusement que vous etes là pour corriger...

Merci!!!!

re

@U.Milité: j'ai un petit soucis, quand j'insère un graphique et que j'utilise les étiquettes de données, normalement ça doit changer selon la données choisie de la liste déroulante, c'est à dire si j'utilise X, normalement il doit m'afficher la donnée en FOB sur le graphique, or sur le grahique la mise en forme de l'étiquette ne change pas et quelque soit la valeur (X ou Y ou Z) c'est toujours en format CFR

merci

Rechercher des sujets similaires à "mise forme personnalisee conditionnelle"