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
| Sub Commandes_Exceptionnelles()
Dim FichierCommande As String
Dim FichierMacro As String
Dim DossierCommande As String
Dim Chemin As String
Dim NbLignes As Integer
Dim Ligne As Integer
Dim LigneDuBlocPDV As Integer
Dim ITM8 As String
Dim PDV As String
Dim QTE As String
Application.ScreenUpdating = False
'*************************************************************************
'OUVERTURE DU FICHIER EXCEL ET RENSEIGNEMENT DES VARIABLES DE CHEMINS ET NOMS DE FICHIERS
MsgBox ("Ouvrir le fichier Excel de Commandes Exceptionnelles à passer")
Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = False
Application.FileDialog(msoFileDialogFilePicker).Show
FichierCommande = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
FichierMacro = ThisWorkbook.Name
Workbooks.Open Filename:=FichierCommande
DossierCommande = ActiveWorkbook.Path
'*************************************************************************
'FORMATAGE DES TROIS COLONNES EN NOMBRE AFIN D'UNIFORMISER LE FORMAT ET DONC DE FACILITER LE TRAITEMENT
Columns(1).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Columns(2).TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Columns(3).TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
'*************************************************************************
'NOMBRE DE LIGNES DU FICHIER EXCEL
NbLignes = Cells(65536, 1).End(xlUp).Row
'*************************************************************************
'DETECTION DES ERREURS SUR LES CODES PDV, CODES ITM ET QTE
For Ligne = 2 To NbLignes
PDV = Worksheets(1).Cells(Ligne, 1).Value
If (IsNumeric(PDV) = False) Or ((Len(PDV) > 5) Or (Len(PDV) < 4)) Then
MsgBox ("Le programme va s'arrêter : il a détecté un code PDV non-conforme en cellule [A" & Ligne & "]")
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Exit Sub
End If
ITM8 = Worksheets(1).Cells(Ligne, 2).Value
If (IsNumeric(ITM8) = False) Or ((Len(ITM8) > 8) Or (Len(ITM8) < 7)) Then
MsgBox ("Le programme va s'arrêter : il a détecté un code ITM8 non-conforme en cellule [B" & Ligne & "]")
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Exit Sub
End If
QTE = Worksheets(1).Cells(Ligne, 3).Value
If (IsNumeric(QTE) = False) Then
MsgBox ("Le programme va s'arrêter : il a détecté une quantité non-conforme en cellule [C" & Ligne & "]")
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Exit Sub
Else
If ((QTE > 500) Or (QTE < 1)) Then
MsgBox ("Le programme va s'arrêter : il a détecté une quantité non-conforme en cellule [C" & Ligne & "]")
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Exit Sub
End If
End If
Next Ligne
'*************************************************************************
'TRI DE LA COLONNE PDV - POUR REGROUPER PAR PDV
'ActiveWorkbook.Worksheets(1).Sort.SortFields.Clear
'ActiveWorkbook.Worksheets(1).Sort.SortFields.Add Key:=Range("A2:A65536"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'With ActiveWorkbook.Worksheets(1).Sort
' .SetRange Range("A1:C65536")
' .Header = xlYes
' .MatchCase = False
' .Orientation = xlTopToBottom
' .SortMethod = xlPinYin
' .Apply
'End With
Range("A1").Select
BlocPDVNumero = 0
LigneDuBlocPDV = 0
'DEBUT DE LA 1ERE BOUCLE PAR LIGNE EXCEL
For Ligne = 2 To NbLignes
'ON FORMATE LES CODE PDV ET LES CODES ITM8
PDV = Worksheets(1).Cells(Ligne, 1).Value
If (Len(PDV) = 4) Then
PDV = "0" & PDV
End If
ITM8 = Worksheets(1).Cells(Ligne, 2).Value
If (Len(ITM8) = 7) Then
ITM8 = "0" & ITM8
End If
QTE = Worksheets(1).Cells(Ligne, 3).Value
If 2 = 1 Then
BlocPDVNumero = 1
'*************************************************************************
'CREER LE FICHIER TEXTE
Open DossierCommande & "\Bloc" & BlocPDVNumero & "_CmdeExecp.mac" For Append As #1
'COMMENCE A ECRIRE DANS LE FICHIER TEXTE(.MAC)
Print #1, "Description ="
Else
If LigneDuBlocPDV = 0 Then
BlocPDVNumero = BlocPDVNumero + 1
'*************************************************************************
'CREER LE FICHIER TEXTE
Open DossierCommande & "\Bloc" & BlocPDVNumero & "_CmdeExecp.mac" For Append As #1
'COMMENCE A ECRIRE DANS LE FICHIER TEXTE(.MAC)
Print #1, "Description ="
End If
End If
LigneDuBlocPDV = LigneDuBlocPDV + 1
Print #1, Chr(34) + PDV + ITM8
Print #1, "[wait inp inh]"
Print #1, "wait 30 msec"
Print #1, "[enter]"
Print #1, "[wait inp inh]"
Print #1, "wait 30 msec"
Print #1, "[pf4]"
Print #1, "[wait inp inh]"
Print #1, "wait 30 msec"
Print #1, "[newline]"
Print #1, Chr(34) + QTE
Print #1, "[wait inp inh]"
Print #1, "wait 30 msec"
Print #1, "[pf9]"
Print #1, "wait 30 msec"
Print #1, "[pf9]"
Print #1, "[wait inp inh]"
Print #1, "wait 100 msec"
If 1 = 2 Then
'*************************************************************************
'FERME LE FICHIER TEXTE(.MAC)
LigneDuBlocPDV = 0
Close #1
Else
If LigneDuBlocPDV = 400 Then
'*************************************************************************
'FERME LE FICHIER TEXTE(.MAC)
LigneDuBlocPDV = 0
Close #1
End If
End If
Next Ligne
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
MsgBox ("Vos Fichiers .MAC ont été générés avec succés dans le dossier " & DossierCommande)
Application.ScreenUpdating = False
End Sub |
Partager