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

Excel Discussion :

Simplification de programmation [XL-2016]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Centre Spatial Guyanais
    Inscrit en
    Janvier 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Centre Spatial Guyanais
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 24
    Points : 18
    Points
    18
    Par défaut Simplification de programmation
    Bonjour,

    Quelqu'un pourrait-il m'aider à simplifier ma programmation.
    J'ai un tableau dans un UserForm composé de 6 colonnes et de 30 lignes.
    J'alimente ce tableau (composé de TextBox et ComboBox) avec un tableau excel de 180 colonnes.
    J'ai actuellement 180 lignes de programmation et je ne sais pas comment faire pour simplifier tout ça.
    Je joins les 3 premières et les trois dernières lignes de mon fichier.
    Merci par avance.
    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
    ' Ligne 01
      Me.txtLib1 = .Cells(RecordNumber, 20)
      Me.cboUnit1 = .Cells(RecordNumber, 21)
      Me.txtQte1 = .Cells(RecordNumber, 22)
      Me.txtPUHT1 = .Cells(RecordNumber, 23)
      Me.txtPTHT1 = .Cells(RecordNumber, 24)
      Me.txtSTHT1 = .Cells(RecordNumber, 25)
    ' Ligne 02
      Me.txtLib2 = .Cells(RecordNumber, 26)
      Me.cboUnit2 = .Cells(RecordNumber, 27)
      Me.txtQte2 = .Cells(RecordNumber, 28)
      Me.txtPUHT2 = .Cells(RecordNumber, 29)
      Me.txtPTHT2 = .Cells(RecordNumber, 30)
      Me.txtSTHT2 = .Cells(RecordNumber, 31)
    ' Ligne 03
      Me.txtLib3 = .Cells(RecordNumber, 32)
      Me.cboUnit3 = .Cells(RecordNumber, 33)
      Me.txtQte3 = .Cells(RecordNumber, 34)
      Me.txtPUHT3 = .Cells(RecordNumber, 35)
      Me.txtPTHT3 = .Cells(RecordNumber, 36)
      Me.txtSTHT3 = .Cells(RecordNumber, 37)
    '
    '
    '
    '
    '
    ' Ligne 27
      Me.txtLib27 = .Cells(RecordNumber, 176)
      Me.cboUnit27 = .Cells(RecordNumber, 177)
      Me.txtQte27 = .Cells(RecordNumber, 178)
      Me.txtPUHT27 = .Cells(RecordNumber, 179)
      Me.txtPTHT27 = .Cells(RecordNumber, 180)
      Me.txtSTHT27 = .Cells(RecordNumber, 181)
    ' Ligne 28
      Me.txtLib28 = .Cells(RecordNumber, 182)
      Me.cboUnit28 = .Cells(RecordNumber, 183)
      Me.txtQte28 = .Cells(RecordNumber, 184)
      Me.txtPUHT28 = .Cells(RecordNumber, 185)
      Me.txtPTHT28 = .Cells(RecordNumber, 186)
      Me.txtSTHT28 = .Cells(RecordNumber, 187)
    ' Ligne 29
      Me.txtLib29 = .Cells(RecordNumber, 188)
      Me.cboUnit29 = .Cells(RecordNumber, 189)
      Me.txtQte29 = .Cells(RecordNumber, 190)
      Me.txtPUHT29 = .Cells(RecordNumber, 191)
      Me.txtPTHT29 = .Cells(RecordNumber, 192)
      Me.txtSTHT29 = .Cells(RecordNumber, 193)
    ' Ligne 30
      Me.txtLib30 = .Cells(RecordNumber, 194)
      Me.cboUnit30 = .Cells(RecordNumber, 195)
      Me.txtQte30 = .Cells(RecordNumber, 196)
      Me.txtPUHT30 = .Cells(RecordNumber, 197)
      Me.txtPTHT30 = .Cells(RecordNumber, 198)
      Me.txtSTHT30 = .Cells(RecordNumber, 199)

  2. #2
    Membre éclairé Avatar de PrinceCorwin
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mars 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 337
    Points : 692
    Points
    692
    Par défaut
    Bonjour,

    Avec une variable qui pourrait contenir le calcul suivant
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
     variable = 20+(numeroligne-1)*6
    1 20
    2 26
    27 176


    Dans une boucle For
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim Variable As Integer
    For Variable = 1 To 100
        Controls("Me.txtLib" & Variable) = .Cells(RecordNumber, 20 + (Variable - 1) * 6)
        Controls("Me.cboUnit" & Variable) = .Cells(RecordNumber, 20 + (Variable - 1) * 6 + 1)
        Controls("Me.txtQte" & Variable) = .Cells(RecordNumber, 20 + (Variable - 1) * 6 + 2)
        Controls("Me.txtPUHT" & Variable) = .Cells(RecordNumber, 20 + (Variable - 1) * 6 + 3)
        Controls("Me.txtPTHT" & Variable) = .Cells(RecordNumber, 20 + (Variable - 1) * 6 + 4)
        Controls("Me.txtSTHT" & Variable) = .Cells(RecordNumber, 20 + (Variable - 1) * 6 + 5)
    Next Variable
    En espérant que cela puisse vous venir en aide.
    Bonne continuation
    Si ce message vous a aidé, appuyez sur le petit , ca fait toujours plaisir
    Merci.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Centre Spatial Guyanais
    Inscrit en
    Janvier 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Centre Spatial Guyanais
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Bonjour PrinceCorwin,

    Merci pour la rapidité à laquelle vous m'avez répondu.
    Mais cela ne fonctionne pas, j'ai entré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim lig As Integer        
      For lig = 1 To 30  ' Lignes de données du tableau
          Controls("Me.txtLib" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6)
          Controls("Me.cboUnit" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6 + 1)
          Controls("Me.txtQte" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6 + 2)
          Controls("Me.txtPUHT" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6 + 3)
          Controls("Me.txtPTHT" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6 + 4)
          Controls("Me.txtSTHT" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6 + 5)
      Next lig
    et je reçois le message :

    Nom : Sans titre.jpg
Affichages : 62
Taille : 32,8 Ko

  4. #4
    Membre à l'essai
    Homme Profil pro
    Centre Spatial Guyanais
    Inscrit en
    Janvier 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Centre Spatial Guyanais
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Re bonjour PrinceCowin,

    J'ai compris pourquoi ca ne marchait pas, il faut juste que j'enlève les "Me."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim lig As Integer
    For lig = 1 To 30 ' Lignes de données du tableau
    Controls("txtLib" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6)
    Controls("cboUnit" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6 + 1)
    Controls("txtQte" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6 + 2)
    Controls("txtPUHT" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6 + 3)
    Controls("txtPTHT" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6 + 4)
    Controls("txtSTHT" & lig) = .Cells(RecordNumber, 20 + (lig - 1) * 6 + 5)
    Next lig
    Et la ça fonctionne impeccable
    Encore un grand MERCI à vous.

  5. #5
    Membre éclairé Avatar de PrinceCorwin
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mars 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 337
    Points : 692
    Points
    692
    Par défaut
    Re-bonjour,

    Une erreur de ma part sur la syntaxe du userform.

    Au lieu de Controls("Me.txtLib" & lig) , il faut lire Me.Controls("txtlib" & lig).
    Désolé.
    Si ce message vous a aidé, appuyez sur le petit , ca fait toujours plaisir
    Merci.

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

Discussions similaires

  1. [WD-2010] Simplification d'un programme pour gagner en rapidité
    Par November-Oscar dans le forum VBA Word
    Réponses: 2
    Dernier message: 15/02/2015, 22h31
  2. [XL-2010] Aide simplification programmes VBA
    Par 010714 dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 18/07/2014, 18h17
  3. [XL-2003] Simplification / Optimisation programme VBA
    Par Clementitho dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/07/2014, 13h55
  4. [XL-2007] simplification possible d'un programme sous VBA
    Par lps02 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/01/2012, 20h17
  5. Simplification du Programme Runge Kutta Ordre 4
    Par achraf2 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 15/01/2010, 01h14

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