Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres MFC si 3 chiffres après la virgule

Dimitry

XLDnaute Nouveau
Bonjour le forum,

J'ai pour but de cacher des valeurs à l'impression (prix unitaire et totaux) tout restant visible pour le rédacteur.
Plusieurs solutions ont été étudié et je pense que le plus adapté serait de créer une macro qui activerait/désactiverait une mise en forme conditionnelle.

Les prix unitaire et Montants seraient avec 3 chiffres après la virgule (via format de cellule)
Et la macro activerait une MFC (texte blanc) pour les valeurs qui possèdent 3 chiffres après la virgule,
Les sous totaux seraient avec deux chiffres après la virgule dans le but de rester visible à l'impression

Dans un premier temps j'ai cherché à créer la MFC, J'ai tenté avec les formules "nbcar"; "mod" mais je n'y parviens pas.
Une fois cette MFC au point, je souhaiterai l'activer/ désactiver avec une macro.

Ci-joint une feuille de calcul exemple,
N'hésitez pas si mon explication n'est pas claire,
Excel2007

Si quelqu'un a une solution ce serait génial,

Merci d'avance !

Dimitry
 

Pièces jointes

  • Fiche excel exemple.xls
    122 KB · Affichages: 8
C

Compte Supprimé 979

Guest
Bonjour Dimitry,

Si vous faites des devis, le P.U est une donnée obligatoire

Je ne vois donc pas l'intérêt à part être dans l'illégalité
 

Dudu2

XLDnaute Barbatruc
Bonjour @Dimitry, @BrunoM45,

La présupposition d'intention d'illégalité est une accusation plutôt sévère (**) et qui mon avis n'a pas lieu d'être puisque ça n'a strictement aucun sens d'envoyer un devis avec des chiffres partiels. D'ailleurs, en l'occurrence, ça n'a rien à voir avec l'absence ou la présence du PU questionné puisque tout le détail des fournitures est à masquer.

Edit: (**) D'ailleurs je trouve qu'il l'a plutôt bien prise !
Ce n'est pas pour le client qu'on veut faire ça, c'est pour en interne quand ça passe à l'expédition et aux livreurs (sous-traitant),

Rien n'empêche un artisan:
- de ne pas souhaiter détailler les prix des fournitures de sa prestation (ce qui semble être le cas ici)
- de modifier manuellement (si ça vient d'une BDD) son PU, son Montant HT s'il souhaite appliquer des prix sous ou sur-tarifés selon son client.

Par contre, je ne vois pas l'utilité de créer puis supprimer une MFC pour ça.
La mise en couleur des caractères directement suffit à faire l'affaire.
 

Pièces jointes

  • Fiche excel exemple.xlsm
    99.8 KB · Affichages: 9
Dernière édition:

Dudu2

XLDnaute Barbatruc
En fait je viens de réaliser que ça n'a pas tellement d'utilité de placer cette macro sur le fichier en question car la manip doit évidemment pouvoir s'appliquer à tout classeur devis (?) candidat.
Je vais donc faire un classeur indépendant avec la macro capable de traiter tous les classeurs devis (?) candidats.
 

Dimitry

XLDnaute Nouveau
J'ai proposée une macro car ça permettrait de switcher rapidement entre la version "cacher" et la version apparente.
Car la mise en couleur des caractères impose de devoir sélectionner toutes les cases une par une en évitant les sous totaux qui doivent rester visibles.
Puis surtout ce sera plus simple pour les personnes qui sont en charge des devis; elles ne maîtrisent absolument pas excel ^^
 

Dudu2

XLDnaute Barbatruc
Voilà,
J'espère que je n'ai pas trop buggé !
Car la mise en couleur des caractères impose de devoir sélectionner toutes les cases une par une en évitant les sous totaux qui doivent rester visibles.
Je ne comprends pas de quelle sélection imposée tu parles. Y a rien à sélectionner, y a qu'à exécuter la Macro. T'as essayé au moins ?!?!

De toutes façons, que ce soit pour mettre en place une MFC ou pour coloriser des caractères, il y a une chose à laquelle on ne peut pas échapper, c'est la désignation dans la Macro de la plage concernée ! Y a pas de miracle.

Dans le code j'ai désigné la plage concernée comme étant:
VB:
Const PlageChiffres = "F:G"

With WS    'Feuille devis
    Intersect(.UsedRange, .Range(PlageChiffres))
End With

Edit: Et j'ai testé directement les NumberFormat des cellules pour détecter les nombres à 3 décimales.

Tu peux ajuster le constante ou si ce n'est pas toujours pareil, je peux modifier le code pour rechercher les titre "PU" et "Montant HT" à condition que ce soit toujours exactement ces titres précisément.
 

Pièces jointes

  • Masquer Afficher le chiffres à 3 décimales.xlsm
    32.7 KB · Affichages: 5
Dernière édition:

Dimitry

XLDnaute Nouveau
Merci Dudu2,
Ta première macro semble être parfaite!
Je vais éssayé de copier cette macro sur mon fichier original maintenant,

Merci encore!

(pour info sur mon message précédent je n'avais pas vu ton fichier en PJ)
 

Dudu2

XLDnaute Barbatruc
Mais vas-tu copier cette Macro dans tous les devis candidats ?
Ce n'est pas très judicieux. Et lourdingue en terme de manipulation.

Je t'ai fait un classeur indépendant (en post #7) qui précisément sait faire ça sur n'importe quel classeur qui ne contient pas de macro !
 

job75

XLDnaute Barbatruc
Bonsoir Dimitry, Bruno, Dudu2,
J'ai pour but de cacher des valeurs à l'impression
Alors voyez le fichier joint et cette macro :
VB:
Sub Imprimer()
Dim sep$, c As Range
sep = Application.DecimalSeparator
Sheets("Rédaction").Copy 'document auxiliaire
With ActiveSheet
    With .UsedRange
        .Value = .Value 'supprime les formules
        .ClearComments
        For Each c In .Cells
            If c.Text Like "*" & sep & "###*" Then c = ""
        Next
    End With
    .PrintPreview 'pour tester
    '.PrintOut 'pour imprimer
    .Parent.Close False 'ferme le document auxiliaire
End With
End Sub
Edit : chez moi .ClearComments ne sert à rien, on peut l'enlever.

A+
 

Pièces jointes

  • Fiche excel exemple(1).xls
    133 KB · Affichages: 4
Dernière édition:

job75

XLDnaute Barbatruc
Une solution plus simple :
VB:
Sub Imprimer()
Dim sep$, c As Range
sep = Application.DecimalSeparator
With ActiveSheet
    For Each c In .UsedRange
        If c.Text Like "*" & sep & "###*" Then c.Font.Color = c.Interior.Color
    Next
    .PrintPreview 'pour tester
    '.PrintOut 'pour imprimer
    For Each c In .UsedRange
        If c.Text Like "*" & sep & "###*" Then c.Font.ColorIndex = xlAutomatic
    Next
End With
End Sub
 

Pièces jointes

  • Fiche excel exemple(2).xls
    132.5 KB · Affichages: 5
C

Compte Supprimé 979

Guest
Comme d'habitude Dudu2 ramène sa fraise ou il n'y pas lieu

Il ne s'agissait pas de ne pas détailler le PU, mais de le masquer complètement ce qui est interdit
Mais peut-être que vous travaillez vous-même dans l'illégalité mon cher

Ce que je disais était à titre d'information, point... et n'a plus lieu d'être puisque c'est pour de l'interne
 

Dimitry

XLDnaute Nouveau
Je pars toujours du même fichier pour faire tout les devis, donc ça devrait aller,
Je te tiens au courant !
 

Dimitry

XLDnaute Nouveau
Merci Dudu2,

ça fonctionne parfaitement.

Quand je supprime des lignes sur excel ça me fait beuguer le total,
J'ai donc trouver une formule qui semblerait marché mais qui est très longue car il faudrait que répéter cette formule pour les centaines de lignes.

Ci-dessous un exemple de formule pour deux lignes qui fonctionne:
=SOMME(SI(ESTERREUR(G13);0;G13))+SOMME(SI(ESTERREUR(G14);0;G14))

Celle qui ne fonctionne pas (et je ne comprend pas pourquoi)
=SOMME(SI(ESTERREUR(g13:g14);0;g13:g14))

Avez-vous une astuce pour simplifier la première formule?

Merci et bonne journée
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…