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 :

[E-07]Peut-on améliorer ce code?


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut [E-07]Peut-on améliorer ce code?
    slt à tous,
    comme beaucoup je suis novice en vba, autodidacte, et j'ai écris un code qui me permet de copier des données d'une feuille dans une autre puis de les envoyer dans d'autres classeurs. ce code fonctione très bien mais il y a des contraintes et est certainement très lourd.
    le voici:
    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
    Sub Copierdonnées()
    '
     
    'Je copie les données sur la feuil3
     
     Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=3, Criteria1:="PP"
     
        ActiveSheet.ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "AH"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B2].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "BJ"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B15].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "BL"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B28].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "BS"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B41].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "GF"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B54].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "GV"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B67].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "GFa"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B80].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "LV"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B93].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "MC"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B106].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "SK"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B119].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=2, Criteria1:= _
            "YA"
     
    [Bd].Cells.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Feuil3").[B132].PasteSpecial Paste:=xlPasteValues
     
    Sheets("Bd").ListObjects("Bd").Range.AutoFilter Field:=3
        ActiveSheet.ListObjects("Bd").Range.AutoFilter Field:=2
    [B4].Select
     
     
    'Ouvrir les classeurs destinés à recevoir les données
        'Workbooks (1)= déjà ouvert
        'Ouverture de workbooks (2)
        Workbooks.Open Filename:= _
            "C:\...\fpp.xlsx"
     
        'Ouverture de Workbooks (3)
         Workbooks.Open Filename:= _
            "C:\...\SsPP.xlsx"
     
     'Les ranger en cascade horizontal
     
        Windows.Arrange ArrangeStyle:=xlHorizontal
     
    'je copie l'activité de chaque pionnier dans leur fiche individuelle
    'ainsi que dans le suivi de leur objectif.
     
    Workbooks(1).Worksheets("Feuil3").[E2:K13].Copy
    Workbooks(2).Worksheets("Ha").[B6].PasteSpecial Paste:=xlPasteValues
    Workbooks(1).Worksheets("Feuil3").[G2:G13].Copy
    Workbooks(3).Worksheets("APP").[B3].PasteSpecial Paste:=xlPasteValues
     
    Workbooks(1).Worksheets("Feuil3").[E15:K26].Copy
    Workbooks(2).Worksheets("Je").[B6].PasteSpecial Paste:=xlPasteValues
    Workbooks(1).Worksheets("Feuil3").[G15:G26].Copy
    Workbooks(3).Worksheets("APP").[C3].PasteSpecial Paste:=xlPasteValues
     
    Workbooks(1).Worksheets("Feuil3").[E28:K39].Copy
    Workbooks(2).Worksheets("La").[B6].PasteSpecial Paste:=xlPasteValues
    Workbooks(1).Worksheets("Feuil3").[G28:G39].Copy
    Workbooks(3).Worksheets("APP").[D3].PasteSpecial Paste:=xlPasteValues
     
    Workbooks(1).Worksheets("Feuil3").[E41:K52].Copy
    Workbooks(2).Worksheets("Sy").[B6].PasteSpecial Paste:=xlPasteValues
    Workbooks(1).Worksheets("Feuil3").[G41:G52].Copy
    Workbooks(3).Worksheets("APP").[E3].PasteSpecial Paste:=xlPasteValues
     
    Workbooks(1).Worksheets("Feuil3").[E54:K65].Copy
    Workbooks(2).Worksheets("Fr").[B6].PasteSpecial Paste:=xlPasteValues
    Workbooks(1).Worksheets("Feuil3").[G54:G65].Copy
    Workbooks(3).Worksheets("APP").[F3].PasteSpecial Paste:=xlPasteValues
     
    Workbooks(1).Worksheets("Feuil3").[E67:K78].Copy
    Workbooks(2).Worksheets("Vi").[B6].PasteSpecial Paste:=xlPasteValues
    Workbooks(1).Worksheets("Feuil3").[G67:G78].Copy
    Workbooks(3).Worksheets("APP").[G3].PasteSpecial Paste:=xlPasteValues
     
    Workbooks(1).Worksheets("Feuil3").[E80:K91].Copy
    Workbooks(2).Worksheets("Fa").[B6].PasteSpecial Paste:=xlPasteValues
    Workbooks(1).Worksheets("Feuil3").[G80:G91].Copy
    Workbooks(3).Worksheets("APP").[H3].PasteSpecial Paste:=xlPasteValues
     
    Workbooks(1).Worksheets("Feuil3").[E93:K104].Copy
    Workbooks(2).Worksheets("Vir").[B6].PasteSpecial Paste:=xlPasteValues
    Workbooks(1).Worksheets("Feuil3").[G93:G104].Copy
    Workbooks(3).Worksheets("APP").[I3].PasteSpecial Paste:=xlPasteValues
     
     
    Workbooks(1).Worksheets("Feuil3").[E106:K117].Copy 
    Workbooks(2).Worksheets("Ca").[B6].PasteSpecial Paste:=xlPasteValues 
    Workbooks(1).Worksheets("Feuil3").[G106:G117].Copy 
    Workbooks(3).Worksheets("APP").[J3].PasteSpecial Paste:=xlPasteValues 
     
    Workbooks(1).Worksheets("Feuil3").[E119:K130].Copy
    Workbooks(2).Worksheets("Ka").[B6].PasteSpecial Paste:=xlPasteValues
    Workbooks(1).Worksheets("Feuil3").[G119:G130].Copy
    Workbooks(3).Worksheets("APP").[K3].PasteSpecial Paste:=xlPasteValues
     
    Workbooks(1).Worksheets("Feuil3").[E132:K143].Copy
    Workbooks(2).Worksheets("Ab").[B6].PasteSpecial Paste:=xlPasteValues
    Workbooks(1).Worksheets("Feuil3").[G132:G143].Copy
    Workbooks(3).Worksheets("APP").[L3].PasteSpecial Paste:=xlPasteValues
     
    [D20].Select
     
     
    Workbooks(1).Worksheets("Feuil3").Activate
    [A:L].Select
        Application.CutCopyMode = False
        Selection.ClearContents
        [A1].Select
        Sheets("Bd").Select
     
     
    End Sub
    je travaille sur le moyen de créer une boucle à partir de la feuille source ,ici Bd, afin de coller directement les données dans les 2 autres classeurs.
    j'ai une piste que mon donné casefayere et qwzaerty j'ai presque fini de l'écrire.
    Que puis-je faire?

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut code améliorer
    re j'ai pu améliorer mon code et il fonctionne très bien. Mais comme je veux pas mourir bête j'aimerais avoir votre avis sur ce qu'il est possible d'améliorer. Le voici:
    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
    Sub PP()
     
     
    Application.ScreenUpdating = False
    'Ouvrir les classeurs destinés à recevoir les données
        'Workbooks (1)= déjà ouvert
        'Ouverture de workbooks (2)
        Workbooks.Open Filename:= _
            "C:\...\fpp.xlsx"
     
        'Ouverture de Workbooks (3)
         Workbooks.Open Filename:= _
            "C:\...\SsPP.xlsx"
     
     'Les ranger en cascade horizontal
     
       Windows.Arrange ArrangeStyle:=xlHorizontal
     
     
     
    Dim x As Integer, y As Integer, z As Integer
    Dim Bd As Worksheet
     Set Bd = Workbooks(1).Worksheets("Bd")
     
    z = 6
    x = 3
    With Bd
    For y = 4 To Bd.Cells(Rows.Count, "C").End(xlUp).Row
    If .Range("C" & y) = "AH" Then
        Workbooks(2).Sheets("HA").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("HA").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("HA").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("HA").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("HA").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("HA").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("HA").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("B" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "BJ" Then
        Workbooks(2).Sheets("JE").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("JE").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("JE").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("JE").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("JE").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("JE").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("JE").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("C" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "BL" Then
        Workbooks(2).Sheets("LA").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("LA").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("LA").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("LA").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("LA").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("LA").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("LA").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("D" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "BS" Then
        Workbooks(2).Sheets("SY").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("SY").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("SY").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("SY").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("SY").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("SY").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("SY").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("E" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "GFr" Then
        Workbooks(2).Sheets("FR").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("FR").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("FR").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("FR").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("FR").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("FR").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("FR").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("F" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "GV" Then
        Workbooks(2).Sheets("VI").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("VI").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("VI").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("VI").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("VI").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("VI").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("VI").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("G" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "GFa" Then
        Workbooks(2).Sheets("FA").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("FA").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("FA").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("FA").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("FA").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("FA").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("FA").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("H" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "LV" Then
        Workbooks(2).Sheets("VIR").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("VIR").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("VIR").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("VIR").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("VIR").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("VIR").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("VIR").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("I" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "MC" Then
        Workbooks(2).Sheets("CA").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("CA").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("CA").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("CA").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("CA").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("CA").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("CA").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("J" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "SK" Then
        Workbooks(2).Sheets("KA").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("KA").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("KA").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("KA").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("KA").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("KA").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("KA").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("K" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "YA" Then
        Workbooks(2).Sheets("AB").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("AB").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("AB").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("AB").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("AB").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("AB").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("AB").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("L" & x) = .Range("G" & y)
     
    z = z + 1
    x = x + 1
    End If
    Next y
    End With
     
     
    Application.ScreenUpdating = True
    End Sub
    un grand merci à casefayere et qwzaerty qui m'ont donné la piste pour l'écrire.

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    rien que pour cette partie, ajouter une boucle avec une autre variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Workbooks(2).Sheets("HA").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("HA").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("HA").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("HA").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("HA").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("HA").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("HA").Range("H" & z) = .Range("K" & y)
    PEUT DEVENIR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for ex = 2 to 8
      Workbooks(2).Sheets("HA").cells(z, ex) = .cells(y,ex+3)
       next ex
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    j'ai oublié de dire que la solution que je te propose est à adapter au reste du code, passes par cells plutot que range

    a+
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    slt casefayere,
    donc en fait cette boucle évite de répéter x fois
    workbooks (2).Etc........

    Il faut que je la repète pour chaque changement de critère, si j'ai bien compris?
    et conserve :
    workbooks (3)

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    si ce sont des classeurs differents, laisse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for ex = 2 to 8
      Workbooks(2).Sheets("HA").cells(z, ex) = .cells(y,ex+3)
      Workbooks(3).Sheets("APP").Range("B" & x) = .Range("G" & y)
     
    ElseIf .Range("C" & y) = "BJ" Then
        Workbooks(2).Sheets("JE").cells(z,ex) = .cells(y,ex + 3)
       Workbooks(3).Sheets("APP").Range("C" & x) = .Range("G" & y)
    et ainsi de suite
    next ex
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Pourrais tu mettre un fichier excel avec ce que tu souhaites faire, il y a sans doute une logique qui peut être mise en place pour simplifier tout ça.

    Sinon une petit chose, je pense qu'il vaut mieux éviter de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorkBook(1)...(2)...etc
    Il est préférable de mettre le nom du fichier, ça évite un résultat plutôt chaotique si un fichier venait a rester ouvert au moment du lancement de la macro.
    [Edit]
    Tu as aussi cette possibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(2).Sheets("HA").Range("B" & z & ":H" & z).value = .Range("E" & y & ":K" & y).value
    qui ne nécessite pas de boucle (je l'ai pas testé, je vais quand même le faire) -> j'ai bien fait il faut mettre . value(c corrigé sur la ligne au dessus).
    [/Edit]
    [Edit2]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ElseIf .Range("C" & y) = "YA" Then
        Workbooks(2).Sheets("AB").Range("B" & z) = .Range("E" & y)
        Workbooks(2).Sheets("AB").Range("C" & z) = .Range("F" & y)
        Workbooks(2).Sheets("AB").Range("D" & z) = .Range("G" & y)
        Workbooks(2).Sheets("AB").Range("E" & z) = .Range("H" & y)
        Workbooks(2).Sheets("AB").Range("F" & z) = .Range("I" & y)
        Workbooks(2).Sheets("AB").Range("G" & z) = .Range("J" & y)
        Workbooks(2).Sheets("AB").Range("H" & z) = .Range("K" & y)
        Workbooks(3).Sheets("APP").Range("L" & x) = .Range("G" & y)
     
    z = z + 1
    x = x + 1
    End If
    Ceci me semble bizarre, ne faudrait il pas mettre z=... et x = ... apres End If ?
    [/Edit2]

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    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
    With Bd
        For y = 4 To .Cells(Rows.Count, "C").End(xlUp).Row
            If .Range("C" & y) = "AH" Then
                'Workbooks(2).Sheets("HA").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("HA").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("HA").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("HA").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("HA").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("HA").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("HA").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("HA").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("B" & x) = .Range("G" & y)
     
            ElseIf .Range("C" & y) = "BJ" Then
                'Workbooks(2).Sheets("JE").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("JE").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("JE").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("JE").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("JE").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("JE").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("JE").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("JE").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("C" & x) = .Range("G" & y)
     
            ElseIf .Range("C" & y) = "BL" Then
                'Workbooks(2).Sheets("LA").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("LA").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("LA").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("LA").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("LA").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("LA").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("LA").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("LA").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("D" & x) = .Range("G" & y)
     
            ElseIf .Range("C" & y) = "BS" Then
                'Workbooks(2).Sheets("SY").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("SY").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("SY").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("SY").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("SY").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("SY").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("SY").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("SY").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("E" & x) = .Range("G" & y)
     
            ElseIf .Range("C" & y) = "GFr" Then
                'Workbooks(2).Sheets("FR").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("FR").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("FR").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("FR").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("FR").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("FR").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("FR").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("FR").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("F" & x) = .Range("G" & y)
     
            ElseIf .Range("C" & y) = "GV" Then
                'Workbooks(2).Sheets("VI").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("VI").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("VI").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("VI").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("VI").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("VI").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("VI").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("VI").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("G" & x) = .Range("G" & y)
     
            ElseIf .Range("C" & y) = "GFa" Then
                'Workbooks(2).Sheets("FA").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("FA").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("FA").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("FA").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("FA").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("FA").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("FA").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("FA").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("H" & x) = .Range("G" & y)
     
            ElseIf .Range("C" & y) = "LV" Then
                'Workbooks(2).Sheets("VIR").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("VIR").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("VIR").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("VIR").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("VIR").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("VIR").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("VIR").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("VIR").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("I" & x) = .Range("G" & y)
     
            ElseIf .Range("C" & y) = "MC" Then
                'Workbooks(2).Sheets("CA").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("CA").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("CA").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("CA").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("CA").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("CA").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("CA").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("CA").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("J" & x) = .Range("G" & y)
     
            ElseIf .Range("C" & y) = "SK" Then
                'Workbooks(2).Sheets("KA").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("KA").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("KA").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("KA").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("KA").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("KA").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("KA").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("KA").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("K" & x) = .Range("G" & y)
     
            ElseIf .Range("C" & y) = "YA" Then
                'Workbooks(2).Sheets("AB").Range("B" & z) = .Range("E" & y)
                'Workbooks(2).Sheets("AB").Range("C" & z) = .Range("F" & y)
                'Workbooks(2).Sheets("AB").Range("D" & z) = .Range("G" & y)
                'Workbooks(2).Sheets("AB").Range("E" & z) = .Range("H" & y)
                'Workbooks(2).Sheets("AB").Range("F" & z) = .Range("I" & y)
                'Workbooks(2).Sheets("AB").Range("G" & z) = .Range("J" & y)
                'Workbooks(2).Sheets("AB").Range("H" & z) = .Range("K" & y)
                Workbooks(2).Sheets("AB").Range("B" & z & ":H" & z) = .Range("E" & y & ":K" & y)
                Workbooks(3).Sheets("APP").Range("L" & x) = .Range("G" & y)
     
            End If
            'Hummm ici non ? plutot qu'au dessus ?
            z = z + 1
            x = x + 1
     
        Next y
    End With

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  9. #9
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Merci vous êtes au top.
    je viens d'appliquer la solution de Qwazerty, sans oublier les .value et elle fonctionne très bien mais uniquement si:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    z = z + 1
    x = x + 1
    End If
     
    Next y
    ne me demande pas pourquoi si je met le z=... zt x=... sous End if il colle les données n'importe où dans mes classeurs.

    une question quant au
    si j'utilise cette synthaxe faut-il que mes autres classeurs soient ouvert?

    je vais maintenant essayer d'adapter la boucle de casefayere pour comparer ça me fera un bon exercice.
    merci

  10. #10
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Re
    Pour le x et y, c'etait une suggestion, je n'ai pas trop regardé la logic du code en faite.
    Pour ce qui est du WorkBook(...), oui ca ne change rien, le classeur doit être ouvert, il existe des méthodes sans ouvrir le classeur (voir dans la FAQ) mais c'est peut être uniquement pour lire des données et non pas pour les saisir, je ne me souviens plus tres bien.
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut Amélioration terminée
    bonjour, je vous remercie pour votre aide comme je le disais j'ai pu encore apprendre pleins de truc grâce à vous.

    Je peux dire que ma discution est résolue.
    A+ sur une autre discution.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/09/2011, 11h08
  2. Est ce que ce code peut être amélioré ?
    Par _s4z_ dans le forum Langage
    Réponses: 3
    Dernier message: 04/09/2010, 13h51
  3. [Toutes versions] Peut on améliorer ce code
    Par johannj dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2009, 15h09
  4. [Optimisation]Peut-on améliorer ce code ?
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 09/08/2007, 16h43
  5. [EclipseUml] Peut-on générer le code ?
    Par Dof dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 05/06/2003, 16h21

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