If sur Macro Excel
Résolu
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 !
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
-
Merci mais j'ai finalement trouvé un peu par hasard en essayant
If ActiveCell.value = 0 Then-
-
-
-
-
ContributeurTu 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
-
-
ContributeurBonsoir,
essaie avec if [INTERME] = ...
Si le nom est présent sur plusieurs feuilles précise la feuille avant
eric