If sur Macro Excel

Résolu/Fermé
hugo10270 - 25 janv. 2011 à 20:28
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 26 janv. 2011 à 13:38
Bonjour,
Je crée un tableau excel et j'ai besoin de créer une macro avec la fonction if

Je note la macro ( simplifiée )

Sub sgk()
'
' sgk Macro
'

'

If INTERME = 0 Then
Range("A11:H17").Select
Selection.ClearContents
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
ActiveWindow.SmallScroll Down:=57
Range("B76").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-75
Range("D13").Select
ActiveSheet.Paste
End If

Range("C85").Select

If INTERME = 1 Then
Range("A11:G17").Select
Selection.ClearContents
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
ActiveWindow.SmallScroll Down:=51
Range("A67:G68").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-60
Range("A11:B11").Select
ActiveSheet.Paste
Range("B13").Select
End If

Range("C85").Select

If INTERME = 2 Then
Range("A11:G17").Select
Selection.ClearContents
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
ActiveWindow.SmallScroll Down:=51
Range("A67:G71").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-51
Range("A11:B11").Select
ActiveSheet.Paste
Range("F16").Select
End If

End Sub


INTERME étant le nom de la cellule C85

C85= SI(G70<>0,"2",SI(G67<>0,"1","0"))

J'ai essayé de mettre C85 à la place de INTERME ainsi que Value en lui mettant avant if Range("C85").Select

J'ai essayé en lui faisant copier la valeur de C85 et en lisant la valeur puis en remettant apres la macro le formule...

Mais rien à faire il m'execute toujours comme si c'était à 0 !

Une idée pour lui faire comprendre que la valeur est des fois différente de 0 !
A voir également:

2 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
25 janv. 2011 à 20:51
Bonsoir,

essaie avec if [INTERME] = ...
Si le nom est présent sur plusieurs feuilles précise la feuille avant

eric
0
Merci mais j'ai finalement trouvé un peu par hasard en essayant

If ActiveCell.value = 0 Then
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
25 janv. 2011 à 22:43
Comme tu veux, mais ça ne va pas marcher longtemps...
eric
0
pk ?
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
26 janv. 2011 à 11:04
activecell= cellule active = celle qui est sélectionnée
A moins que tu sois sûr à 100% que ce sera la bonne cellule active lors de l'appel de la macro...
Ton point de départ était une cellule précise.
eric
0
j'ai juste mis range("C9").Select avant le IF directement dans la macro
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
26 janv. 2011 à 13:38
Tu as choisi la plus mauvaise des solutions.
Activer des cellules quand c'est inutile consomme du temps et des ressources.
Tu peux très bien t'en passer en faisant directement If range("C9").value = ou if [C9] = ou if range("nomCellule") = ou if [nomCellule]
Enfin tu fais comme tu veux...
eric
0