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 :

gestion de tableau en vba [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    responsable d'équipe
    Inscrit en
    Avril 2014
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : responsable d'équipe
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 212
    Points : 0
    Points
    0
    Par défaut gestion de tableau en vba
    bonjour
    j'ai 2 tableaux,un de 1 800 lignes et un autre de 300 lignes environ

    pour chacune des 300 lignes du 2° tableau, je dois checker chaque lignes du 1° tableau(1800 lignes) pour faire des comparaisons

    j'ai désactivé tous ce que je pouvais, mais ma procédure prend 40 secondes pour s'exécuter

    je sais qu'il y a moyen de créer "des tableaux virtuels", mais je ne maîtrise pas ce type d'élément

    est ce que quelqu'un pourrait me donner un coût de main

    voici mon code actuel

    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
    Sub recherche_des_casiers_et_des_palettes_carton()
    Dim ligne, ligne_movex, ligne_suivi_atdec As Variant
     
     
    'recherche des lot/ref identique
      For ligne_suivi_atdec = 1 To Workbooks("StkPF.xls").Worksheets("Sheet1").Range("an65536").End(xlUp).Row + 1
        'If ligne_suivi_atdec = 86 Then Stop
     
       If Workbooks("StkPF.xls").Worksheets("Sheet1").Range("am" & ligne_suivi_atdec) <> "" Then
     
         For ligne_movex = 1 To Workbooks("StkPF.xls").Worksheets("Sheet1").Range("j65536").End(xlUp).Row + 1
          'If ligne_movex = 242 Then Stop
     
         'lot et ref identique
          If Val(Left(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("j" & ligne_movex), 8)) = Val(Left(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("am" & ligne_suivi_atdec), 8)) And Val(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("an" & ligne_suivi_atdec)) = Val(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("s" & ligne_movex)) Then
     
            If Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) <> "" Then Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) & " ou " & Workbooks("StkPF.xls").Worksheets("Sheet1").Range("u" & ligne_movex)
     
            If Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) = "" Then Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("u" & ligne_movex)
            'statut
            Workbooks("StkPF.xls").Worksheets("Sheet1").Range("as" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("p" & ligne_movex)
     
            'palette carton
            If Left(Right(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("j" & ligne_movex), 5), 1) = 9 Or Left(Right(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("j" & ligne_movex), 2), 1) = 9 Then
             Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) & "\C"
            End If
     
            'ref
            Workbooks("StkPF.xls").Worksheets("Sheet1").Range("am" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("j" & ligne_movex)
            'quantité
            Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ap" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("w" & ligne_movex)
            'check movex
            Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ab" & ligne_movex) = "OK"
     
         End If
     
        Next ligne_movex
     
       End If
     
      Next ligne_suivi_atdec
     
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 261
    Points
    34 261
    Par défaut
    Salut,

    un peu de lecture pour commencer :
    https://didier-gonard.developpez.com...s-tableau-vba/

    Ensuite tu pourrais simplifier le code en englobant la majeure partie avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With Workbooks("StkPF.xls").Worksheets("Sheet1")
        For ligne_suivi_atdec = 1 To .Range("an65536").End(xlUp).Row + 1
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    responsable d'équipe
    Inscrit en
    Avril 2014
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : responsable d'équipe
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 212
    Points : 0
    Points
    0
    Par défaut
    parfait, j'ai pu modifier ma procédure

    je suis passé de 40 secondes, à 8 secondes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Gestion de tableau en VBA
    Par Méliodas dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/03/2016, 19h41
  2. Gestion de tableau en VBA
    Par lilian65 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/02/2009, 17h37
  3. Gestion de fichier en VBA.
    Par monf29 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/06/2007, 20h08
  4. [VBA-E] Comment créer un tableau sous vba excel
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/01/2007, 09h52
  5. [Tableau][Base]Création d'une classe de gestion de tableau
    Par mariogarcia dans le forum Collection et Stream
    Réponses: 40
    Dernier message: 05/11/2005, 01h19

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