[Catégorie modifiée VB6 -> VBA] format cellule avec condition en vba pour excel9 [Résolu]

Signaler
Messages postés
26
Date d'inscription
dimanche 5 février 2012
Statut
Membre
Dernière intervention
4 novembre 2013
-
campagne72
Messages postés
26
Date d'inscription
dimanche 5 février 2012
Statut
Membre
Dernière intervention
4 novembre 2013
-
bonjour à tous et merci pour le temps que vous passez pour nous
voici mon probléme
je voudrai dans les cellules b7:b37 me marquent pour un nombre entier ex (3) 3 kg
ou pour un nombbre avec décimale ex (4.25) 4.250 kg
merci d'avance
je vous donne un exemple
en b7 1.5
en b8 2
en b9 4.25
en b10 3
en b11 5.75
etc

30 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
et arrête avec des trucs comme ;
Selection.NumberFormat = "0 ""Kg""" ' Formatage sans virgule

Quelle selection, hein ? (tu n'as rien sélectionné et n'a rien à sélectionner !)
=>>
macellule.NumberFormat = ....





____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
26
Date d'inscription
dimanche 5 février 2012
Statut
Membre
Dernière intervention
4 novembre 2013

J'ai modifié ma macro avec tes conseilles et cela fonctionne a merveille



Sub Tester2()
Dim macellule As Range
For Each macellule In Range("A36:D36, C38:C55, C57:C62, J38:J61")
If macellule.Value - Fix(macellule.Value) = 0 Then
macellule.NumberFormat = "0 ""Kg""" ' Formatage sans virgule
Else
macellule.NumberFormat = "0.000 ""Kg""" ' Formatage avec virgule
'Exit For
End If
Next
End Sub
je pense avoir trouver pour mettre le code souce de ma macro
sinon dimoi comment on fait
et merci pour tout
Messages postés
26
Date d'inscription
dimanche 5 février 2012
Statut
Membre
Dernière intervention
4 novembre 2013



Sub Tester2()
Dim macellule As Range
For Each macellule In Range("A36:D36, C38:C55, C57:C62, J38:J61")
If macellule.Value - Fix(macellule.Value) = 0 Then
macellule.NumberFormat = "0 ""Kg""" ' Formatage sans virgule
Else
macellule.NumberFormat = "0.000 ""Kg""" ' Formatage avec virgule
'Exit For
End If
Next
End Sub
Messages postés
26
Date d'inscription
dimanche 5 février 2012
Statut
Membre
Dernière intervention
4 novembre 2013

je n'arrive pas a mettre ma macro comme vous
comment faîtes-vous
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Tu regardes le bandeau juste au-dessus ===>> tu en examines chaque icône en te contentant de passer la souris dessus ===>> tu vas (normalement) vite comprendre que l'une d'entre elles est destinée à "présenter" du code ! ===>> tu sélectionnes ton code ===>> tu cliques sur cette icône !

Pendant que tu y es : tu regardes les autre onglets : parmi eux : il y a un onglet "Réponse acceptée". Sa vocation est de faciliter les recherches de solutions aux autres forumeurs. Utilise-le donc (là où la réponse est bonne).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
26
Date d'inscription
dimanche 5 février 2012
Statut
Membre
Dernière intervention
4 novembre 2013

Bonsoir à tous
je voudrais ajouter une dernière condition
si la macro rencontre une cellule inférieur à 1 ex: 0.250 quelle me formate la cellule en 250 g ou .250 g
je vous envoie le code de ma macro
Sub Tester3()
Dim macellule As Range
For Each macellule In Range("A36:D36, C38:C55, C57:C62, J38:J61,E38:E55,L38:L61")
  If macellule.Value - Fix(macellule.Value) = 0 Then
  macellule.NumberFormat = "0 ""Kg"""   ' Formatage sans virgule ex: 1Kg
        'ElseIf macellule.Value = (macellule.Value) < 1 Then
        ' macellule.NumberFormat = ".000 ""g"""   ' Formatage inférieur à 1 ex: 250 g
Else
macellule.NumberFormat = "##"" Kg"".000"" g""" ' Formatage avec virgule" ex: 1 Kg.250 g
End If

merci pour votre réponse
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bonjour,

il t'est toujours possible d'ajouter des expressions conditionnelles, de multiplier par 1000 les valeurs inférieures à 1 et de formater "en grammes avec un "g" et- non plus un "kg", etc ... (tout ce que tu veux, quoi).
Mais avec quel résultat ? ===>> celui d'une colonne comportant des valeurs d'unités différentes (des grammes et des kilogrammes) ! ===>> c.a.d. la porte fermée à toutes les facilités de Excel (totaux, sous-totaux, ...) et l'ouverture de la porte d'une usine à gaz dans d'autres opérations éventuelles (multiplications pour obtenir un prix, calculs de pourcentages, représentations par graphiques, ....par exemple) !
Et tout cela pourquoi ? Pour juste faire "zoli" ?
Allons allons !
Si tu veux rester cohérent ===>> une même colonne doit rester composer des mêmes unités (afin de ne pas y travailler avec des "carottes et des navets"). Tu peux décider que ces unités seront des grammes (mais alors pour toutes les valeurs) ou des kilogrammes (mais alors pour toutes les valeurs également)

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
26
Date d'inscription
dimanche 5 février 2012
Statut
Membre
Dernière intervention
4 novembre 2013

bonsoir ucfoutu
je suis d'accord avec toi
mais j'ai des colonnes qui me donnent un poids
puis des cellules qui me donnent plusieurs grammages suivant le convive
et le responsable de cette équipe m'a demander pour que se soit plus lisible pour lui
que les grammages soient marqués en gramme ex: 100g au lieu de 0.100kg
que les poids en nombre entier ex 1kg au lieu de 1.000kg
et ceux avec une virgule ex 1kg 400 au lieu de 1.400kg
et s'est chose faite
je t'envoie la macro avec la troisième condition
Sub Tester5()
Dim macellule As Range
For Each macellule In Range("A36:D36, C38:C55, C57:C62, J38:J61,E38:E55,L38:L61")
'
If macellule.Value <= 0.999 Then
  macellule.NumberFormat = ".000 ""g"""   ' Formatage en (gramme)         ex:     .250 g
'
  ElseIf macellule.Value - Fix(macellule.Value) = 0 Then
  macellule.NumberFormat = "0 "" Kg"""   ' Formatage sans virgule         ex:  1 Kg
Else
macellule.NumberFormat = "##"" Kg"".000"" g""" ' Formatage avec virgule    ex: 1 Kg.250 g"
End If
'
Next
End Sub

dit moi si je peux l'améliorer
et merci à tous grace à vous j'ai gagné beaucoup de temps et je suis arrivé au résultat esconté et mon chef vat être heureux
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011

Bonjour à tous,

Campagne72, bienvenue dans le club des sarthois.

Quand tu dis:
mon chef vat être heureux

Je n'en suis pas si sûr.

Voir le dernier message de ucfoutu.
Car, pour un poids de 0.500kg tu affiches .500 g soit 1/2 gramme.
Désolé de te décevoir.

Pour ma part, j'ai essayé de modifier ta formule mais sans succès pour l'instant.
Si on multiplie par 1000, c ok pour 0,250 Kg qui donne bien 250 g, mais 0,750 Kg nous donne 751 g.

Je patauge un peu dans tous ces formats Excel.

A+
Messages postés
26
Date d'inscription
dimanche 5 février 2012
Statut
Membre
Dernière intervention
4 novembre 2013

Bonjour Ucfoutou et gg72
en faite j'ai que certaines cellules que je mais en g pour un rappelle des rations par convives mais ne font pas partie de mes calculs
puis les autres qui font partie de mes totaux celles-çi sont en kg ou en xx kg xxx g
et j'ai modifié ma macro en se sens et celà ne pause aucun problème
voici le code
Dim macellule as Range
For Each macellule In Range("A5:d5, A36:D36")
  If macellule.Value <= 0.999 Then
        macellule = (macellule.Value) * 1000
            macellule.NumberFormat = "0\ \g"   ' Formatage en (gramme)         ex:     250 g
    End If
Next
'
For Each macellule In Range("c7:c24, c26:c31, j7:j30, C38:C55, C57:C62, J38:J61, E38:E55, L38:L61")
  If macellule.Value - Fix(macellule.Value) = 0 Then
  macellule.NumberFormat = "0\ K\g"     ' Formatage sans virgule ex: 1Kg
Else
macellule.NumberFormat = "0,\K\g 000\ \g" ' Formatage avec virgule" ex: 1 Kg.250 g
End If
Next

j'ai essayé avec 0,750kg et j'ai bien 750g en A5:D5,A36:D36
est-ce je peux t'envoyer un exemple de ma feuille excel97
tu verras tout de suite le résultat que je cherchais
et merçi pour tout
pour ma part j'habite à saint mars la brière entre connéré et champagné
si tu passes par là la maison t'ai grande ouverte
1 2