Etirer des valeurs sur plusieurs lignes VBA

Bonjour à vous, je suis débutant dans ce langage VBA et je dois bien avouer que ce forum m’apporte beaucoup d’aide mais là j’ai un point bloquant…

Je vais expliquer mon code en image c’est sans doute plus simple

Pour ma part étant débutant, c’est assez complexe est assez difficile à réaliser…

J’ai déjà commencé et souhaite garder la possibilité de changer les valeurs des variables

Je vous en serai très reconnaissant 😊

Le but du code :

- Pour le premier cas, rechercher dans la colonne B sur la feuille « Trame EMCAT Géo », le numéro de PK égale à la valeur de la feuille « Valeurs géo et Hauteur » en cellule G2 (encadré orange)

Une fois recherche : copier les valeurs en (encadré vert clair, cellule E2 et E3) de la feuille « Valeurs géo et Hauteur » sur la ligne associé au PK en encadré rouge de la feuille « Trame EMCAT Géo » et les coller à côté (encadré vert).

Ensuite étiré les valeurs de l’encadré vert de 20 lignes en haut et 20 lignes en dessous

- Deuxième cas faire la même chose que précédemment avec le PK de la cellule G3 de la feuille Valeurs Géo et Hauteur.

- Et ainsi de suite

- Effectuer cette opération autant de fois qu’il a de valeurs PK dans la feuille Trame EMCAT Géo qui correspondant avec la Valeur associé de la cellule dans la colonne G.

- Pour les plus expérimentées je ne souhaite ne pas dépasser l’encadré rouge dans mon fichier Excel lorsqu’on étirer les valeurs du PK, si possible

J’espère que vous avez compris mon objectif dans ce code, je vous transmets toutes les informations nécessaires.

Si vous avez des formules ou des fonctions associées à ma demande, je vous remercie ! et merci pour le temps consacré :)

Code :

Sub Fusion()
Dim i%, j%, k%, m%
Dim WS_S As Worksheet
Set WS_S = Worksheets("Valeurs Géo et Hauteur") 'Défini l'objet WS comme la feuille valeur géo et hauteur
i = 15 'Défini la variable i comme 15, soit la première colonne à contrôler de la feuille trame EMCAT GEO
k = 2 'Defini la variable k comme 2, soit la ligne  à contrôler de la feuille trame EMCAT GEO

m = 20 'Etendre les valeurs de la feuille Trame EMCAT GEO de 20 lignes au dessus et en dessous

j = 2 'Défini la variable j comme 2, soit la première ligne à charger la feuille valeur géo et hauteur

With Worksheets("Trame EMCAT GEO") 'Avec la feuille trame EMCAT GEO
    While .Cells(i, k) <> "" 'Tant que la cellule de la 1ère colonne n'est pas vide
        If .Cells(i, k) = Worksheets("Valeur Géo et Hauteur").Cells(j, 7) Then 'Si la valeur de la cellule de la deuxieme colonne est égale a la valeur de l'autre feuille (PK)
        .Cells(i, 3) = WS_S.Cells(j, 5) 'Remplace la valeur de la 3ème colonne contenue, 5 de la feuille valeur géo et hauteur

        .Range (Cells(i,3),Cells(i + m,3)= .Cells(i, 3) 'Etendre la valeur de 20 lignes au dessus (Code faux)
        .Range (Cells(i,3),Cells(i - m,3)= .Cells(i, 3) 'Etendre la valeur de 20 lignes en dessous

        .Cells(i, 4) = WS_S.Cells(j, 6) ' Remplace la valeur de la 4 eme colonne contenue dans la 6 de la feuille valeur géo et hauteur 

        .Range (Cells(i,4),Cells(i + m,4)= .Cells(i, 4)
        .Range (Cells(i,4),Cells(i - m,4)= .Cells(i, 4)

        j = j + 1 'Incrémente j, donc j = E3

        End If
        i = i + 1 'Incrément i pour passer à la ligne suivante
    Wend 'Exécute la boucle tant que la cellule Ai n'est pas vide

End With
End Sub

Feuille Valeurs Géo et Hauteur :

feuille valeurs geo et hauteur 3

Feuille Trame EMCAT GEO 1 er PK :

feuille trame emcat geo 7

Feuille Trame EMCAT GEO 2eme PK suivant :

feuille trame emcat geo 5

Hello,

J'ai absolument rien compris à ton cas 1 et j'ai par conséquent même pas cherché à regarder le cas 2 ....

Premièrement dans ton fichier on a pas en feuille : Valeurs géo et Hauteur la colonne des PK ...ça commence mal

Deuxièmement, je comprends pas cette histoire des 20 lignes ... dans ton exemple (image) on pas le même numéro de PK ni les même num hauteur et desaxement ...

Rechercher des sujets similaires à "etirer valeurs lignes vba"