archi57 | Bsr,
voilà j'ai une macro (D2_A) dans le module 1 et une autre (D2_X) dans le module 2.
La question est: comment faire cohabiter ces deux macros dans un seul module ??
Merci
bye
Macro (D2_A):
Citation :
Option Explicit
Public Const WSBase As String = "Feuille D2"
Sub D2_A()
Dim Rangebase As String
Dim RangeCount As String
Dim RangeCopy As String
Dim RowCopy As Integer
Dim i As Byte
For i = 1 To 4
Select Case i
Case 1
Rangebase = "C2"
RangeCount = "D5:D8"
RangeCopy = "B5"
RowCopy = 4
Case 2
Rangebase = "C10"
RangeCount = "D13:D16"
RangeCopy = "B13"
RowCopy = 12
Case 3
Rangebase = "C18"
RangeCount = "D21:D24"
RangeCopy = "B21"
RowCopy = 20
Case 4
Rangebase = "C26"
RangeCount = "D29:D32"
RangeCopy = "B29"
RowCopy = 28
End Select
Equipe Rangebase, RangeCount, RangeCopy, RowCopy
Next i
End Sub
Sub Equipe(Rangebase As String, RangeCount As String, RangeCopy As String, RowCopy As Integer)
Dim Nom As String
Dim Lig1 As Integer, Lig2 As Integer
Dim i As Integer
Application.ScreenUpdating = False
With Sheets(WSBase).Range(Rangebase)
If InStr(1, .Value, " " ) < 1 Then Exit Sub
Nom = Left(.Value, InStr(1, .Value, " " ) + 1) + "."
Nom = Application.WorksheetFunction.Proper(Nom)
End With
With Sheets(Nom)
Lig1 = .Range("A10000" ).End(xlUp).Row
Range(.Range("H" & Lig1 + 1), .Range("H" & Lig1 + 3)).Clear
End With
With Sheets(WSBase)
i = Application.CountA(.Range(RangeCount))
.Range(RangeCopy & ":I" & RowCopy + i).Copy
End With
With Sheets(Nom)
.Range("A65536" ).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormats
.Range("A65536" ).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Range(.Range("A4" ), .Range("H" & Lig1)).Validation.Delete
Lig1 = .Range("A65536" ).End(xlUp).Row
Lig2 = .Range("J65536" ).End(xlUp).Row + 1
.Range("A4:H" & Lig1).Validation.Delete
Range(.Range("A4" ), .Range("H" & Lig1)).Sort Key1:=.Range("A4" ), Order1:=xlAscending
Range(.Range("J" & Lig2 - 1), .Range("M" & Lig2 - 1)).AutoFill _
Destination:=Range(.Range("J" & Lig2 - 1), .Range("M" & Lig1)), Type:=xlFillDefault
End With
Sheets("D2" ).Activate
Range("C5" ).Select
Application.ScreenUpdating = True
End Sub
|
Macro (D2_X):
Citation :
Option Explicit
Public Const WSBase As String = "Feuille D2"
Sub D2_X()
Dim Rangebase As String
Dim RangeCount As String
Dim RangeCopy As String
Dim RowCopy As Integer
Dim i As Byte
For i = 1 To 4
Select Case i
Case 1
Rangebase = "C34"
RangeCount = "D37:D40"
RangeCopy = "B37"
RowCopy = 36
Case 2
Rangebase = "C42"
RangeCount = "D45:D48"
RangeCopy = "B45"
RowCopy = 44
Case 3
Rangebase = "C50"
RangeCount = "D53:D56"
RangeCopy = "B53"
RowCopy = 52
Case 4
Rangebase = "C58"
RangeCount = "D61:D64"
RangeCopy = "B61"
RowCopy = 60
End Select
Equipe Rangebase, RangeCount, RangeCopy, RowCopy
Next i
End Sub
Sub Equipe(Rangebase As String, RangeCount As String, RangeCopy As String, RowCopy As Integer)
Dim Nom As String
Dim Lig1 As Integer, Lig2 As Integer
Dim i As Integer
Application.ScreenUpdating = False
With Sheets(WSBase).Range(Rangebase)
If InStr(1, .Value, " " ) < 1 Then Exit Sub
Nom = Left(.Value, InStr(1, .Value, " " ) + 1) + "."
Nom = Application.WorksheetFunction.Proper(Nom)
End With
With Sheets(Nom)
Lig1 = .Range("A10000" ).End(xlUp).Row
Range(.Range("H" & Lig1 + 1), .Range("H" & Lig1 + 3)).Clear
End With
With Sheets(WSBase)
i = Application.CountA(.Range(RangeCount))
.Range(RangeCopy & ":I" & RowCopy + i).Copy
End With
With Sheets(Nom)
.Range("A65536" ).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormats
.Range("A65536" ).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Range(.Range("A4" ), .Range("H" & Lig1)).Validation.Delete
Lig1 = .Range("A65536" ).End(xlUp).Row
Lig2 = .Range("J65536" ).End(xlUp).Row + 1
.Range("A4:H" & Lig1).Validation.Delete
Range(.Range("A4" ), .Range("H" & Lig1)).Sort Key1:=.Range("A4" ), Order1:=xlAscending
Range(.Range("J" & Lig2 - 1), .Range("M" & Lig2 - 1)).AutoFill _
Destination:=Range(.Range("J" & Lig2 - 1), .Range("M" & Lig1)), Type:=xlFillDefault
End With
Sheets("D2" ).Activate
Range("C38" ).Select
Application.ScreenUpdating = True
End Sub
|
Message édité par archi57 le 06-09-2005 à 13:02:28
|