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

Macro: probleme redaction mise en forme conditionelle

  • Initiateur de la discussion Initiateur de la discussion sim
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sim

XLDnaute Occasionnel
Bonjour a toutes et a tous!

Ce code a pour but de dire:
Dans la zone selectionne
Est ce que la valeur est numerique et compris entre 0.001 et 0.999
Oui alors format pourcentage
Valeur pas numerique, alors format "general"
Une fois les format de cellule appliques alignement a droite..

Il y a certainement quelquechose qui m'echappe, alors peut etre qu'a plusieurs la solution pointera le bou de son nez 🙂)

Code:
With .Offset(1, 2).Resize(.Rows.Count - 1, 1)
                                .FormatConditions.Delete
                            If .IsNumeric = True Then
                                .FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
                                    Formula1:="0,001", Formula2:="0.999"
                                .FormatConditions(1).NumerFormat = "0%"
                            Else
                            If .IsNumeric = False Then
                                .FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
                                    Formula1:="0.001", Formula2:="100"
                                .FormatConditions(2).NumberFormat = "General"
                            End If
                                .HorizontalAlignment = xlHAlignRight
                        End With

Si je suis sur la mauvaise voie ou vous voyer une autre technique, n'hesitez pas.

Le .Offset(1, 2).Resize(.Rows.Count - 1, 1), me permet de selectionner la colonne a traiter.

Merci d'avance pour votre aide et vos conseils.

Bien Cordialement

Sim
 
Re : Macro: probleme redaction mise en forme conditionelle

Bonjour sim,

Avant de te lancer dans ta macro, essaie de faire "normalement" une MFC sur une cellule: as-tu la possibilité de modifier le format des nombres dans la MFC? Si pas, il n'y a aucune raison que ça fonctionne par macro! Il faut donc, à ma connaissance, trouver une autre solution ... si tu nous expliquais ce que tu souhaites faire (avec un petit extrait de fichier en prime) ??
 
Re : Macro: probleme redaction mise en forme conditionelle

Bonjour Modeste, le forum!!

Merci pour ta reponse.

J'essaye toujours de mettre un petit exemple mais ce que je voudrais mettre en forme et le resultat d'une multitude de macro, ce qui me prendrais bcp de temps a refaire dans un exemple simplifier et asses leger pour le mettre ici sur le forum.

J'ai donc fait ce que tu m'as dit, j'ai essayer de faire une MFC a la main, et oui aucunes restrictions..

Pour te donner un peu plus de precision et de sens :S!! a ma demande voici quelques explication

En fait j'ai une feuille qui constitue un rapport evolutif, elle evolue en fonction d'un pays.
Sur cette feuille on trouve la copie du resultat de 5 TCD.
Ici il s'agit d'un tcd en particulier, ou plutot du resultat de sa copie.
Dans mon code, chaque zone representant cette copie est identifiee de la facon suivante

Case i pour i = 1 to 5

Ici on est dans Case 5.
Dans la colonne designee, j'ai deux type de valeur soit entre 0.001 et 0.999 qui sont en fait des pourcentage
et des valeur du type USD 1, ou encore USD 0.65 donc alphanumerique.

Voici un exemple pour qui fonctionne parfaitement pour une mise en forme de bordure et quelque autre detail. Je suis obliger d'utiliser le offset resize pour garder une coherence general de mon code

Code:
                    Case 3    'flows
                        .Font.Name = "Arial Narrow"
                        .Font.Size = 9
                        'on décale de 3 et retaille à 3 colonnes de largeur
                        With .Offset(, 3).Resize(, 4)
                            .Rows(1).Interior.ColorIndex = COLOR_FILL
                            .BorderAround LineStyle:=xlContinuous, Weight:=xlThin, ColorIndex:=1
                            .Borders(xlInsideVertical).LineStyle = xlNone
                            If .Rows.Count > 1 Then .Borders(xlInsideHorizontal).LineStyle = xlThin
                        End With

Ca ca marche tres bien, donc je voudrais sous le meme "format", ou stucture...faire ce dont je parlais dans mon premier post...

Penses tu que cela soit possible, et encore desole de ne pas pouvoir mettre d'exemple, je sais que ca rend les choses bcp plus difficil pour vous :S!

Bien COrdialement

Sim
 
Re : Macro: probleme redaction mise en forme conditionelle

Re-bonjour,

j'ai essayer de faire une MFC a la main, et oui aucunes restrictions
Ce que tu me dis là, c'est que tu peux, dans une MFC, appliquer un format pourcentage!? Ben moi, non! 😕

Ci-dessous un bout de code qui permettrait (en colonne B) d'appliquer le format % à toutes les cellules dont la valeur serait inférieure à 1
VB:
Sub pourcent()
For Each c In Range("B2:B" & Range("B65536").End(xlUp).Row)
    If c < 1 Then c.NumberFormat = "0.00%"
Next c
End Sub
... à toi de voir si tu peux en faire quelque chose
 
Re : Macro: probleme redaction mise en forme conditionelle

Modeste, le forum,

J'ai cru que ca avait marche en faisant une petite formule avec si(estnum(D😀),(D😀)*100,(D😀))
Evidemment ca ne fonctionne pas!!!! Et puis meme si ca avat marche ca n'aurait pas eu le resultat escompter.

Merci pour le petit bou de code je vais voir si je peux l'adapter ou non, dans tout les cas je reviens te dire.

Merci 🙂

Sim
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
901
Réponses
10
Affichages
840
Réponses
13
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…