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 :

une rechercheV dans une boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Services de proximité

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    Par défaut une rechercheV dans une boucle
    Bonjour,

    Je m'excuse par avance car je suis vraiment un débutant.

    J'ai fais une macro de mise en forme qui mets en forme une feuille Excel à partir des données d'un autre feuille excel (mis en forme en amont).

    Seulement la façon dont je l'ai fait m'oblige a coder chaque ligne A2 - A3 A4 etc donc gérable pour des tableau de 30 50 lignes mais plus compliqué pour 1000.
    J'ai fais un
    DO WHILE
    IF
    ELSE IF (avec un paragraphe ELSE IF par ligne paramétré dans la feuille de référence.
    END IF

    Je me dis que je pourrais plutôt partir sur une rechercheV qui prendra ma ligne A2 et quand il trouvera l'équivalent dans la feuille de référence il fera venir l'information, puis faire une boucle pour qu'il passe a la celulle A3 etc

    mais je n'y arrive pas j'ai essayé la function Vlookup mais sans succès je ne dois pas avoir la gérer


    CI joint le fichier existant - c'est la macro mise en forme

    Merci d'avance pour votre aide

    Cordialement,

    Rémi

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut

    Pas de fichier joint à l'entame d'une discussion svp. Merci de privilégier les copies d'écran et les blocs de code


    Perso, je placerais le RECHERCHEV en une seule passe sur l'ensemble des lignes. Peux-tu donner une copie d'écran de ton tableau?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Services de proximité

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    Par défaut
    Salut,

    Désolé, je pensais que le fichier serait plus parlant mais j'ai pas dû réussir à la joindre (bizarre)

    Ci dessous le code (un peu long)


    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
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    Sub MiseEnFormeBG_Revision()
     
    ' Permet de mettre en forme automatiquement une BG extraite d'arcole qui est collé dans le fichier (colonne A à C)
     
     
    ' 1) Définir les paramètres de la boucle
     
    Dim Ligne As Integer
    Ligne = 2
     
    ' 2) Boucle + IF : Selon le Numéro de compte comptable on applique une couleur de ligne et le remplissage des colonnes D et E
    '    Ces données sont modifiables directement dans Excel dans l'onglet "PARAMETRES" et donc pas besoin de modifier la macro à chaque changement
     
    ' Faire tourner la boucle jusqu'à ce qu'une cellule colonne A soit vide
    Do While Range("A" & Ligne) <> ""
    ' Si la cellule A est comprise entre les cellules A et B des paramètres
    If Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A2") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B2") Then
    ' Alors s'applique les choses suivantes :
    '       Colorier la ligne de la couleur choisie dans l'onglet Excel PARAMETRES
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C2").Interior.Color
    '       Remplir les cellules colonne D et E en recopiant ce qui est marqué dans l'onglet Excel PARAMETRES tout en conservant les formats (gras, couleur etc)
        Worksheets("PARAMETRES").Range("D2", "G2").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
     
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A3") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B3") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C3").Interior.Color
        Worksheets("PARAMETRES").Range("D3", "G3").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A4") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B4") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C4").Interior.Color
        Worksheets("PARAMETRES").Range("D4", "G4").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A5") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B5") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C5").Interior.Color
        Worksheets("PARAMETRES").Range("D5", "G5").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A6") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B6") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C6").Interior.Color
        Worksheets("PARAMETRES").Range("D6", "G6").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A7") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B7") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C7").Interior.Color
        Worksheets("PARAMETRES").Range("D7", "G7").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A8") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B8") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C8").Interior.Color
        Worksheets("PARAMETRES").Range("D8", "G8").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A9") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B9") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C9").Interior.Color
        Worksheets("PARAMETRES").Range("D9", "G9").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A10") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B10") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C10").Interior.Color
        Worksheets("PARAMETRES").Range("D10", "G10").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A11") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B11") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C11").Interior.Color
        Worksheets("PARAMETRES").Range("D11", "G11").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A12") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B12") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C12").Interior.Color
        Worksheets("PARAMETRES").Range("D12", "G12").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A13") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B13") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C13").Interior.Color
        Worksheets("PARAMETRES").Range("D13", "G13").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A14") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B14") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C14").Interior.Color
        Worksheets("PARAMETRES").Range("D14", "G14").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A15") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B15") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C15").Interior.Color
        Worksheets("PARAMETRES").Range("D15", "G15").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A16") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B16") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C16").Interior.Color
        Worksheets("PARAMETRES").Range("D16", "G16").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A17") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B17") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C17").Interior.Color
        Worksheets("PARAMETRES").Range("D17", "G17").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A18") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B18") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C18").Interior.Color
        Worksheets("PARAMETRES").Range("D18", "G18").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A19") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B19") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C19").Interior.Color
        Worksheets("PARAMETRES").Range("D19", "G19").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A20") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B20") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C20").Interior.Color
        Worksheets("PARAMETRES").Range("D20", "G20").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A21") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B21") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C21").Interior.Color
        Worksheets("PARAMETRES").Range("D21", "G21    ").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A22") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B22") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C22").Interior.Color
        Worksheets("BG").Range("D" & Ligne) = Worksheets("PARAMETRES").Range("D22")
        Worksheets("PARAMETRES").Range("D22", "G22").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A23") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B23") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C23").Interior.Color
        Worksheets("PARAMETRES").Range("D23", "G23").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A24") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B24") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C24").Interior.Color
        Worksheets("PARAMETRES").Range("D24", "G24").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A25") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B25") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C25").Interior.Color
        Worksheets("PARAMETRES").Range("D25", "G25").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A26") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B26") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C26").Interior.Color
        Worksheets("PARAMETRES").Range("D26", "G26").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A27") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B27") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C27").Interior.Color
        Worksheets("PARAMETRES").Range("D27", "G27").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A28") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B28") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C28").Interior.Color
        Worksheets("PARAMETRES").Range("D28", "G28").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A29") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B29") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C29").Interior.Color
        Worksheets("PARAMETRES").Range("D29", "G29").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A30") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B30") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C30").Interior.Color
        Worksheets("PARAMETRES").Range("D30", "G30").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A31") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B31") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C31").Interior.Color
        Worksheets("PARAMETRES").Range("D31", "G31").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A32") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B32") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C32").Interior.Color
        Worksheets("PARAMETRES").Range("D32", "G32").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A33") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B33") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C33").Interior.Color
        Worksheets("PARAMETRES").Range("D33", "G33").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A34") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B34") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C34").Interior.Color
        Worksheets("PARAMETRES").Range("D34", "G34").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A35") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B35") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C35").Interior.Color
        Worksheets("PARAMETRES").Range("D35", "G35").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A36") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B36") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C36").Interior.Color
        Worksheets("PARAMETRES").Range("D36", "G36").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A37") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B37") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C37").Interior.Color
        Worksheets("PARAMETRES").Range("D37", "G37").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A38") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B38") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C38").Interior.Color
        Worksheets("PARAMETRES").Range("D38", "G38").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A39") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B39") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C39").Interior.Color
        Worksheets("PARAMETRES").Range("D39", "G39").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A40") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B40") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C40").Interior.Color
        Worksheets("PARAMETRES").Range("D40", "G40").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A41") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B41") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C41").Interior.Color
        Worksheets("PARAMETRES").Range("D41", "G41").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A42") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B42") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C42").Interior.Color
        Worksheets("PARAMETRES").Range("D42", "G42").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A43") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B43") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C43").Interior.Color
        Worksheets("PARAMETRES").Range("D43", "G43").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A44") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B44") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C44").Interior.Color
        Worksheets("PARAMETRES").Range("D44", "G44").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A45") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B45") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C45").Interior.Color
        Worksheets("PARAMETRES").Range("D45", "G45").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A46") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B46") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C46").Interior.Color
        Worksheets("PARAMETRES").Range("D46", "G46").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A47") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B47") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C47").Interior.Color
        Worksheets("PARAMETRES").Range("D47", "G47").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A48") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B48") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C48").Interior.Color
        Worksheets("PARAMETRES").Range("D48", "G48").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A49") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B49") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C49").Interior.Color
        Worksheets("PARAMETRES").Range("D49", "G49").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A50") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B50") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C50").Interior.Color
        Worksheets("PARAMETRES").Range("D50", "G50").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A51") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B50") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C51").Interior.Color
        Worksheets("PARAMETRES").Range("D51", "G51").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A52") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B50") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C52").Interior.Color
        Worksheets("PARAMETRES").Range("D52", "G52").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
    ElseIf Worksheets("BG").Range("A" & Ligne) >= Worksheets("PARAMETRES").Range("A53") And Worksheets("BG").Range("A" & Ligne) <= Worksheets("PARAMETRES").Range("B50") Then
        Worksheets("BG").Rows(Ligne).Interior.Color = Worksheets("PARAMETRES").Range("C53").Interior.Color
        Worksheets("PARAMETRES").Range("D53", "G53").Copy Destination:=Worksheets("BG").Range("D" & Ligne, "E" & Ligne)
     
     
     
     
     
     
    Else
        Worksheets("BG").Rows(Ligne).Interior.Color = vbWhite
    End If
    Range("J" & Ligne).FormulaR1C1 = "=RC[-2]-RC[-1]"
    Ligne = Ligne + 1
    Loop
     
    ' Mise en forme conditionnelle 1ere condition : si NOK en colonne D --> la ligne se mets en rouge clair
    Columns("A:G").Select
        Range("D2").Activate
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=$D1=""NOK"""
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent2
            .TintAndShade = 0.399945066682943
        End With
        Selection.FormatConditions(1).StopIfTrue = False
     
    ' Mise en forme conditionnelle 2eme condition : si OK en colonne D --> la ligne se mets en vert clair
    Columns("A:G").Select
        Range("D2").Activate
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=$D1=""OK"""
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent6
            .TintAndShade = 0.399945066682943
        End With
        Selection.FormatConditions(1).StopIfTrue = False
     
     
    End Sub

    Ci desous le tableau : 5 colonne et en fait j'essaie de faire venir de la mise en forme et des informations d'un autre tableau

    Compte Nouveau solde Libellé OK / NOK Contrôle / Justificatifs
    101300 -500004 CAPITAL SOUSCRIT APPELE VERSE
    104100 -1395323,29 PRIMES D EMISSION
    105200 -5204,61 ECART DE REEVALUATION LIBRE
    106110 -138774,34 RESERVE LEGALE PROPREMENT DITE
    106480 -5411,33 AUTRES RESERVES REGLEMENTAIRES
    106800R -4306468,3 ECART DE RETRAITEMENT
    117000R 120436,97 OCI PERTES / GAINS ACTUARIEL RET
    117100R -31734,69 OCI PGA IMPOTS DIFFERES
    119000 1177690,2 REPORT A NOUVEAU DEBITEUR
    125000R -430123,72 RESULTAT DE RETRAITMTS EXERCICE
    129000 2581526,8 RESULTAT DE L EXERCICE PERTE
    131900R 333063 SUBVENTION D INVESTISSEMENT
    139900R -333063,04 SUB INVESTISSEMENT INSC RESULTAT
    145000 -654539,08 AMORTISSEMENTS DEROGATOIRES
    145010R 654539,08 AMORTISSEMENTS DEROGATOIRES
    153000R -548759,92 PROVISIONS POUR PENS ET RETRAI
    153100 -41068,6 PROVISIONS AUTRES ENG COLLECTIFS
    157300 -21151,56 PROVISIONS SUIVI LONG TERME
    157300R -4022606,44 PROVISIONS SUIVI LONG TERME
    169000R -223200 Dettes sur location
    203000 9908 FRAIS DE RECHERCHE ET DEVELOPPEM


    Merci de ton aide

    Cordialement,

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ton code est imbuvable

    A mon avis, vu ton code, tu devrais travailler avec des tableaux structurés.

    Ne pourrais-tu pas t'orienter vers de la mise en forme conditionnelle? Excel dispose d'un outil qui me semble puissant et qui pourrait répondre à ton besoin, pour peu que tu l'expliques en français (i.e. sans jargon technique ou informatique).


    Si on veut pouvoir "gérer" les formats à la volée sans devoir aller modifier les MFC, on pourrait utiliser le code suivant, sur base des deux tableaux illustrés (le tableau des contacts t_Contacts et le tableau des formats t_Formats). L'idée est de placer les formats dans un tableau avec des conditions (ici, simples avec une simple recherche sur le service, mais on peut chercher par plage de montants, etc)...

    Nom : 2021-05-07_101825.png
Affichages : 146
Taille : 9,0 Ko


    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
    Sub MiseEnForme()
      Dim cr As Long
      Dim fr As Long
      Dim FormatRange As Range
      Dim f As Font
      For cr = 1 To Range("t_Contacts").Rows.Count
        fr = Application.Match(Range("t_Contacts[service]")(cr).Value, Range("t_formats[Service]"), 0)
        Set FormatRange = Range("t_Formats[Format]")(fr)
        With Range("t_Contacts").ListObject.ListRows(cr).Range
          .Font.Bold = FormatRange.Font.Bold
          .Font.Italic = FormatRange.Font.Italic
          .Font.Color = FormatRange.Font.Color
          .Interior.Color = FormatRange.Interior.Color
        End With
      Next cr
    End Sub
    Le code est à adapter à ton cas, évidemment, notamment si tu veux transférer autre chose du format modèle.


    PS: Je ne suis pas un Picasso des tableaux Excel, les couleurs utilisées ici le sont à titre d'exemple
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Services de proximité

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    Par défaut
    Je vais essayer le code, ça a l'air de correspondre à ce que je recherche.

    Merci beaucoup

    Cordialement,
    Rémi

  6. #6
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Services de proximité

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    Par défaut
    Si mes 2 tableaux sont sur 2 feuilles différentes, dois je adapté ? mettre Worksheets.Range ?
    Ou le fait que ce soit un tableau il trouve de suite ? car j'ai un petit bug

    Cordialement,
    Rémi

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    L'avantage des tableaux, c'est que leur nom est unique dans le classeur, de sorte que tu peux les déplacer où tu veux sans perturber l'exécution de ton code. C'est un des très gros avantages des tableaux structurés en VBA.

    Quel bug rencontres-tu? Quel code as-tu utilisé?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Services de proximité

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    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
    Sub MiseEnFormeBG_Revision()
     
      Dim cr As Long
      Dim fr As Long
      Dim FormatRange As Range
      Dim f As Font
      For cr = 1 To Range("t_BG").Rows.Count
        fr = Application.Match(Range("t_BG[Compte]")(cr).Value, Range("t_PARAMETRES[Compte]"), 0)
        Set FormatRange = Range("t_PARAMETRES[Justificatifs]")(fr)
        With Range("t_BG").ListObject.ListRows(cr).Range
          .Font.Bold = FormatRange.Font.Bold
          .Font.Italic = FormatRange.Font.Italic
          .Font.Color = FormatRange.Font.Color
          .Interior.Color = FormatRange.Interior.Color
        End With
     Next cr
     
    End Sub

    Je suppose que j'ai pas renommé les tableaux comme il faut.
    je sélectionne le tableau et je renomme dans la cellule en haut a gauche.

    Cette ligne revient en erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fr = Application.Match(Range("t_BG[Compte]")(cr).Value, Range("t_PARAMETRES[Compte]"), 0)
    Cordialement,

  9. #9
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Services de proximité

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    L'avantage des tableaux, c'est que leur nom est unique dans le classeur, de sorte que tu peux les déplacer où tu veux sans perturber l'exécution de ton code. C'est un des très gros avantages des tableaux structurés en VBA.

    Quel bug rencontres-tu? Quel code as-tu utilisé?

    Salut,

    En fait, je souhaitais aussi copier le texte d'une cellule du tableau dans l'autre par la même occasion
    mais il faut que le N° de compte corresponde.

    Est ce possible en même temps que le format ?

    j'ai essayé avec Copy mais ça n'a pas marché

    Cordialement,

    Rémi

Discussions similaires

  1. [XL-2003] RechercheV n'est pas exprimée dans une boucle
    Par comme de bien entendu dans le forum Excel
    Réponses: 2
    Dernier message: 05/05/2010, 11h37
  2. mettre une boucle dans une recherchev
    Par robbillard dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/06/2007, 17h15
  3. swf dans une boucle asp
    Par Chucky69 dans le forum Flash
    Réponses: 11
    Dernier message: 10/02/2004, 18h07
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 15h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 09h52

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