Decoupe ligne en fonction de sa valeur dans un champs et insertion

nypon

XLDnaute Nouveau
Bonsoir,

Je suis débutant en VBA mais j'ai un peu lu les tutos.

Je souhaite automatiser la copie/découpe des données d'une feuille à l'autre en fonction des enregistrements déjà présents.

Je m'explique, j'ai un dossier de travail avec trois feuilles (cf. pièces jointes).
  • la première contient des régions avec un identifiant, un nom, un niveau de pluviometrie et une situation de risque

    1256742967.gif
  • La seconde contient les régions et leur identifiant ainsi que leurs villes

    1256743037.gif
  • La Troisième, le résultat que je souhaite.

    1256743078.gif

Voici le but ultime :
Je voudrais en VBA prendre les lignes dans la feuille 1, et les copier sous les lignes de même identifiant dans la feuille 2. Mais j'ai plusieurs fois le même identifiant dans la feuille 1. Je veux donc copier les lignes de la feuille 2 d'un identifiant sous l'insertion que je viens de réaliser tant qu'il y a des données de même identifiant dans la feuille deux. ensuite, je passe au second identifiant.

Voici ce que j'ai fait pour l'instant en créant une nouvelle macro :
Code:
Sub Macro1()

'Macro1 enregistrée le 28/10/2009

'Selection de la Première feuille de données
'et de la ligne qui m'intéresse
'decoupe de cette ligne

Sheets("Feuil1").Select
    Rows("2:2").Select
    Selection.Cut
    
'Selection de la seconde feuille et insertion de la ligne à la ligne 24
'coloration rouge pour voir si le boulot est bien fait

Sheets("Feuil2").Select
    Rows("7:7").Select
    Selection.Insert Shift:=xlDown
        With Selection.Interior
            .ColorIndex = 3
            .Pattern = xlSolid
        End With
        
'Selection du bloc de données au dessus de la ligne insérée
'et insertion du bloc sous la ligne insérée en rouge

    Rows("2:6").Select
    Selection.Copy
    Rows("8:8").Select
    Selection.Insert Shift:=xlDown

'Selection de la première feuille de données
'et de la 2eme ligne qui m'intéresse
'decoupe de cette ligne

Sheets("Feuil1").Select
    Rows("3:3").Select
    Application.CutCopyMode = False
    Selection.Cut
    
'Selection de la seconde feuille et insertion de la ligne à la ligne 47
'coloration rouge pour voir si le boulot est bien fait

Sheets("Feuil2").Select
    Rows("13:13").Select
    Selection.Insert Shift:=xlDown
        With Selection.Interior
            .ColorIndex = 3
            .Pattern = xlSolid
        End With
  
'Selection de la première feuille de données
'et de la 3eme ligne qui m'intéresse
'decoupe de cette ligne
   
Sheets("Feuil1").Select
    Rows("4:4").Select
    Selection.Cut

'Selection de la seconde feuille et insertion de la ligne à la ligne 62
'coloration rouge pour voir si le boulot est bien fait

Sheets("Feuil2").Select
    Rows("17:17").Select
    Selection.Insert Shift:=xlDown
    With Selection.Interior
        .ColorIndex = 3
        .Pattern = xlSolid
    End With
    Sheets("resultat").Select
    Range("B20").Select
End Sub

C'est exactement ce que je veux en résultat, mais le processus est totalement différent car je ne sais pas combien de fois j'aurais le même identifiant dans la feuille 1. Je ne connais pas non plus forcement les numéros de lignes où je dois insérer mes données.

Dans un premier temps, je voudrais pouvoir adapter ma macro pour que l'insertion des données se fasse automatiquement à la fin des "1" ou des "2" et non pas en ligne X. comment remplacer 'Rows("17:17").Select'
par 'Rows("a la fin des '1'").Select'

Je vous remercie d'avoir pris le temps de lire ce post et de m'aider si vous le souhaitez.

à très bientôt,

cordialement.
 

Pièces jointes

  • copy_ligne_reg_ville.xls
    35.5 KB · Affichages: 53

nypon

XLDnaute Nouveau
Re : Decoupe ligne en fonction de sa valeur dans un champs et insertion

Excellent,

Gilbert_RGI

Merci infiniment, ça fonctionne.

Je n'ai pas encore essayé avec d'autres données, mais il me semble que le code s'adapte parfaitement quelque soit le nombre de lignes !!!

Trop fort.

Merci encore.
 

Discussions similaires

Statistiques des forums

Discussions
312 194
Messages
2 086 066
Membres
103 110
dernier inscrit
Privé