Faire tourner une macro sur toutes feuilles !
Polo_windsurf
-
melanie1324 Messages postés 1561 Statut Membre -
melanie1324 Messages postés 1561 Statut Membre -
Bonjour,
Je suis débutant en vba. J'ai fait la macro suivante afin de, quand une cellule est en couleur verte, de prendre la somme de ou des cellules en vert.
Jelui demande de faire tourner la macro sur toutes les feuilles ... c'est ce que la macro fait ... mais à la fin ça bugue!! quelqu'un aurait-il une solution (peut-être vavec sheets.count??)
Merci bcp par avance!!
Paul
Sub Macro1()
'
Dim i As Integer
For i = 7 To 91
If Range("D" & i).Interior.ColorIndex = 4 And Range("E" & i).Interior.ColorIndex = 4 And Range("F" & i).Interior.ColorIndex = 4 Then
Range("q" & i).Value = "xxx"
ElseIf Range("D" & i).Interior.ColorIndex = 4 And Range("E" & i).Interior.ColorIndex = 4 Then
Range("q" & i).Value = "xx"
ElseIf Range("D" & i).Interior.ColorIndex = 4 Then
Range("q" & i).Value = "x"
ElseIf Range("D" & i).Interior.ColorIndex <> 4 Then
Range("r" & i).Value = ""
End If
Next i
'permets d'écrire la formule à gauche de "xx"'
Range("Q1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Activate
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(IF(RC[-1]=""x"",RC[-14],IF(RC[-1]=""xx"",RC[-14]+RC[-13],IF(RC[-1]=""xxx"",RC[-14]+RC[-13]+RC[-12],"""")))),"""",IF(RC[-1]=""x"",RC[-14],IF(RC[-1]=""xx"",RC[-14]+RC[-13],IF(RC[-1]=""xxx"",RC[-14]+RC[-13]+RC[-12],""""))))"
ActiveCell.Activate
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.SmallScroll Down:=12
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Next.Activate
'permets de réexécuter la macro sur les aures plages
Call Macro1
End Sub
Je suis débutant en vba. J'ai fait la macro suivante afin de, quand une cellule est en couleur verte, de prendre la somme de ou des cellules en vert.
Jelui demande de faire tourner la macro sur toutes les feuilles ... c'est ce que la macro fait ... mais à la fin ça bugue!! quelqu'un aurait-il une solution (peut-être vavec sheets.count??)
Merci bcp par avance!!
Paul
Sub Macro1()
'
Dim i As Integer
For i = 7 To 91
If Range("D" & i).Interior.ColorIndex = 4 And Range("E" & i).Interior.ColorIndex = 4 And Range("F" & i).Interior.ColorIndex = 4 Then
Range("q" & i).Value = "xxx"
ElseIf Range("D" & i).Interior.ColorIndex = 4 And Range("E" & i).Interior.ColorIndex = 4 Then
Range("q" & i).Value = "xx"
ElseIf Range("D" & i).Interior.ColorIndex = 4 Then
Range("q" & i).Value = "x"
ElseIf Range("D" & i).Interior.ColorIndex <> 4 Then
Range("r" & i).Value = ""
End If
Next i
'permets d'écrire la formule à gauche de "xx"'
Range("Q1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Activate
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(IF(RC[-1]=""x"",RC[-14],IF(RC[-1]=""xx"",RC[-14]+RC[-13],IF(RC[-1]=""xxx"",RC[-14]+RC[-13]+RC[-12],"""")))),"""",IF(RC[-1]=""x"",RC[-14],IF(RC[-1]=""xx"",RC[-14]+RC[-13],IF(RC[-1]=""xxx"",RC[-14]+RC[-13]+RC[-12],""""))))"
ActiveCell.Activate
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.SmallScroll Down:=12
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Next.Activate
'permets de réexécuter la macro sur les aures plages
Call Macro1
End Sub
A voir également:
- Faire tourner une macro sur toutes feuilles !
- Comment faire un livret avec des feuilles a4 - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Tourner ecran windows - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment tourner une page sur word - Guide
1 réponse
bonjour,
Sub Macro1()
'
Dim i As Integer
Dim Ws As Worksheet
For Each Ws In Worksheets
For i = 7 To 91
If ws.Range("D" & i).Interior.ColorIndex = 4 And ws.Range("E" & i).Interior.ColorIndex = 4 And ws.Range("F" & i).Interior.ColorIndex = 4 Then
ws.Range("q" & i).Value = "xxx"
Else
If ws.Range("D" & i).Interior.ColorIndex = 4 And ws.Range("E" & i).Interior.ColorIndex = 4 Then
ws.Range("q" & i).Value = "xx"
Else
If ws.Range("D" & i).Interior.ColorIndex = 4 Then
ws.Range("q" & i).Value = "x"
Else
If ws.Range("D" & i).Interior.ColorIndex <> 4 Then
ws.Range("r" & i).Value = ""
End If
Next i
'permets d'écrire la formule à gauche de "xx"'
Ws.select
Range("Q1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Activate
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(IF(RC[-1]=""x"",RC[-14],IF(RC[-1]=""xx"",RC[-14]+RC[-13],IF(RC[-1]=""xxx"",RC[-14]+RC[-13]+RC[-12],"""")))),"""",IF(RC[-1]=""x"",RC[-14],IF(RC[-1]=""xx"",RC[-14]+RC[-13],IF(RC[-1]=""xxx"",RC[-14]+RC[-13]+RC[-12],""""))))"
ActiveCell.Activate
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.SmallScroll Down:=12
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Next Ws
End Sub
Sub Macro1()
'
Dim i As Integer
Dim Ws As Worksheet
For Each Ws In Worksheets
For i = 7 To 91
If ws.Range("D" & i).Interior.ColorIndex = 4 And ws.Range("E" & i).Interior.ColorIndex = 4 And ws.Range("F" & i).Interior.ColorIndex = 4 Then
ws.Range("q" & i).Value = "xxx"
Else
If ws.Range("D" & i).Interior.ColorIndex = 4 And ws.Range("E" & i).Interior.ColorIndex = 4 Then
ws.Range("q" & i).Value = "xx"
Else
If ws.Range("D" & i).Interior.ColorIndex = 4 Then
ws.Range("q" & i).Value = "x"
Else
If ws.Range("D" & i).Interior.ColorIndex <> 4 Then
ws.Range("r" & i).Value = ""
End If
Next i
'permets d'écrire la formule à gauche de "xx"'
Ws.select
Range("Q1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Activate
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(IF(RC[-1]=""x"",RC[-14],IF(RC[-1]=""xx"",RC[-14]+RC[-13],IF(RC[-1]=""xxx"",RC[-14]+RC[-13]+RC[-12],"""")))),"""",IF(RC[-1]=""x"",RC[-14],IF(RC[-1]=""xx"",RC[-14]+RC[-13],IF(RC[-1]=""xxx"",RC[-14]+RC[-13]+RC[-12],""""))))"
ActiveCell.Activate
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.SmallScroll Down:=12
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Next Ws
End Sub