Problème EXCEL VBA

Résolu/Fermé
Dany Dan Messages postés 7 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 26 mai 2009 - 19 mai 2009 à 11:03
Dany Dan Messages postés 7 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 26 mai 2009 - 25 mai 2009 à 17:12
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
A voir également:

8 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
19 mai 2009 à 18:00
Bonjour,

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

A+
0
Dany Dan Messages postés 7 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 26 mai 2009
20 mai 2009 à 15:31
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 ...
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
20 mai 2009 à 15:41
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+
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
20 mai 2009 à 15:48
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dany Dan Messages postés 7 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 26 mai 2009
20 mai 2009 à 15:54
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
0
Dany Dan Messages postés 7 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 26 mai 2009
20 mai 2009 à 15:55
Ok pas vu le post precedent
Je vais voir ce que je peux faire en amont de mon calcul
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
20 mai 2009 à 16:16
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..
0
Dany Dan Messages postés 7 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 26 mai 2009
25 mai 2009 à 17:12
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
0