recalage de données par date

Forum pour toutes vos questions à propos d'Excel (avec ou sans macros) ...
pat78
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 13 mars 2018
Version d'Excel : 2016

Message par pat78 » 13 mars 2018, 17:09

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
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 3050
Appréciations reçues : 95
Inscrit le : 16 mars 2017
Version d'Excel : 2010 FR

Message par i20100 » 13 mars 2018, 17:54

Bonjour,

remplacer

Code : Tout sélectionner

Dim Valeur_Cherchee As String ' Designation de la valeur recherché
par

Code : Tout sélectionner

Dim Valeur_Cherchee As Date ' Designation de la valeur recherché
S'il vous plaît, pas de messagerie personnelle pour vos questions. La réponse peut servir aux autres membres. Merci!
isabelle
pat78
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 13 mars 2018
Version d'Excel : 2016

Message par pat78 » 13 mars 2018, 18:23

ok merci, ca marche mais uniquement sur la première trace (3 valeurs) aurai je mal fait une boucle?
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 3050
Appréciations reçues : 95
Inscrit le : 16 mars 2017
Version d'Excel : 2010 FR

Message par i20100 » 13 mars 2018, 18:45

essayez en ajoutant .Value

Code : Tout sélectionner

        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
S'il vous plaît, pas de messagerie personnelle pour vos questions. La réponse peut servir aux autres membres. Merci!
isabelle
pat78
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 13 mars 2018
Version d'Excel : 2016

Message par pat78 » 14 mars 2018, 06:10

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... :cry:
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 3050
Appréciations reçues : 95
Inscrit le : 16 mars 2017
Version d'Excel : 2010 FR

Message par i20100 » 14 mars 2018, 06:25

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...
S'il vous plaît, pas de messagerie personnelle pour vos questions. La réponse peut servir aux autres membres. Merci!
isabelle
pat78
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 13 mars 2018
Version d'Excel : 2016

Message par pat78 » 14 mars 2018, 06:41

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.
Fichiers joints
exemple de resultat souhaité.xlsm
(858.92 Kio) Téléchargé 2 fois
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 3050
Appréciations reçues : 95
Inscrit le : 16 mars 2017
Version d'Excel : 2010 FR

Message par i20100 » 14 mars 2018, 07:22

Bonjour,

il faudrait uniformiser le format des dates,
certaine sont texte "29/01/2018"
et d'autre sont de vrai date 2018-01-29
S'il vous plaît, pas de messagerie personnelle pour vos questions. La réponse peut servir aux autres membres. Merci!
isabelle
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message