Mise en forme d'une cellule

MOIJPCH Messages postés 20 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 26 février 2010 - 24 févr. 2010 à 15:48
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 26 févr. 2010 à 09:19
bonjour,

je voudrais mettre au format nombre prédéfini des cellules dans la même lignes si dans une case qui ne fait pas partie de ces cellules contient une valeur précise.

si cellule (a1) = "VU"
alors cellules (d1:g1) au format # ##0,00 € \HT;[Rouge]-# ##0,00 € \HT
si non au format # ##0,00 € \TTC;[Rouge]-# ##0,00 € \TTC

merci

JPCH

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 févr. 2010 à 17:33
Bonjour,

Je pense que ta question est : comment mettre un format par code à une cellule.
=>> en utilisant NumpberFormat (voir ce mot dans ton aide en ligne)
Comment modifier la couleur d'une police ? Propriété Font.color
J'espère que ta question (tout de même !) n'était pas comment lire la valeur d'une cellule et comment exprimer une condition !
Pour ton information : tu as ta réponse et ton code en utilisant tout bêtement l'enrefistreur de macro (je viens de le vérifier ...). A toi d'alléger (c'est possible sans grand effort) le code que tu y liras (suppression de ce qui n'est pas nécessaire).
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
MOIJPCH Messages postés 20 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 26 février 2010
26 févr. 2010 à 08:34
Bonjour,

j'ai fait cette macro.
elle ne boucle pas, est ne fonctionne que sur la première ligne

j'espère un peu d'aide

merci a tous

Sub MOI()


Range("a1").Select

Do While ActiveCell.Value <> ""

If ActiveCell.Value = "VU" Then
ActiveCell.Offset(0, 3).Select
Selection.NumberFormat = "#,##0.00 $ \HT;[Red]-#,##0.00 $ \HT"
ActiveCell.Offset(0, 1).Select
Selection.NumberFormat = "#,##0.00 $ \HT;[Red]-#,##0.00 $ \HT"
ActiveCell.Offset(0, 1).Select
Selection.NumberFormat = "#,##0.00 $ \HT;[Red]-#,##0.00 $ \HT"


End If


If ActiveCell.Value = "VP" Then
ActiveCell.Offset(0, 3).Select
Selection.NumberFormat = "#,##0.00 $ \TTC;[Red]-#,##0.00 $ \TTC"
ActiveCell.Offset(0, 1).Select
Selection.NumberFormat = "#,##0.00 $ \TTC;[Red]-#,##0.00 $ \TTC"
ActiveCell.Offset(0, 1).Select
Selection.NumberFormat = "#,##0.00 $ \TTC;[Red]-#,##0.00 $ \TTC"

End If

ActiveCell.Offset(0, 3).Activate
Loop


Range("a1").Select

End Sub



JPCH
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 févr. 2010 à 09:04
Bonjour,
Il est important, avant de continuer, que tu cesses ce jeu de travailler avec des select à tout va !
Il te faut mettre un terme à cette habitude (elle est désastreuse) et travailler par référence à tes cellules.
Voilà ce que devient ton code pour ta première ligne :
 Select Case Range("A1").Value
    Case "VU"
       toto = "#,##0.00 $ \HT;[Red]-#,##0.00 $ \HT"
    Case "VP"
       toto = "#,##0.00 $ \TTC;[Red]-#,##0.00 $ \TTC"
    End Select
    For i = 3 To 5
      Range("A1").Offset(0, i).NumberFormat = "#,##0.00 $ \HT;[Red]-#,##0.00 $ \HT"
    Next
  Range("A1").Select


Analyse-le, comprends-le.
Le reste devient alors évident : le mettre dans une boucle pour traiter tes lignes l'une après l'autre ! (effort minime)

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 févr. 2010 à 09:19
Pardon (écrit à main levée) corriger, bien évidemment :

For i = 3 To 5
      If toto <> "" Then range("A1").Offset(0, i).NumberFormat = toto
    Next


Je voudrais maintenant appeler ton attention (cela t'aidera pour ta boucle sur tes lignes) sur le fait que Range("A1") équivaut (et peut donc être remplacé par) à Cells(1,1).
ta boucle sur tes lignes devrait maintenant devenir évidente ! (ex cells(1,1).offset(j,i) si tu boucle sur tes lignes dans une boucle for j ...)
On va te laisser faire ce petit pas, hein ...
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Rejoignez-nous