Problème EXCEL VBA
Résolu
Dany Dan
Messages postés
9
Statut
Membre
-
Dany Dan Messages postés 9 Statut Membre -
Dany Dan Messages postés 9 Statut Membre -
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
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:
- Problème EXCEL VBA
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
8 réponses
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 ...
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 ...
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+
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+
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+
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+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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..
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..