VBA - Identifier colonne par contenu de la première cellule

Bonjour à tous !

Je cherche aujourd'hui en VBA à copier coller une plage de cellules (plage se réduisant à plusieurs cellules d'une même colonne, type: H4:H8) d'un fichier à un autre, ce que j'arrive à faire. La difficulté est que j'aimerais identifier cette plage, autrement qu'en dur:

j'aimerais l'identifier en désignant le contenu de la première cellule de la colonne, dans laquelle cette plage se trouve. Par exemple, j'ai la colonne H dont la cellule 2 contient "colonne cible". J'aimerais aller copier les cellules H4:H8 mais sans passer par la dénomination en dur de la colonne"H" mais en écrivant des lignes de codes disant: "je vais copier les cellules de la ligne 4 à la ligne 8 qui se trouvent dans la colonne contenant 'colonne cible' dans sa deuxième cellule". Cela me permettrait de faire fonctionner ma macro même s'il y a ajout de colonne dans le fichier cible.

Je veux donc remplacer ou améliorer cette partie de mon code:

                
               If Left(Fichier.Name, 11) = "SIMULATION_" Then

                Set WB_TargetFichier = Workbooks.Open(ch & "\" & Fichier.Name)
                Set TargetSheet = WB_TargetFichier.Sheets("SIMULATION")

                    TargetSheet.Range("F6:G13").Select
                    Selection.Copy
                    MainSheet.Range("D" & i).PasteSpecial Paste:=xlPasteValues
                    MainSheet.Range("D" & i).PasteSpecial Paste:=xlPasteFormats
                    Application.CutCopyMode = False
                    BoucleFichiers = BoucleFichiers + 1

                    WB_TargetFichier.Close savechanges:=False

                End If

Quelqu'un pourrait-il m'aider sur le problème ?

Merci à vous !

SkillzZ

Bonjour SkillzZ, bonjour le forum,

Peut-être comme ça :

Dim R As Range
Dim COL As Byte

If Left(Fichier.Name, 11) = "SIMULATION_" Then
    Set WB_TargetFichier = Workbooks.Open(ch & "\" & Fichier.Name)
    Set TargetSheet = WB_TargetFichier.Sheets("SIMULATION")
    Set R = TargetSheet.Rows(2).Find("colonne cible", , xlValues, xlWhole)
    If Not R Is Nothing Then COL = R.Column
    TargetSheet.Range(TargetSheet.Cells(6, COL), TargetSheet.Cells(13, COL + 1)).Copy
    MainSheet.Range("D" & i).PasteSpecial Paste:=xlPasteValues
    MainSheet.Range("D" & i).PasteSpecial Paste:=xlPasteFormats
    Application.CutCopyMode = False
    BoucleFichiers = BoucleFichiers + 1
    WB_TargetFichier.Close savechanges:=False
End If

Salut Thautème, merci pour ta réponse rapide ! Je teste ça, (ce soir j'espère) et je reviens vers toi si jamais j'ai un souci ! Merci beaucoup, bonne soirée !

SkillzZ

Bonjour à tous, Bonjour ThauThème,

la solution que tu m'as proposée ThauThème répond parfaitement à mes besoins ! Je te remercie beaucoup, d'autant qu'elle va m'être utile sur plusieurs de mes macros! Merci beaucoup et bonne journée !

SkillzZ

Re,

Bonne journée à toi aussi...

Rechercher des sujets similaires à "vba identifier colonne contenu premiere"