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

campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 18 oct. 2011 à 22:32 - Dernière réponse : campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention
- 1 nov. 2011 à 19:36
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
Afficher la suite 

Votre réponse

30 réponses

Meilleure réponse
campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 22 oct. 2011 à 20:05
3
Merci
merci, je faisais juste le contraire
je cliquais sur code puis je mettais ma macro

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
End If
Next


vous êtes tous formidable et toujours à l'écoute même des débutants
avec vous j'ai fais un grand pas et vous remercie pour tout
un retraité du 72
PS: peut être que ma macro servira à d'autres

Merci campagne72 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de campagne72
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 18 oct. 2011 à 23:41
0
Merci
Salut

Note que tu fais du VBA, pas du VB6 --> Catégorie modifiée
Prêtes-y attention la prochaine fois. Merci.

Je ne comprends pas trop ce que tu herches à faire.
Est-ce le formatage des nombres qui te préoccupe ou bien veux-tu insérer des chiffres dans une série de cellules ?
Dans ce dernier cas, quelle est la suite logique de ces chiffres ? ou, en d'autres termes, comment veux-tu que le programme sache quel chiffre insérer ?
Dans le premier cas, puisque les cellules doivent avoir un format différent selon leur contenu, il faut traiter chaque cellule l'une après l'autre.
-1- Enumérer toutes les cellules d'un Range, ici B7:B37
--> For Each-Next ou For-Next
Ce genre de code se trouve dans n'importe quelle source VBA ou dans un grand nombre de question sur le forum.
-2- Mettre en forme les décimales d'une cellule se retrouve facilement en enregistrant une macro pendant que tu fais l'opération manuellement.
-3- Reste le If.
Là, il faut simplement vérifier si le chiffre a des décimales.
Suffit donc de retrancher la valeur entière du chiffre au chiffre lui même et vérifier si le résultat est 0 ou pas, exemple :
Dim maValeur As Single
maValeur = Range("B7").Offset(0, i).Value
If maValeur - Fix(maValeur) = 0 Then
    ' Formatage sans virgule
Else
    ' Formatage avec virgule
End If
Sachant que la variable 'i' sera l'index de la boucle For-Next dont je parle en -1-

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 19 oct. 2011 à 09:37
0
Merci
Bonjour Jack
c'est le formatage des nombres qui m'intéresse
chaques cellules peuvent trés bien avoir un nombre entier ou un nombre avec décimale
et pour l'instant dans ma macro les cellules sont gérée avec 3 décimales avec
Selection.NumberFormat = "0,000\ K\g"
ce qui est trés bien pour les cellules comportant des décimales
mais pour que ma feuille soit plus lisible au lieu de me mettre 3.000 Kg
que je n'ai plus que 3. Kg avec un
Selection.NumberFormat = "0,\ K\g"
engros
si b7 comptient un chiffre entier prendre le format "0.\ K\g"
sinon prendre le format "0,000\ K\g"
et ainsi de suite pour toutes les autres cellules
merci d'avance
Commenter la réponse de campagne72
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 19 oct. 2011 à 09:49
0
Merci
Ok.
Alors je t'ai fourni la solution dans ma précédente réponse.
Commenter la réponse de cs_Jack
campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 19 oct. 2011 à 11:08
0
Merci
re bonjour
mon formatatage n'est pas correct
pour 1.45 a formater j'ai maintenant 0 001 Kg au lieu de 1.450 Kg
ou pour 1.5 " "" "" 0 002 Kg " "1.500 Kg
ou pour 5 " " 0 005 Kg " " 5 Kg
je vous mets la macro

Sub macro01()
Dim maValeur As Single
Range("B7:B10").Select
maValeur = Range("B7").Offset(0, i).Value
If maValeur - Fix(maValeur) = 0 Then
Selection.NumberFormat = "0\ K\g" ' Formatage sans virgule
Else
Selection.NumberFormat = "0,000\ K\g" ' Formatage avec virgule
Range("A7").Select
End If
End Sub
avez-vous une solution
un grand merci pour ta patence
Commenter la réponse de campagne72
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 oct. 2011 à 11:18
0
Merci
Ce sont tes "0" qui ne sont pas bons !
Exemple :
Selection.NumberFormat = "0,000\ K\g" ' Formatage avec virgule
est à transformer ainsi :
Selection.NumberFormat = "#0,#00\ K\g"



____________________
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
Commenter la réponse de ucfoutu
campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 19 oct. 2011 à 11:43
0
Merci
merci pour ta réponse
maintenant je n'ai plus les 0 avec Selection.NumberFormat = "#,###\ K\g"
mais mon problème c'est qu'il arrondi mes chiffres
ex 1.4 est formaté en 1 KG ou 1.5 en 2Kg
comment éviter les arrondis
merci de votre réponse
Commenter la réponse de campagne72
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 oct. 2011 à 11:51
0
Merci
1) je t'ai montré :
"#0,#00\ K\g"

et tu as utilisé :
"#,###\ K\g" 


2 si, malgré cette utilisation, tu as encore un problème chez toi (que je n'ai pas en testant sur ma machine), c'est que tu as un autre problème dans ton code, totalement indépendant du formatage lui-même !

____________________
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
Commenter la réponse de ucfoutu
campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 19 oct. 2011 à 12:13
0
Merci
ok
si je prends "#0,#00\ K\g" il me met un 0 puis un espace puis 2éme 0 devant mon chiffre
ex 0 01 Kg
c'est pour cela que j'ai mis que des "#" et mantenant j'ai bien 1 Kg pour les chiffre entier c'est parfait
je te renvois ma macro pour voir dout vient le probléme des arrondis
Sub macro01()
Dim maValeur As Single
Range("B7:B10").Select
maValeur = Range("B7").Offset(0, i).Value
If maValeur - Fix(maValeur) = 0 Then
Selection.NumberFormat = "0,\ K\g" ' Formatage sans virgule
Else
Selection.NumberFormat = "#0,#00\ K\g" ' Formatage avec virgule
Range("A7").Select
End If
End Sub
merci pour tout
Commenter la réponse de campagne72
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 19 oct. 2011 à 12:25
0
Merci
Tu as oublié la boucle définissant le 'i'
Voir le point -1- de ma première réponse.
Lis complètement les réponses qu'on te fait.

De plus, si tu pointes (par la boucle) une cellule avec l'Offset sur 'i' et que tu appliques le formatage à une autre cellule, Selection, ça ne sert à rien.
Il faut comprendre un minimum ce que tu fais : Regarde dans l'aide, fais des tests dans un coin, mais mettre bout à bout du code ne suffira pas.
Commenter la réponse de cs_Jack
campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 19 oct. 2011 à 14:20
0
Merci
merci jack de m'avoir répondu
mais en VBA je n'y connais pas grand chose
peut-tu m'écrire la boucle a faire pour que cela fonctionne corectement
je te remerci par avance et merci pour le temps que tu me consacre
Commenter la réponse de campagne72
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 19 oct. 2011 à 23:41
0
Merci
Code qui se trouve dans n'importe quelle source VBA du site, je t'assure. Il suffit de chercher et d'analyser ce qui se passe.
Je t'ai donné les mots clé "For Each-Next" et "For-Next" : as-tu regarder dans l'aide, tester les exemples ?
Dim i As Integer
For i = 0 To 9
   MsgBox Range("B7").Offset(0, i).Adddress & " = " & _
          Range("B7").Offset(0, i).Value
Next i
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 19 oct. 2011 à 23:41
0
Merci
Un "d" de trop, à Address
Commenter la réponse de cs_Jack
campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 21 oct. 2011 à 14:12
0
Merci
bonjour Jack et merci de m'avoir répondu
je te joints la macro que j'ai modifiée
maintenant il ne reconnait que la cellule b7 et met bien le format cellule suivant le nombre
mais le msgbox vat de "B7" à "C7", "D7"
au lieu de "B7", "B8","B9" etc
a tu une solution
peut-t-on supprimer la msgbox pour que la macro face le changement de format automatiquement
merci pour tout
Sub macro02()
Dim maValeur As Single
Dim i As Integer
maValeur = Range("B7").Offset(0, i).Value

For i = 0 To 31

If maValeur - Fix(maValeur) = 0 Then
Selection.NumberFormat = "0 ""Kg""" ' Formatage sans virgule
Else
Selection.NumberFormat = "0.000 ""Kg""" ' Formatage avec virgule

End If
MsgBox Range("B7").Offset(0, i).Address & " = " & _
Range("B7").Offset(0, i).Value
Next i
'Range("A7").Select
End Sub
Commenter la réponse de campagne72
cs_GG72 94 Messages postés vendredi 13 mai 2005Date d'inscription 30 octobre 2011 Dernière intervention - 21 oct. 2011 à 16:05
0
Merci
Bonjour,

Voilà ce que je te propose:
Sub eee()

Dim maValeur As Single
Dim i As Integer

For i = 7 To 38
  maValeur = Cells(i, 2).Value
  If maValeur - Fix(maValeur) = 0 Then
    Cells(i, 2).NumberFormat = "0 ""Kg""" ' Formatage sans virgule
  Else
    Cells(i, 2).NumberFormat = "0.000 ""Kg""" ' Formatage avec virgule
  End If
Next i

End Sub


Pour ton info:

Dans ton code, il fallait insérer
maValeur = Range("B7").Offset(0, i).Value

à l'intérieur de ta boucle For i (sinon ton formatage se limite à ton range "B7")

et remplacer Offset(0, i) par Offset(i, 0) pour un traitement par colonne au lieu d'un traitement par ligne.

Cordialement.
Commenter la réponse de cs_GG72
campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 21 oct. 2011 à 18:29
0
Merci
bonjour GG72
Bravo cela marche à merveille
et un grand merci à tous pour votre dévouement
campagne72
Commenter la réponse de campagne72
campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 22 oct. 2011 à 11:24
0
Merci
Bonjour a tous
maintenant sur une autre feuille toujours avec mes formats vellules je voudrais changer les cellule "A36:D36", "C58:C55","C57:C52", "J38:J61"
je pense qu'avec un For each cela doit être possible mais je ne sais pas le faire
je vous remerci d'avance.
Commenter la réponse de campagne72
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 oct. 2011 à 11:42
0
Merci
Construit donc une plage avec la méthode Union (ouvre ton aide en ligne sur ce mot), puis travaille dans une boucle For Each.


____________________
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
Commenter la réponse de ucfoutu
campagne72 26 Messages postés dimanche 5 février 2012Date d'inscription 4 novembre 2013 Dernière intervention - 22 oct. 2011 à 18:23
0
Merci
bonjour a tous
voici le code que j'ai écris mais cela ne marche pas
Sub Tester1()
Dim maValeur

For Each maValeur In Range("A36:D36, C38:C55, C57:C62, J38:J61")
If maValeur - Fix(maValeur) = 0 Then
Selection.NumberFormat = "0 ""Kg""" ' Formatage sans virgule
Else
Selection.NumberFormat = "0.000 ""Kg""" ' Formatage avec virgule
'Exit For
End If
Next maValeur

End Sub
avez-vous une solution
merci d'avance
Campagne 72
Commenter la réponse de campagne72
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 oct. 2011 à 18:33
0
Merci
Mais qu'est-ce que tu "fabriques", à mélanger ainsi les choses !

Voilà le principe :
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
      ....
  else
     ....
  end if
Next

Et fais comme GG72 et moi-même, s'il te plait ! (codse indenté et prészenté entre balises code).


____________________
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
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

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