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

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    août 2017
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2017
    Messages : 245
    Points : 58
    Points
    58

    Par défaut Comment simplifier l'écriture de ce code ?

    Bonjour,

    Plutôt que d'écrire de très nombreuses lignes de programme, comment pourrais-je re-écrire ce que je décris ci-dessous ? Il faut créer des boucles mais je n'ai pas la syntaxe.

    Ci-dessous un extrait de la zone concernée.

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    '
    '------ Active_loop = 2 ------
    '
    If Active_Loop = 2 Then
    '
    '------ Loop 1 ------
    '
      C1 = Range("F16").Value
      KOC1 = Range("G16").Value
      T1 = Range("H16").Value
      RESP1 = Range("I16").Value
     
      C2 = Range("F17").Value
      KOC2 = Range("G17").Value
      T2 = Range("H17").Value
      RESP2 = Range("I17").Value
     
      C3 = Range("F18").Value
      KOC3 = Range("G18").Value
      T3 = Range("H18").Value
      RESP3 = Range("I18").Value
     
      C4 = Range("F19").Value
      KOC4 = Range("G19").Value
      T4 = Range("H19").Value
      RESP4 = Range("I19").Value
     
      C5 = Range("F20").Value
      KOC5 = Range("G20").Value
      T5 = Range("H20").Value
      RESP5 = Range("I20").Value
     
      C6 = Range("F21").Value
      KOC6 = Range("G21").Value
      T6 = Range("H21").Value
      RESP6 = Range("I21").Value
     
      C7 = Range("F22").Value
      KOC7 = Range("G22").Value
      T7 = Range("H22").Value
      RESP7 = Range("I22").Value
     
      C8 = Range("F23").Value
      KOC8 = Range("G23").Value
      T8 = Range("H23").Value
      RESP8 = Range("I23").Value
     
      C9 = Range("F24").Value
      KOC9 = Range("G24").Value
      T9 = Range("H24").Value
      RESP9 = Range("I24").Value
     
      C10 = Range("F25").Value
      KOC10 = Range("G25").Value
      T10 = Range("H25").Value
      RESP10 = Range("I25").Value
     
      C11 = Range("F26").Value
      KOC11 = Range("G26").Value
      T11 = Range("H26").Value
      RESP11 = Range("I26").Value
     
      C12 = Range("F27").Value
      KOC12 = Range("G27").Value
      T12 = Range("H27").Value
      RESP12 = Range("I27").Value
     
      C13 = Range("F28").Value
      KOC13 = Range("G28").Value
      T13 = Range("H28").Value
      RESP13 = Range("I28").Value
     
      C14 = Range("F29").Value
      KOC14 = Range("G29").Value
      T14 = Range("H29").Value
      RESP14 = Range("I29").Value
     
      C15 = Range("F30").Value
      KOC15 = Range("G30").Value
      T15 = Range("H30").Value
      RESP15 = Range("I30").Value
     
      C16 = Range("F31").Value
      KOC16 = Range("G31").Value
      T16 = Range("H31").Value
      RESP16 = Range("I31").Value
     
      C17 = Range("F32").Value
      KOC17 = Range("G32").Value
      T17 = Range("H32").Value
      RESP17 = Range("I32").Value
     
      C18 = Range("F33").Value
      KOC18 = Range("G33").Value
      T18 = Range("H33").Value
      RESP18 = Range("I33").Value
     
      C19 = Range("F34").Value
      KOC19 = Range("G34").Value
      T19 = Range("H34").Value
      RESP19 = Range("I34").Value
     
      C20 = Range("F35").Value
      KOC20 = Range("G35").Value
      T20 = Range("H35").Value
      RESP20 = Range("I35").Value
     
      C21 = Range("F36").Value
      KOC21 = Range("G36").Value
      T21 = Range("H36").Value
      RESP21 = Range("I36").Value
     
      C22 = Range("F37").Value
      KOC22 = Range("G37").Value
      T22 = Range("H37").Value
      RESP22 = Range("I37").Value
     
      C23 = Range("F38").Value
      KOC23 = Range("G38").Value
      T23 = Range("H38").Value
      RESP23 = Range("I38").Value
     
      C24 = Range("F39").Value
      KOC24 = Range("G39").Value
      T24 = Range("H39").Value
      RESP24 = Range("I39").Value
     
      C25 = Range("F40").Value
      KOC25 = Range("G40").Value
      T25 = Range("H40").Value
      RESP25 = Range("I40").Value
     
      C26 = Range("F41").Value
      KOC26 = Range("G41").Value
      T26 = Range("H41").Value
      RESP26 = Range("I41").Value
    '
    '------ Loop 2 ------
    '
      C27 = Range("F56").Value
      KOC27 = Range("G56").Value
      T27 = Range("H56").Value
      RESP27 = Range("I56").Value
     
      C28 = Range("F57").Value
      KOC28 = Range("G57").Value
      T28 = Range("H57").Value
      RESP28 = Range("I57").Value
     
      C29 = Range("F58").Value
      KOC29 = Range("G58").Value
      T29 = Range("H58").Value
      RESP29 = Range("I58").Value
     
      C30 = Range("F59").Value
      KOC30 = Range("G59").Value
      T30 = Range("H59").Value
      RESP30 = Range("I59").Value
    Après C30, KOC30, T30, RESP30 on trouve C31, KOC31, T31, RESP31

    Cela va jusqu'à C81, KOC81, ...

    Merci beaucoup par avance.

    Cdlt.
    Jérôme.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Developpeur VBA, C# et VB.Net =]
    Inscrit en
    juillet 2007
    Messages
    13 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Developpeur VBA, C# et VB.Net =]
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2007
    Messages : 13 389
    Points : 30 491
    Points
    30 491

    Par défaut

    Salut,

    plutôt que de stocker une valeur à la fois, utilise un tableau

    https://didier-gonard.developpez.com...s-tableau-vba/
    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016 et Access 2019

    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
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    12 871
    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 : 12 871
    Points : 26 344
    Points
    26 344

    Par défaut

    Tel que ton programme est écrit, ce n'est pas faisable car VBA ne connait pas les macro-variables.

    La première chose à faire est d'indicer tes variables C(81), KOC(81), T(81) et RESP(81).
    Et tant que tu y es, déclare-les avec leurs types.
    Lire ceci : https://docs.microsoft.com/fr-fr/off.../dim-statement

    Pour ce qui est des boucles : http://silkyroad.developpez.com/vba/boucles/
    Ou bien http://bidou.developpez.com/article/VBA/ vers la page 46.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    janvier 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : janvier 2019
    Messages : 151
    Points : 220
    Points
    220

    Par défaut

    Bonjour à tous,

    Pour tout "stocker" en une seule fois, il y a le classique:

    Où T est un tableau (au sens array)

  5. #5
    Débutant  
    Avatar de patricktoulon
    Homme Profil pro
    cuisiniste
    Inscrit en
    avril 2009
    Messages
    14 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 14 814
    Points : 22 498
    Points
    22 498
    Billets dans le blog
    6

    Par défaut re

    et si tu tientaux nom de variables que tu a utilisé tu peux faire un compromis

    des variables typées tableaux

    dans ce genre la
    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
    Public Type matrice
        C As Variant
        KOC As Variant
        T As Variant
        RESP As Variant
    End Type
    '
    Sub test()
        Dim tablo As matrice
       '
        '------ Active_loop = 2 ------
        '
        If Active_Loop = 2 Then
            '
            '------ Loop 1 ------
            '
            tablo.C = Range("F16:F81").Value
            tablo.KOC = Range("G16:G81").Value
            tablo.T = Range("H16:H81").Value
            tablo.RESP = Range("I16:I81").Value
        End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    août 2017
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2017
    Messages : 245
    Points : 58
    Points
    58

    Par défaut

    Bonjour et merci à tous,

    Entre temps j'avais essayé la procédure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Toto()
     
    Dim*erreurs(1*To*26 , 1*To*2)*As*String
    Dim*i*As*Integer , j*As*Integer
     
    For*i = 1*To*26
      For*j = 1*To*2
        erreurs(i, j) = Cells(i + 15, j + 5).Value
      Next*j
    Next*i
     
    End Sub
    Sauf que j'ai les lignes "Dim*erreurs(1*To*26 , 1*To*2)*As*String" et "For*i = 1*To*26 For*j = 1*To*2" surligné en rouge. Erreur de compilation ??

  7. #7
    Débutant  
    Avatar de patricktoulon
    Homme Profil pro
    cuisiniste
    Inscrit en
    avril 2009
    Messages
    14 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 14 814
    Points : 22 498
    Points
    22 498
    Billets dans le blog
    6

    Par défaut re

    re

    bonjour c'est quoi ces"*" partout la ??????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    août 2017
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2017
    Messages : 245
    Points : 58
    Points
    58

    Par défaut

    ils se sont rajoutés suite à un copié / coller .... mais ils n'apparaissent pas dans ma procédure...

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    août 2017
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2017
    Messages : 245
    Points : 58
    Points
    58

    Par défaut

    Merci pour le retour car je viens de supprimer manuellement ces symboles et maintenant ça fonctionne .....

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

Discussions similaires

  1. Comment simplifier ce code en une fonction simple ?
    Par roleca dans le forum Fonctions
    Réponses: 10
    Dernier message: 05/09/2014, 17h31
  2. Réponses: 3
    Dernier message: 20/08/2014, 11h34
  3. comment simplifier ce code ?
    Par laurentSc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 09/09/2013, 19h38
  4. [XL-2007] Comment simplifier mon code VBA SVP?
    Par anthooooony dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2012, 10h59
  5. Réponses: 4
    Dernier message: 10/05/2008, 12h31

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