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 :

[XL-2010] Réduire une procédure trop longue


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Points : 12
    Points
    12
    Par défaut [XL-2010] Réduire une procédure trop longue
    Bonjour à tous!

    J'ai besoin de votre aide, je viens de faire une macro qui sur le principe fonctionne mais qui est trop longue quand je la construit jusqu'à la fin.

    Code :
    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
    ComboBox1.RowSource = ("PAYS")
     
    ActiveSheet.[C1] = ComboBox1.Value
     
     
    If Sheets("MCX Tot Cumul").[C1] = ("de") Then
     
    Sheets("MCX Tot Cumul").Range("D7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;11;FAUX)"
    Sheets("MCX Tot Cumul").Range("E7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;12;FAUX)"
    Sheets("MCX Tot Cumul").Range("F7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;13;FAUX)"
     
    Sheets("MCX Tot Cumul").Range("H7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;15;FAUX)"
    Sheets("MCX Tot Cumul").Range("I7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;16;FAUX)"
    Sheets("MCX Tot Cumul").Range("J7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;17;FAUX)"
     
    Sheets("MCX Tot Cumul").Range("P7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;3;FAUX)"
    Sheets("MCX Tot Cumul").Range("Q7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;4;FAUX)"
    Sheets("MCX Tot Cumul").Range("R7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;5;FAUX)"
     
     
    Sheets("MCX Tot Cumul").Range("D8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;11;FAUX)"
    Sheets("MCX Tot Cumul").Range("E8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;12;FAUX)"
    Sheets("MCX Tot Cumul").Range("F8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;13;FAUX)"
     
    Sheets("MCX Tot Cumul").Range("H8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;15;FAUX)"
    Sheets("MCX Tot Cumul").Range("I8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;16;FAUX)"
    Sheets("MCX Tot Cumul").Range("J8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;17;FAUX)"
     
    Sheets("MCX Tot Cumul").Range("P8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;3;FAUX)"
    Sheets("MCX Tot Cumul").Range("Q8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;4;FAUX)"
    Sheets("MCX Tot Cumul").Range("R8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]de'!$A$7:$Q$22;5;FAUX)"
     
    End If
     
    If Sheets("MCX Tot Cumul").[C1] = ("it") Then
     
    Sheets("MCX Tot Cumul").Range("D7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;11;FAUX)"
    Sheets("MCX Tot Cumul").Range("E7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;12;FAUX)"
    Sheets("MCX Tot Cumul").Range("F7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;13;FAUX)"
     
    Sheets("MCX Tot Cumul").Range("H7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;15;FAUX)"
    Sheets("MCX Tot Cumul").Range("I7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;16;FAUX)"
    Sheets("MCX Tot Cumul").Range("J7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;17;FAUX)"
     
    Sheets("MCX Tot Cumul").Range("P7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;3;FAUX)"
    Sheets("MCX Tot Cumul").Range("Q7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;4;FAUX)"
    Sheets("MCX Tot Cumul").Range("R7").FormulaLocal = "=RECHERCHEV(B7;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;5;FAUX)"
     
     
    Sheets("MCX Tot Cumul").Range("D8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;11;FAUX)"
    Sheets("MCX Tot Cumul").Range("E8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;12;FAUX)"
    Sheets("MCX Tot Cumul").Range("F8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;13;FAUX)"
     
    Sheets("MCX Tot Cumul").Range("H8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;15;FAUX)"
    Sheets("MCX Tot Cumul").Range("I8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;16;FAUX)"
    Sheets("MCX Tot Cumul").Range("J8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;17;FAUX)"
     
    Sheets("MCX Tot Cumul").Range("P8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;3;FAUX)"
    Sheets("MCX Tot Cumul").Range("Q8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;4;FAUX)"
    Sheets("MCX Tot Cumul").Range("R8").FormulaLocal = "=RECHERCHEV(B8;'[MCX _ Segment.xlsm]it'!$A$7:$Q$22;5;FAUX)"
     
    End If
     
    End Sub
    Les variables de ma combobox sont assez nombreuses donc quand je les mets toutes c'est trop long!

    Merci!

  2. #2
    Membre habitué
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    essaie ceci:

    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
    Sub test()
     
    Dim Langue As String
    Dim Ligne As Byte
        ComboBox1.RowSource = ("PAYS")
     
        ActiveSheet.[C1] = ComboBox1.Value
     
        Langue = Sheets("MCX Tot Cumul").[C1]
     
        For Ligne = 7 To 8
            Sheets("MCX Tot Cumul").Range("D" & Ligne).FormulaLocal = "=RECHERCHEV(B" & Ligne & ";'[MCX _ Segment.xlsm]" & Langue & "'!$A$7:$Q$22;11;FAUX)"
            Sheets("MCX Tot Cumul").Range("E" & Ligne).FormulaLocal = "=RECHERCHEV(B" & Ligne & ";'[MCX _ Segment.xlsm]" & Langue & "'!$A$7:$Q$22;12;FAUX)"
            Sheets("MCX Tot Cumul").Range("F" & Ligne).FormulaLocal = "=RECHERCHEV(B" & Ligne & ";'[MCX _ Segment.xlsm]" & Langue & "'!$A$7:$Q$22;13;FAUX)"
     
            Sheets("MCX Tot Cumul").Range("H" & Ligne).FormulaLocal = "=RECHERCHEV(B" & Ligne & ";'[MCX _ Segment.xlsm]" & Langue & "'!$A$7:$Q$22;15;FAUX)"
            Sheets("MCX Tot Cumul").Range("I" & Ligne).FormulaLocal = "=RECHERCHEV(B" & Ligne & ";'[MCX _ Segment.xlsm]" & Langue & "'!$A$7:$Q$22;16;FAUX)"
            Sheets("MCX Tot Cumul").Range("J" & Ligne).FormulaLocal = "=RECHERCHEV(B" & Ligne & ";'[MCX _ Segment.xlsm]" & Langue & "'!$A$7:$Q$22;17;FAUX)"
     
            Sheets("MCX Tot Cumul").Range("P" & Ligne).FormulaLocal = "=RECHERCHEV(B" & Ligne & ";'[MCX _ Segment.xlsm]" & Langue & "'!$A$7:$Q$22;3;FAUX)"
            Sheets("MCX Tot Cumul").Range("Q" & Ligne).FormulaLocal = "=RECHERCHEV(B" & Ligne & ";'[MCX _ Segment.xlsm]" & Langue & "'!$A$7:$Q$22;4;FAUX)"
            Sheets("MCX Tot Cumul").Range("R" & Ligne).FormulaLocal = "=RECHERCHEV(B" & Ligne & ";'[MCX _ Segment.xlsm]" & Langue & "'!$A$7:$Q$22;5;FAUX)"
        Next Ligne
    End Sub

  3. #3
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 138
    Points : 9 972
    Points
    9 972
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    j'ai poussé le vice, sauf les trois dernières qui auraient demandé une préparation complexe et pas souple

    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
    Combobox1.RowSource = ("PAYS")
    ActiveSheet.[C1] = Combobox1.Value
     
    With Sheets("MCX Tot Cumul")
        For i = 7 To 8
            For j = 4 To 10
                If j <> 7 Then
                    .Cells(i, j).FormulaLocal = "=RECHERCHEV(B" & i & ";'[MCX _ Segment.xlsm]" & Combobox1.Value & "'!$A$7:$Q$22;" & j + 7 & ";FAUX)"
                End If
            Next j
     
            .Range("P" & i).FormulaLocal = "=RECHERCHEV(B" & i & ";'[MCX _ Segment.xlsm]" & Combobox1.Value & "'!$A$7:$Q$22;3;FAUX)"
            .Range("Q" & i).FormulaLocal = "=RECHERCHEV(B" & i & ";'[MCX _ Segment.xlsm]" & Combobox1.Value & "'!$A$7:$Q$22;4;FAUX)"
            .Range("R" & i).FormulaLocal = "=RECHERCHEV(B" & i & ";'[MCX _ Segment.xlsm]" & Combobox1.Value & "'!$A$7:$Q$22;5;FAUX)"
        Next i
    End With
     
    End Sub

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Super! Merci les gars ça fonctionne parfaitement!

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

Discussions similaires

  1. [XL-2007] besoin d'une idée, d'une méthode pour réduire une procédure trop longue
    Par dmoluc dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/07/2012, 18h56
  2. Une procédure trop longue
    Par lola06 dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/05/2007, 14h02
  3. [Vba access 97] Procédure trop longue
    Par saufffy dans le forum Access
    Réponses: 6
    Dernier message: 26/02/2007, 10h40
  4. [ASE] Procèdure trop longue
    Par Benjamin78 dans le forum Sybase
    Réponses: 2
    Dernier message: 11/04/2006, 10h01
  5. [ASE][T-SQL]Procédure trop longue
    Par Benjamin78 dans le forum Sybase
    Réponses: 5
    Dernier message: 21/03/2006, 12h25

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