1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
| Sub Modifmercatog()
Dim wbS As Workbook, wbModif As Workbook
Dim shS As Worksheet, shM As Worksheet, shD As Worksheet
Dim RModVal As String, N_Client As String, FichModif As String
Dim RMod As Range, Rdp1 As String, Plag As Range, Rnp As Range
Dim np As Integer, x As Integer, compt As Integer, lA As Integer
Dim Rcas1 As Range, Rcas2 As Range, Rcas3 As Range, Rcas4 As Range
Dim cas1 As String, cas2 As String, cas3 As String, cas4 As String
Dim lht As Integer, lAp As Integer
Dim Rht As Range, Plage As Range
Dim ht As Single
Set wbS = Workbooks.Open("Z:\Gestion entreprise\VBA\Atest\CC2011T.xlsx")
Set shS = wbS.Worksheets("Pilote1")
shS.Activate
On Error Resume Next
Set RMod = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
On Error GoTo 0
If Not RMod Is Nothing Then
RMod.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
RModVal = RMod(1, 1).Value
N_Client = shS.Cells(RMod.Row, 8).Value
FichModif = RModVal & " " & N_Client & ".xls"
'Ici fonction qui permet de vérifier si FichModif est ouvert dans la même instance Excel
If Existe(FichModif) Then
Set wbModif = Workbooks(FichModif)
Set shM = wbModif.Worksheets("Devis")
Set shD = ThisWorkbook.Worksheets("Devis")
'---------------------------compter le nombre de ligne entre A24 et A(Pied de page)
shD.Unprotect
Set Plag = shM.Range("A24:A500")
For Each Rnp In Plag
If Rnp.Value = "Pieddepage" Then
np = Rnp.Row
x = np - 23
End If
Next
'----------------------------insérer les lignes dans shD
If x > 33 Then
For compt = 1 To x - 33
shD.Activate
shD.Range(Cells(24, 1), Cells(24, 14)).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("U22:AH22").Copy shD.Cells(24, 1)
Next
End If
'-----------Copier entre la ligne 23 et la ligne np les cellules colonne A de shM dans shD
shM.Activate
shM.Range(Cells(24, 1), Cells(np - 1, 1)).Copy shD.Range("A24")
'---------- Appeler les macros en fonctions des valeurs colonne A de shD
shD.Activate
' balayage de la colonne A de shD
For lA = 24 To np - 1
'Valeur des différents cas à chercher
cas1 = "Blanc"
cas2 = "xxxx0"
cas3 = "lnoir"
'-----------------Chercher la valeur dans la feuille shD, en colonne A
Set Rcas1 = shD.Columns(1).Find(What:=cas1, LookAt:=xlPart)
Set Rcas2 = shD.Columns(1).Find(What:=cas2, LookAt:=xlPart)
Set Rcas3 = shD.Columns(1).Find(What:=cas3, LookAt:=xlPart)
'---------------Action à effectuer selon valeur
If shD.Cells(lA, 1).Value = Rcas1 Then
shD.Range("U21:AG21").Copy Cells(lA, 1)
End If
If shD.Cells(lA, 1).Value = Rcas2 Then
shD.Range("U24:AG24").Copy Cells(lA, 1)
End If
If shD.Cells(lA, 1).Value = Rcas3 Then
shD.Range("U20:AG20").Copy Cells(lA, 1)
End If
Next lA
'-----------Copier de la ligne 24 et la ligne np-1 la plage de cellules colonne H (détails)
shM.Activate
shM.Range(Cells(24, 8), Cells(np - 1, 8)).Copy shD.Cells(24, 8)
'-----------Copier entre la ligne 24 et la ligne (np-1) la plage de cellules colonne C à G
shM.Range(Cells(24, 3), Cells(np - 1, 7)).Copy shD.Cells(24, 3)
shD.Activate
'-----------valeur du cas à rechercher pour remise professionnelle
For lAp = 24 To np
cas4 = "Remise professionnelle"
'-----------chercher si remise professionnelle
Set Rcas4 = shD.Columns(8).Find(What:=cas4, LookAt:=xlPart)
If shD.Cells(lAp, 8).Value = Rcas4 Then
shM.Activate
shM.Cells(lAp, 13).Copy shD.Cells(lAp, 13)
End If
Next lAp
'---------------------copier le nom de chantier et la taxe ctmnc
shM.Activate
shM.Range("H21").Copy shD.Range("H21")
shM.Range("O19").Copy shD.Range("O19")
'---------------------voir pour les sauvegardes
shD.Activate
shD.Protect
Set wbModif = Nothing
Set shM = Nothing
Set shD = Nothing
End If
End If
Set RMod = Nothing
Set shS = Nothing
wbS.Close False
Set wbS = Nothing
End Sub |