If sur Macro Excel

Résolu
hugo10270 -  
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   -
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 !

2 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonsoir,

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

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

If ActiveCell.value = 0 Then
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Comme tu veux, mais ça ne va pas marcher longtemps...
eric
0
hugo10270
 
pk ?
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
hugo10270
 
j'ai juste mis range("C9").Select avant le IF directement dans la macro
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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