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
| Sub Donnees()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim Source As String
Dim Cible As String
Dim Col As Long 'col pour la commune
Dim Col2 As Long 'col pour la superficie des constructions
Dim Col3 As Long 'col pour le type en habitation
Dim Col4 As Long 'col pour le type de construction (maison ou appartement)
Dim Col5 As Long 'col pour le nombre de nouvelles contructions
Dim Col6 As Long 'col pour l'année de construction
Dim Col7 As Long 'col pour le nombre de nouvelles maisons
Dim Col8 As Long 'col pour le nombre de nouveaux appartements
Dim Ligne As Long
Dim Ligne2 As Long
Dim DernLigne As Long
Dim DernLigne2 As Long
Dim DernCol As Long
Dim SomSup As String
Dim SomNewConsM As String
Dim SomNewConsA As String
Dim SomNewConsMi As String
Dim SomNewConsDep As String
Dim SomNewConsAct As String
Dim SomSupNewCons As String
Source = "source"
Cible = "tableau"
DernLigne = Sheets(Source).Range("A" & Rows.Count).End(xlUp).Row
DernLigne2 = Sheets(Cible).Range("A" & Rows.Count).End(xlUp).Row
DernCol = Sheets(Source).Cells(1, Columns.Count).End(xlToLeft).Column
Ligne2 = 3
For Col = 1 To DernCol
If Sheets(Source).Cells(1, Col).Value = "idcomtxt" Then Exit For 'trouve la colonne de la commune
Next
For Col2 = 1 To DernCol
If Sheets(Source).Cells(1, Col2).Value = "dcntpa" Then Exit For 'trouve la colonne de la superficie
Next
For Col3 = 1 To DernCol
If Sheets(Source).Cells(1, Col3).Value = "tpevdom_s" Then Exit For 'trouve le type de construction en habitation
Next
For Col4 = 1 To DernCol
If Sheets(Source).Cells(1, Col4).Value = "tlocdomin" Then Exit For 'trouve la colonne du type de construction en appart ou maison ou mixte ou dépendance ou activité
Next
For Col5 = 1 To DernCol
If Sheets(Source).Cells(1, Col5).Value = "nlochabit" Then Exit For 'trouve la colonne nombre de construction nouvelles
Next
For Col6 = 1 To DernCol
If Sheets(Source).Cells(1, Col6).Value = "jannatmin" Then Exit For 'trouve la colonne de la date de construction
Next
For Col7 = 1 To DernCol
If Sheets(Source).Cells(1, Col7).Value = "nlocmaison" Then Exit For 'trouve la colonne de nombre de maisons nouvelles
Next
For Col8 = 1 To DernCol
If Sheets(Source).Cells(1, Col8).Value = "nlocappt" Then Exit For 'trouve la colonne de nombre d'appartements nouveaux
Next
'MsgBox ("Col1 " & Col & " ; Col2 " & Col2 & " ; Col3 " & Col3 & " ; Col4 " & Col4 & " ; Col5 " & Col5 & " ; Col6 " & Col6)
For Ligne2 = 3 To DernLigne2
SomSup = 0
SomNewConsM = 0
SomNewConsA = 0
SomNewConsMi = 0
SomNewConsDep = 0
SomNewConsAct = 0
SomSupNewCons = 0
For Ligne = 2 To DernLigne
If Sheets(Cible).Cells(Ligne2, 1) = Sheets(Source).Cells(Ligne, Col) Then 'correspondance des communes
If Sheets(Source).Cells(Ligne, Col5) = "" Then 'on calcule nlochabit en faisant la somme de nlocmaison + nlocappt
Sheets(Source).Cells(Ligne, Col5) = Sheets(Source).Cells(Ligne, Col7).Value + Sheets(Source).Cells(Ligne, Col8).Value
End If
If Sheets(Source).Cells(Ligne, Col5) > 0 Then 'calcul du SomSup
If Sheets(Source).Cells(Ligne, Col3) = "HABITATION" Then
If Sheets(Source).Cells(Ligne, Col2) < 10000 Then
SomSup = SomSup + Sheets(Source).Cells(Ligne, Col2).Value
End If
End If
End If
If Sheets(Source).Cells(Ligne, Col6) >= 1999 Then 'calcul des somnewcons
If Sheets(Source).Cells(Ligne, Col3) = "HABITATION" Then
If Sheets(Source).Cells(Ligne, Col4) = "MAISON" Then
SomNewConsM = SomNewConsM + 1
SomSupNewCons = SomSupNewCons + Sheets(Source).Cells(Ligne, Col2).Value
End If
If Sheets(Source).Cells(Ligne, Col4) = "APPARTEMENT" Then
SomNewConsA = SomNewConsA + 1
SomSupNewCons = SomSupNewCons + Sheets(Source).Cells(Ligne, Col2).Value
End If
If Sheets(Source).Cells(Ligne, Col4) = "MIXTE" Then
SomNewConsMi = SomNewConsMi + 1
SomSupNewCons = SomSupNewCons + Sheets(Source).Cells(Ligne, Col2).Value
End If
If Sheets(Source).Cells(Ligne, Col4) = "DEPENDANCE" Then
SomNewConsDep = SomNewConsDep + 1
SomSupNewCons = SomSupNewCons + Sheets(Source).Cells(Ligne, Col2).Value
End If
If Sheets(Source).Cells(Ligne, Col4) = "ACTIVITE" Then
SomNewConsAct = SomNewConsAct + 1
SomSupNewCons = SomSupNewCons + Sheets(Source).Cells(Ligne, Col2).Value
End If
End If
End If
End If
Next
Sheets(Cible).Cells(Ligne2, 2) = SomSup 'place les valeurs calculées dans le tableau
Sheets(Cible).Cells(Ligne2, 3) = SomNewConsM
Sheets(Cible).Cells(Ligne2, 4) = SomNewConsA
Sheets(Cible).Cells(Ligne2, 5) = SomNewConsMi
Sheets(Cible).Cells(Ligne2, 6) = SomNewConsDep
Sheets(Cible).Cells(Ligne2, 7) = SomNewConsAct
Sheets(Cible).Cells(Ligne2, 8) = SomSupNewCons
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub |