Recalage de données par date
Bonjour,
voici plusieurs semaines de labeur sur ce sujet, je suis arrivé aujourd'hui a un point de blocage.
explications : j'ai un tableau de mesures de plusieurs "traces" (3 données en colonne Val, Date et Ref piece) dans un onglet "Batchtest" et je souhaite recaler ces ensembles de données dans le même ordre selon la date disponible dans l'onglet "RecalageXY". les premières colonnes dans les 2 onglets sont identiques.
je suis bloquer par une erreur 1004 sans pourvoir trouvé la solution..pouvez vous m'aider.
Ci joint la macro
et le fichier contenant les données structurées.
Merci par avance pour votre aide!
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
Bonjour,
remplacer
Dim Valeur_Cherchee As String ' Designation de la valeur recherché
par
Dim Valeur_Cherchee As Date ' Designation de la valeur recherché
ok merci, ca marche mais uniquement sur la première trace (3 valeurs) aurai je mal fait une boucle?
essayez en ajoutant .Value
Sheets("RecalageXY").Cells(LValMes + 1, ColDest).Value = Sheets("Batchtest").Cells(LValMes, cb).Value
Sheets("RecalageXY").Cells(LDatMes + 1, ColDest).Value = Sheets("Batchtest").Cells(LDatMes, cb).Value
Sheets("RecalageXY").Cells(LRefMes + 1, ColDest).Value = Sheets("Batchtest").Cells(LRefMes, cb).Value
bonjour, merci de votre aide, mais rien n'y fait ma boucle n'a pas l'air de fonctionner. toujours une seule trace de recalée. je pensais avoir bien structurer mes boucles. c'est comme si une fois la première boucle passée je sortais de ma macro. il y a bien des dates en doubles a cause d'autre pièces mesurées, mais la boucle devrait ecraser la valeur par celle de la prochaine colonne et non sortir de la boucle...
merci de votre aide, mais rien n'y fait ma boucle n'a pas l'air de fonctionner.
dans votre fichier et aussi sur le code affiché ici, il n'y a pas de boucle, alors je ne comprend pas votre question ?
peut être qu'il serait mieux de montrer le résultat attendu...
Bonjour,
ci joint un exemple de resultat souhaité sur quelques lignes. lorsque je parle de boucle je pare de IF et End If mais ce n'est peut etre pas le bon terme.
si vous pouvez m'aider. Merci.
Bonjour,
il faudrait uniformiser le format des dates,
certaine sont texte "29/01/2018"
et d'autre sont de vrai date 2018-01-29