IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Recalage de données par date


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut 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
    innovationsS3P xi Yi recaléssuite4nouvellesolutionV1.xlsm(869.62 Kio) Pas encore téléchargéet le fichier contenant les données structurées.
    Merci par avance pour votre aide!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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


     Haut
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par augpat Voir le message
    je suis bloquer par une erreur 1004 sans pourvoir trouvé la solution..pouvez vous m'aider.
    Quel est le message d'erreur et quelle ligne de code est signalée par le débugeur quand l'erreur se produit ?

    Au passage, quelques règles du forum :
    https://www.developpez.net/forums/d8...s-discussions/
    http://club.developpez.com/regles/#LIII-E
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    bonjour,
    je n'ai plus l'erreur en changeant cette variable en Date:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Valeur_Cherchee As Date ' Designation de la valeur recherché
    par contre ma boucle ne se déroule qu'une seule fois...aurai je un problème dans la gestion des boucles. mais je ne trouve pas la solution.

    Par avance merci de votre aide...

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par augpat Voir le message
    par contre ma boucle ne se deroule qu'une seule fois...aurai je un probleme dans la gestion des boucles.
    Il n'y a aucun problème de boucle dans ton code puisqu'il ne contient aucune boucle.
    Il est donc normal qu'il ne se déroule qu'une seule fois.

    Un conseil en marge de ta demande : fais une indentation des structures dans ton code, sinon tu vas rapidement être perdu.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       If Sheets("Batchtest").Cells(LValMes, 9).Value <> "" Then 'action uniquement si il y a une nouvelle mesures a recalée
          Valeur_Cherchee = Sheets("Batchtest").Cells(LDatMes, cb)
          Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
          If Trouve Is Nothing Then
              AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
          Else
              AdresseTrouvee = Trouve.Address
              ColDest = Trouve.Column
          End If
    ... etc ....
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. Extraction de données par dates
    Par fancho dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/03/2009, 18h47
  2. [XSLT] Regrouper des données par date
    Par sofuzion dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 19/02/2009, 11h07
  3. [MySQL] Suppression donnée par date
    Par tiesto95 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/01/2009, 04h40
  4. Trier les données par date au format jour mois année...
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/08/2007, 11h41
  5. Extraire données par date du jour
    Par Hombe dans le forum Oracle
    Réponses: 6
    Dernier message: 08/11/2006, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo