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 :

Procédure trop grande


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut Procédure trop grande
    Bonjour je suis en train de faire un code mais au moment de le tester l'éditeur vba me met "procédure trop grande"

    J'ai déjà fait une boucle pour le réduire mais je pense qu'il faudrait que j'en fasse une seconde le probleme est qu'il m'affiche les resulat en double quand je fais ma seconde boucle

    Donc voila c'est un tableau qui fonctionne avec 13 colonnes et 8 lignes, mon probleme c'est le If/and qui compare les données avec une autre feuilles, j'ai essayer de fare 3 boucles mais ça ne marche pas (code 2)

    voici mon code qui fonctionne avec une boucle

    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
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    Sub comparateur()
     
    Dim numlignevide As Integer
    numlignevide = ActiveSheet.Columns(6).Find("").Row
    Sheets("comparateur").Activate
     
    For i = 23 To 27
    Cells(i, 2).Select
     If Cells(i, 22) = Cells(i, 1) And Sheets("calculateur").Cells(28, 3) < Sheets("comparateur").Cells(28, 2) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 2).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 2).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 2).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 2).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    For i = 23 To 27
    Cells(i, 3).Select
     If Cells(i, 3) = Cells(i, 1) And Sheets("calculateur").Cells(28, 4) < Sheets("comparateur").Cells(28, 3) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 3).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 3).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 3).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 3).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    For i = 23 To 27
    Cells(i, 4).Select
     If Cells(i, 4) = Cells(i, 1) And Sheets("calculateur").Cells(28, 5) < Sheets("comparateur").Cells(28, 4) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 4).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 4).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 4).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 4).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    For i = 23 To 27
    Cells(i, 5).Select
     If Cells(i, 5) = Cells(i, 1) And Sheets("calculateur").Cells(28, 6) < Sheets("comparateur").Cells(28, 5) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 5).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 5).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 5).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 5).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    For i = 23 To 27
    Cells(i, 6).Select
     If Cells(i, 6) = Cells(i, 1) And Sheets("calculateur").Cells(28, 7) < Sheets("comparateur").Cells(28, 6) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 6).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 6).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 6).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 6).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    For i = 23 To 27
    Cells(i, 7).Select
     If Cells(i, 7) = Cells(i, 1) And Sheets("calculateur").Cells(28, 8) < Sheets("comparateur").Cells(28, 7) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 7).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 7).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 7).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 7).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
     For i = 23 To 27
    Cells(i, 8).Select
     If Cells(i, 8) = Cells(i, 1) And Sheets("calculateur").Cells(28, 9) < Sheets("comparateur").Cells(28, 8) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 8).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 8).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 8).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 8).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    For i = 23 To 27
    Cells(i, 9).Select
     If Cells(i, 9) = Cells(i, 1) And Sheets("calculateur").Cells(28, 10) < Sheets("comparateur").Cells(28, 9) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 9).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 9).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 9).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 9).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    For i = 23 To 27
    Cells(i, 10).Select
     If Cells(i, 10) = Cells(i, 1) And Sheets("calculateur").Cells(28, 11) < Sheets("comparateur").Cells(28, 10) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 10).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 10).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 10).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 10).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    For i = 23 To 27
    Cells(i, 11).Select
     If Cells(i, 11) = Cells(i, 1) And Sheets("calculateur").Cells(28, 12) < Sheets("comparateur").Cells(28, 11) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 11).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 11).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 11).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 11).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    For i = 23 To 27
    Cells(i, 12).Select
     If Cells(i, 12) = Cells(i, 1) And Sheets("calculateur").Cells(28, 13) < Sheets("comparateur").Cells(28, 12) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 12).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 12).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 12).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 12).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    For i = 23 To 27
    Cells(i, 13).Select
     If Cells(i, 13) = Cells(i, 1) And Sheets("calculateur").Cells(28, 14) < Sheets("comparateur").Cells(28, 13) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, 13).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, 13).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, 13).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, 13).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
     
    sheets("accueil").activate
    end sub
    code 2:

    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
    Sub comparateur()
    Dim numlignevide As Integer
    numlignevide = ActiveSheet.Columns(6).Find("").Row
    Sheets("comparateur").Activate
     
    For i = 23 To 27
    For e = 2 To 13
    For c = 3 To 14
     
    Cells(i, 2).Select
    Cells(23, e).select
    Cells(28, c).select
     
    If Cells(i, e) = Cells(i, 1) And Sheets("calculateur").Cells(28, c) < Sheets("comparateur").Cells(28, e) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, e).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, e).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, c).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, e).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
    Next
    Next
     
    sheets("accueil").activate
    end sub
    Ce code me donne des résultats mais pas ce que je veux (doublons, cellules pas au bon endroit) etc. Je suis à cour d'idée pour réduire mon code surtout que ce n'est qu'un seul tableau que j'ai a analysé, j'en ai une trentaine comme ça

    Il me faudrait un peu d'aide, peut etre pas me refaire le code mais peut être me guider sur une voie ou m'expliquer pourquoi ce que j'ai fait ne marche pas bien. Je pense que c'est ma variable c dans l'autre feuille qui pose problème met la ça dépasse vraiment ce que je sais faire et je ne peux pas tricher en faisant mon 1er code car vu le nombre de tableau c'est beaucoup trop long pour le vba apparemment

    Merci beaucoup pour votre temps et votre aide

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    un code suit strictement ses directives : comparer alors ce qu'il fait avec ce qu'il est censé faire devrait aider !

    Progresser dans le code en mode pas à pas via la touche F8 tout en contrôlant le contenu de la fenêtre des Variables locales


    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Mon probleme vient de "for c to" et de mon "and". En effet si je supprime le and et donc une condition et la variable c le code marche

    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
    Sub comparateur()
    Dim numlignevide As Integer
    numlignevide = ActiveSheet.Columns(6).Find("").Row
    Sheets("comparateur").Activate
     
    For i = 23 To 27
    For e = 2 To 13
     
     
    Cells(i, 2).Select
    Cells(23, e).Select
     
     
     If Cells(i, e) = Cells(i, 1) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, e).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, e).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, e).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, 2).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next
    Next
     
    Sheets("accueil").Activate
    End Sub
    Donc c'est bien ce que je pensais et du coup j'ai compris le fonctionnement de la boucle for ce qui me pose problème c'est d’intégrer la feuille "calculateur" je ne comprends pas pourquoi cette fonction c me pose autant de problème.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 : 15 374
    Billets dans le blog
    8
    Par défaut
    Bonsoir
    pour commencer
    il y a des operations communes dans ton code
    a commencer par la boucle repetitive identique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For i = 23 To 27
    Cells(i, X).Select
    tu pourrais donc en faire 1 seule et mettre le reste a la suite
    ensuite comme tu peux le voir il y a une 2 eme repetition c'est la ligne ou j'ai remplacer la colonne par le "X" la aussi il y aurais a reduire les doubles pross identique

    je vais examiner de plus prêt
    c'était une première remarque
    qui m'a sauter au yeux des les premières lignes de code


    ensuite tes select tu peut les virer ca déjà ca va bien reposer l'UC
    je regarde et je reviens

    je ne sais pas si c'est fait expres mais d'apres l'organisation de tes boucle je pense que déjà tu avais fait une erreur
    dans la 1 ere les deux chiffres en rouge sont dans toutes les autres identiques pourquoi pas la premiere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 23 To 27
    Cells(i, 2).Select
      If Cells(i, 22) = Cells(i, 1) And Sheets("calculateur").Cells(28, 3) < Sheets("comparateur").Cells(28, 2) Then
    allez je continu j'ai réussi a en faire une seule je potine et je reviens

    voila
    celle ci remplace toutes les autres
    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
    For i = 23 To 27
    'Cells(i, 2).Select' ceci pas la peine
      For e = 2 To 13
      If Cells(i, e) = Cells(i, 1) And Sheets("calculateur").Cells(28, e + 1) < Sheets("comparateur").Cells(28, e) Then
            Sheets("synthese").Cells(numlignevide, 10).Value = Sheets("COMPARATEUR").Cells(28, e).Value
            Sheets("synthese").Cells(numlignevide, 12).Value = Sheets("COMPARATEUR").Cells(i, e).Value
            Sheets("synthese").Cells(numlignevide, 11).Value = Sheets("calculateur").Cells(29, e).Value
            Sheets("synthese").Cells(numlignevide, 9).Value = Sheets("COMPARATEUR").Cells(22, e).Value
            Sheets("synthese").Cells(numlignevide, 8).Value = Sheets("COMPARATEUR").Cells(21, e).Value
            Sheets("synthese").Cells(numlignevide, 6).Value = Sheets("DOMICILE").Cells(1, 1).Value
            Sheets("synthese").Cells(numlignevide, 7).Value = Sheets("EXTERIEUR").Cells(1, 1).Value
            numlignevide = numlignevide + 1
        End If
    Next e
    Next i
    et voila
    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

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    J'ai essayé de faire grâce à des tuto parce que j'aimerais comprendre comment fonctionne le code et le faire par moi même c'est certainement pour ça que mon code n'est pas beau mais je pense qu'on passe tous par la au début.

    De ce que j'ai compris quand je définit for 1=23 to 27 j'indique a excel que la variable i va agir de la ligne 23 à 27 puis pour cells (i, 2) que cela commence à partir de la colonne 2. Donc mon code marchais si j'analyser mon tableau colonne par colonne. Le problème étant que j'ai trop de tableau je dois réduire le code donc j'ai fait une deuxième boucle mais avec les colonne donc mon e= 2 to 13 indique que la variable e va travailler de la colonne 2 à 13 et cells(23, e) à partir de la ligne 23. De cette manière mon code marche

    J'ai compris la répétition des boucles et je vous remercie du conseil cela va mettre tres utile par la suite mais cela vaut pour mon 1er post or celui ci n'est plus valable puisque je ne peux pas l'utiliser. Mon problème vient vraiment de ma condition "and" qui m'oblige à faire une 3eme boucle sur une feuille différente. Le code me semblait logique mais ça cré tout un tas de doublons et d'information erronée

    Peut etre pourrai je vous envoyer mon fichier excel pour que vous puissiez visualiser?

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Merci beaucoup ca marche niquel à part un bug que je ne comprends pas. Je vous envoi le fichier vous comprendrez surement pourquoi mais j'ai bien analysé et compris votre code et je ne comprends pas ce bug sur 2 cases. Dans accueil il suffit de cliquer sur le bouton comparateur et vous verrais dans la feuille synthèse que les 2 cellules - de 0.5 but n'affiche pas la proba.

    Encore merci pour votre aide cela m'aide beaucoup notamment le (e+1), j'ai pas encore les mécanismes qui me font penser à ces choses la
    Fichiers attachés Fichiers attachés

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 : 15 374
    Billets dans le blog
    8
    Par défaut c'est normal
    Pièce jointe 173705et oui c'est normal ce petit bug qui n'en est pas un

    ca respecte ta condition If Cells(i, e) = Cells(i, 1) en l'occurrence ici faux pour 23 .26et 27
    peut etre faudrait il carément enlevé cette condition dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i, e) = Cells(i, 1) And Sheets("calculateur").Cells(28, e + 1) < Sheets("comparateur").Cells(28, e) Then
    c'est toi qui voit
    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

Discussions similaires

  1. [XL-2003] Procédure trop grande
    Par direct83 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/06/2012, 10h56
  2. procédure trop grande?
    Par cchampion2fr dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/10/2008, 17h19
  3. procédure trop grande
    Par Selune6666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/02/2008, 18h21
  4. Diviser une procédure trop grande
    Par tenaka69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/08/2007, 09h45
  5. Procédure trop grande
    Par bobie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/08/2007, 14h30

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