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
| Sub recalageXY()
Dim cb As Long '1ere colonne analysée de la feuille de départ "Batchtest"
Dim LValMes As Long ' Num ligne valeur de mesure
Dim LDatMes As Long ' Num de ligne de la date de mesure
Dim LRefMes As Long ' Num de ligne de la ref de la pièce
Dim ColDest As Long 'Num de colonne de destination des données recalées
Dim Trouve As Range ' Resultat de la recherche dans la plage de recherche de la feuille "RecalageXY"
Dim PlageDeRecherche As Range 'Plage de recherche dans la feuille "RecalageXY"
Dim Valeur_Cherchee As String ' Designation de la valeur recherché
Dim AdresseTrouvee As String 'variable ou deposer l'adresse du resultat de la recherche
cb = 9 'definition de la colonne de départ dans la feuille "Batchtest"
LValMes = 2 'definition de la première ligne des valeurs de mesure
LDatMes = 3 'definition de la première ligne des dates de mesure
LRefMes = 4 'definition de la première ligne des ref de pièce mesurées
'Definition de la plage de recherche dans la feuille recalageXY (liste des dates)
Set PlageDeRecherche = Sheets("RecalageXY").Range("I2:HA2")
If Sheets("Batchtest").Cells(LValMes, 9).Value <> "" Then 'action uniquement si il y a une nouvelle mesures a recalée
'definition de la valeur a rechercher (LDatMes en cours et colonne en cours dans la feuille de départ "Bacthtest"
Valeur_Cherchee = Sheets("Batchtest").Cells(LDatMes, cb)
'recherche de la valeur cherchée
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
'si on trouve rien
If Trouve Is Nothing Then
AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
'si il y a un resultat, recherche de la colonne trouvée dans la feuille recalageXY
Else
AdresseTrouvee = Trouve.Address
ColDest = Trouve.Column
End If
'copie des valeurs d'une feuille à l'autre vers la bonne colonne de destination ColDest Recealge XY(il y a une ligne d'écart entre les 2 feuilles
Sheets("RecalageXY").Cells(LValMes + 1, ColDest) = Sheets("Batchtest").Cells(LValMes, cb)
Sheets("RecalageXY").Cells(LDatMes + 1, ColDest) = Sheets("Batchtest").Cells(LDatMes, cb)
Sheets("RecalageXY").Cells(LRefMes + 1, ColDest) = Sheets("Batchtest").Cells(LRefMes, cb)
'passage a la colonne suivante
cb = cb + 1
'test si il ya des valeurs dans la colonne suivante pour la même trace
If Sheets("Batchtest").Cells(LValMes, cb).Value <> "" Then
LValMes = LValMes
LDatMes = LDatMes
LRefMes = LRefMes
'si plus de mesure pour cette trace passage a la suivante (decalage de 3)
Else
LValMes = LValMes + 3
LDatMes = LDatMes + 3
LRefMes = LRefMes + 3
End If
Else
MsgBox "fin"
End If
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End Sub |
Partager