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 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
| ub genere_creation_produit()
'On Error GoTo errorHandler:
Dim start As Single
Dim finish As Single
Dim LettreVoulue As String
LettreVoulue = TrouveLettreColonne([creation_ou_modif])
Dim produit_a_creer As Variant
Dim modif_descr_reg As Variant
Dim x As Integer
Dim classification As Range
Dim creation As Range
Dim modif_reg As Range
Dim modif_prov As Range
Dim modif_fcg As Range
Dim feuille_creation As Worksheet 'ne peux la setté immédiatement car n'est pas déjà présent
Dim feuille_modif_reg As Worksheet 'ne peux la setté immédiatement car n'est pas déjà présent
Dim feuille_revise As Worksheet
Set feuille_revise = Sheets("tmp-MoulinetteRévisée")
Dim feuille_mandatAValider As Worksheet
Set feuille_mandatAValider = Sheets("R_ItemsPourMandatAValider")
start = Timer
Application.ScreenUpdating = False
'Validation si l'onglet R_ItemsPourMandatAValider est existant
If sheetExists("R_ItemsPourMandatAValider") = False Then
MsgBox "Aucun onglet R_ItemsPourMandatAValider a été trouvé !!!", vbCritical
End If
'validation si l'onglet demande de création existe
If sheetExists("Demande de création") = True And sheetExists("Demande modif reg seulement") = False Then
MsgBox "Onglet Demande de création déjà existant, veuillez le supprimer et re-généré la macro grâce au bouton !!!", vbCritical
Exit Sub
ElseIf sheetExists("Demande de création") = False And sheetExists("Demande modif reg seulement") = True Then
MsgBox "Onglet Demande modif reg seulement déjà existant,veuillez le supprimer et re-généré la macro grâce au bouton !!!", vbCritical
Exit Sub
ElseIf sheetExists("Demande de création") = True And sheetExists("Demande modif reg seulement") = True Then
MsgBox "Onglet Demande de création et demande modif reg seulement sont existantes,veuillez les supprimer et re-généré la macro grâce au bouton !!!", vbCritical
Exit Sub
End If
'validation si il y a des demandes de créations
Set creation = Range("creation_ou_modif").Find("Création", LookAt:=xlWhole)
If creation Is Nothing Then
MsgBox "Aucune création a été trouvé"
Else
'Si il ya des demandes de créations ouvrir le fichier modele de création et copié l'onglet dans le fichier
Workbooks.Open ("N:\DOCUMENTS SUPPORT\LAC\Demande création et modification\Demande de création de produits.xlsm")
Sheets("Feuil1").Copy Before:=ThisWorkbook.Sheets(1)
Workbooks("Demande de création de produits.xlsm").Close
'on le renomme Demande de création
Sheets("Feuil1").Name = "Demande de création"
'on le set afin de pouvoir faire fonctionné la variable
Set feuille_creation = Sheets("Demande de création")
feuille_mandatAValider.Activate
'on mets les données a la bonne endroit
For Each produit_a_creer In feuille_mandatAValider.Range(LettreVoulue & 2, LettreVoulue & LastLignUsedInColumn(LettreVoulue))
x = x + 1
If Cells(x + 1, [creation_ou_modif].Column) = "Création" Then
feuille_mandatAValider.Cells(x + 1, 4).Copy _
feuille_creation.Cells(x + 1, feuille_creation.Range("desc_prov_long").Column)
feuille_mandatAValider.Cells(x + 1, 4).Copy _
feuille_creation.Cells(x + 1, feuille_creation.Range("desc_reg_long").Column)
feuille_mandatAValider.Cells(x + 1, 5).Copy _
feuille_creation.Cells(x + 1, feuille_creation.Range("desc_format").Column)
feuille_mandatAValider.Cells(x + 1, 1).Copy _
feuille_creation.Cells(x + 1, feuille_creation.Range("ID").Column)
feuille_creation.Cells(x + 1, feuille_creation.Range("nom_fourn").Column) = _
rmultUnique(feuille_creation.Cells(x + 1, feuille_creation.Range("ID").Column), _
feuille_revise.Range("A2:t" & LastLignUsedInSheet_Column("tmp-MoulinetteRévisée", "a") + 1), 10)
feuille_creation.Cells(x + 1, feuille_creation.Range("num_prod").Column) = _
rmultUnique(feuille_creation.Cells(x + 1, feuille_creation.Range("ID").Column), _
feuille_revise.Range("A2:t" & LastLignUsedInSheet_Column("tmp-MoulinetteRévisée", "a") + 1), 12)
End If
Next produit_a_creer
'on supprime les lignes vides si bien sur les feuilles ont été créés
feuille_creation.Select
Range("A2").EntireRow.Insert
feuille_creation.Range("b1:B" & LastLignUsedInColumn("B")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
feuille_creation.Range("b2").Activate
End If
'validation si il y a des modifications régionnale
Set modif_reg = Range("creation_ou_modif").Find("Modif. Desc. Rég. seul.", LookAt:=xlWhole)
If modif_reg Is Nothing Then
MsgBox "Aucune modification de descriptions régionnale seulement a été trouvé"
Else
'Si il ya des demandes de modification ouvrir le fichier modele de modification et copié l'onglet dans le fichier
Workbooks.Open ("N:\DOCUMENTS SUPPORT\LAC\Demande création et modification\Demande de modification de produits.xlsm")
Sheets("Travail").Copy Before:=ThisWorkbook.Sheets(1)
Workbooks("Demande de modification de produits.xlsm").Close
'on le renomme Demande de création
Sheets("Travail").Name = "Demande modif reg seulement"
'on le set afin de pouvoir faire fonctionné la variable
Set feuille_modif_reg = Sheets("Demande modif reg seulement")
Sheets("R_ItemsPourMandatAValider").Activate
For Each modif_descr_reg In feuille_mandatAValider.Range(LettreVoulue & 2, LettreVoulue & LastLignUsedInColumn(LettreVoulue))
x = x + 1
If Cells(x + 1, feuille_mandatAValider.Range("creation_ou_modif").Column) = "Modif. Desc. Rég. seul." Then
feuille_modif_reg.Cells(x + 1, 1) = "toto"
Else
feuille_modif_reg.Cells(x + 1, 1) = "salut"
End If
Next modif_descr_reg
'on supprime les lignes vides si bien sur les feuilles ont été créés
' feuille_modif_reg.Select
' Range("A2").EntireRow.Insert
' feuille_modif_reg.Range("b1:B" & LastLignUsedInColumn("B")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
finish = Timer
MsgBox "durée du traitement: " & finish - start & " secondes"
Exit Sub
errorHandler:
MsgBox "erreur", vbCritical
End Sub |
Partager