Problème EXCEL VBA

Résolu
Bonjour,

Je travaille actuellement sur une macro et j'ai un petit soucis

Voila ma macro est censée fonctionner pour plusieurs classeurs, cependant, les lignes qui correspondent à des sujets sont variables (entre 10 et 35)

J'ai un score à calculer dans une colonne, une fois le score calculé je l'applique au maximum de lignes afin qu'un sujet d'un service ne soit pas laisser à part. Cependant lorsque le service compte par exemple 20 personnes, il y a 15 lignes de mon tableau ou le resultat de mon calcul pour une colonne definie donne le resultat 0

J'aurais souhaiter savoir comment, dans ma macro je pouvais faire pour enlever le 0 et le remplacer par un espace vide ?

J'ai essayer ceci mais ca ne marche pas :

Sub Macro1()

Range ("DY:DY,DZ:DZ,EA:EA").Select
Range("DY1,DZ1,EA1").Activate
Selection.Replace What:="0", Replacement:="ClearContents", LookAt:=xlWhole, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Si quelqu'un pouvait m'aider, je lui en serai reconnaissant

Merci d'avance
Configuration: Windows XP Internet Explorer 7.0
Excel 2007

8 réponses

  1. Bonjour pilas

    Bon, en fait j'ai suivant ton post qui disant de chercher le problème en amont de la macro et au final c'est pas plus mal

    J'ai rajoutéé du coup ceci à ma macro de départ : ActiveWindow.DisplayZeros=False

    Voili voulou

    En tout cas, merci du coup de main

    Bonne continuation
    1. Contributeur
      Tu peux essayer alors de modifier la formule de la somme. Tu peux la simplifier puis inclure le test si c'est égal à 0 mettre "".

      A priori cela donne cela :

      1° somme : ActiveCell.FormulaR1C1 = "=IF(SUM(RC[-112]:RC[-86])=0,"""",SUM(RC[-112]:RC[-86]))"

      2° somme : ActiveCell.FormulaR1C1 = "=IF(SUM(RC[-87]:RC[-68])=0,"""",SUM(RC[-87]:RC[-68]))"

      3° somme : ActiveCell.FormulaR1C1 = "=IF(SUM(RC[-68]:RC[-39])=0,"""",SUM(RC[-68]:RC[-39]))"

      Sauf erreur..
      1. Ok pas vu le post precedent
        Je vais voir ce que je peux faire en amont de mon calcul
        1. Les 0 correspondent aux résultats d'un calcul de type AF1 + AG1 + AH1 + AI1 + ... + ... etc

          Les lignes sont au nombre de 36 maximum mais le nombre d'individus est variable selon les services (25 ... 18 ... 13 ...) c'est pourquoi il y a un certain nombre de zéro.

          Par contre, oui il y a une macro qui est executée avant et dnt voici le code :

          Sub Macro1()
          Range("M:M,O:O,Q:Q,R:R,T:T,U:U,W:W,X:X,Z:Z,AA:AA,AC:AC,AD:AD,AF:AF,AG:AG,AI:AI,AJ:AJ,AL:AL,AM:AM,AO:AO,AP:AP,CA:CA,CK:CK,CL:CL,CY:CY,CZ:CZ,DI:DI,DR:DR,DS:DS,DT:DT").Select
          Range("M1,O1,Q1,R1,T1,U1,W1,X1,Z1,AA1,AC1,AD1,AF1,AG1,AI1,AJ1,AL1,AM1,AO1,AP1,CA1,CK1,CL1,CY1,CZ1,DI1,DR1,DS1,DT1").Activate
          Selection.Replace What:="9", Replacement:="0", LookAt:=xlWhole, _
          SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
          ReplaceFormat:=False

          Range("DY1").Select
          ActiveWindow.SmallScroll ToRight:=8
          Selection.NumberFormat = "0"
          ActiveCell.FormulaR1C1 = "Calcul Barème TMS"
          Columns("DY:DY").Select
          Selection.ColumnWidth = 20.57
          Range("DY2").Select
          ActiveCell.FormulaR1C1 = _
          "=SUM(RC[-112],RC[-111],RC[-110],RC[-109],RC[-108],RC[-107],RC[-106],RC[-105],RC[-104],RC[-103],RC[-102],RC[-101],RC[-100],RC[-99],RC[-98],RC[-97],RC[-96],RC[-95],RC[-94],RC[-93],RC[-92],RC[-91],RC[-90],RC[-89],RC[-88],RC[-87],RC[-86])"
          Range("DY2").Select
          Selection.AutoFill Destination:=Range("DY2:DY36"), Type:=xlFillDefault
          Range("DY2:DY36").Select

          Range("DZ1").Select
          Selection.NumberFormat = "0"
          ActiveCell.FormulaR1C1 = "Calcul Barème Stress"
          Columns("DZ:DZ").Select
          Selection.ColumnWidth = 20.57
          Range("DZ2").Select
          ActiveCell.FormulaR1C1 = _
          "=SUM(RC[-87],RC[-86],RC[-85],RC[-84],RC[-83],RC[-82],RC[-81],RC[-80],RC[-79],RC[-78],RC[-77],RC[-76],RC[-75],RC[-74],RC[-73],RC[-72],RC[-71],RC[-70],RC[-69],RC[-68])"
          Range("DZ2").Select
          Selection.AutoFill Destination:=Range("DZ2:DZ36"), Type:=xlFillDefault
          Range("DZ2:DZ36").Select

          Range("EA1").Select
          ActiveCell.FormulaR1C1 = "Facteurs Psychosociaux"
          Columns("EA:EA").Select
          Selection.ColumnWidth = 20.57
          Range("EA2").Select
          ActiveCell.FormulaR1C1 = _
          "=SUM(RC[-68],RC[-67],RC[-66],RC[-65],RC[-64],RC[-63],RC[-62],RC[-61],RC[-60],RC[-59],RC[-58],RC[-57],RC[-56],RC[-55],RC[-54],RC[-53],RC[-52],RC[-51],RC[-50],RC[-49],RC[-48],RC[-47],RC[-46],RC[-45],RC[-44],RC[-43],RC[-42],RC[-41],RC[-40],RC[-39])"
          Range("EA2").Select
          Selection.AutoFill Destination:=Range("EA2:EA36"), Type:=xlFillDefault
          Range("EA2:EA36").Select
          End Sub

          Par contre, je suis obligé d'utiliser la macro

          N'existe t-il pas une solution pour pourvoir lancer la macro et faire en sorte que celle ci retire les 0 dans les colonnes spécifiés ?
          Ou sinon un autre moyen que je ne connaitrais pas eventuellement ?

          Merci d'avance
          1. Contributeur
            Oui bon désolé mais il suffisait que je lise mieux ton premier post !
            Il s'agit du résultat d'un calcul donc même si tu mets "" par macro le calcul donne toujours 0.
            Il faut agir en amont et modifier la formule de calcul...

            A+
            1. Contributeur
              Bonjour,

              Je ne comprends pas, je fais le test chez moi et ça marche. Es-tu certain qu'il s'agit bien de 0 ou qu'il n'y a pas un formatage particulier ou bien encore qu'il n' y a pas une macro qui s'execute (du style Worksheet_Change) ?

              Sinon, je n'ai pas d'idée..

              EDIT : Si assure-toi qu'il ne s'agit pas du résultat d'un calcul qui donne 0 car alors il faut modifier la formule qui fait le calcul.

              A+
              1. Bonjou pilas

                Négatif, ca ne marche pas en ecrivant ainsi :

                Sub Macro1()

                Range ("DY:DY,DZ:DZ,EA:EA").Select
                Range("DY1,DZ1,EA1").Activate
                Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole, _
                SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False

                End Sub

                J'ai essayer à travers les options qu'offre EXCEL mais impossible également ...
                1. Contributeur
                  Bonjour,

                  A priori il suffit de modifier le replace en mettant : Replacement:=""

                  A+